На форме есть несколько TStringGrid. При переходе от одного к другому подсветка выделения в предыдущем исчезает. Нужно, чтобы текущие выбранные строки во всех TStringGrid подсвечивались одновременно.
Как это можно сделать?
Модератор: Модераторы
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
Grids, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
procedure StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
procedure StringGrid1SelectCell(Sender: TObject; aCol, aRow: Integer;
var CanSelect: Boolean);
procedure StringGrid2DrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
procedure StringGrid2SelectCell(Sender: TObject; aCol, aRow: Integer;
var CanSelect: Boolean);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
a,b:Integer;
implementation
{ TForm1 }
procedure TForm1.StringGrid1SelectCell(Sender: TObject; aCol, aRow: Integer;
var CanSelect: Boolean);
begin
a:=aRow; //запоминаем выделенную строку
end;
procedure TForm1.StringGrid2DrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
begin
if StringGrid2.Focused then
exit;
if (arow=b) and (Acol<>0) then
begin
StringGrid2.canvas.Brush.Color:=clBlue;
StringGrid2.canvas.fillRect(aRect);
end;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
begin
if StringGrid1.Focused then
exit;
if (arow=a) and (Acol<>0) then
begin
StringGrid1.canvas.Brush.Color:=clBlue;
StringGrid1.canvas.fillRect(aRect);
end;
end;
procedure TForm1.StringGrid2SelectCell(Sender: TObject; aCol, aRow: Integer;
var CanSelect: Boolean);
begin
b:=aRow; //запоминаем выделенную строку
end;
initialization
{$I unit1.lrs}
end.
Сейчас этот форум просматривают: MailRu[bot] и гости: 55