Добрый день, уважаемые разработчики!
Подскажите пожалуйста, какой метод нужно перегрузить и что дописать, чтобы у меня прорисовывалась моя окантовка для строк в таблице для всех эксемпляров DBGridEh в программе?
На текущий момент имею
Код:
type
TCustomDBGridEh = class(TDBGridEh)
public
procedure DefaultDrawColumnCell(const Rect: TRect; DataCol: Integer;
Column: TColumnEh; State: TGridDrawState); reintroduce;
procedure DrawColumnCell(const Rect: TRect; DataCol: Integer;
Column: TColumnEh; State: TGridDrawState); reintroduce;
end;
TDBGridEh = class(TCustomDBGridEh);
TForm1 = class(TForm)
DBGrdEh1: TDBGridEh;
ds1: TDataSource;
MemTblEh1: TMemTableEh;
FDQuery1: TFDQuery;
dtstdrvrh1: TDataSetDriverEh;
con1: TFDConnection;
fdphysfbdrvrlnk1: TFDPhysFBDriverLink;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TCustomDBGridEh.DefaultDrawColumnCell(const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
begin
inherited;
with Canvas do
if gdSelected in State then
begin
// окантовка
Pen.Color:= $000080FF;
MoveTo(Rect.Left, Rect.Top);
LineTo(Rect.Right, Rect.Top);
MoveTo(Rect.Left, Rect.Bottom - 1);
LineTo(Rect.Right, Rect.Bottom - 1);
if Column.Index = 0 then
begin
MoveTo(Rect.Left, Rect.Bottom - 1);
LineTo(Rect.Left, Rect.Top);
end;
if Column.Index = Columns.Count - 1 then
begin
MoveTo(Rect.Right, Rect.Bottom - 1);
LineTo(Rect.Right, Rect.Top);
end;
end;
end;
procedure TCustomDBGridEh.DrawColumnCell(const Rect: TRect; DataCol: Integer;
Column: TColumnEh; State: TGridDrawState);
begin
DefaultDrawColumnCell(Rect, DataCol, Column, State);
inherited;
end;
Прорисовка будет работать, если я добавлю событие к таблице OnDrawColumnCell и в нем DefaultDrawColumnCell(Rect, DataCol, Column, State), но как быть, если в программе много таких таблиц? Не хочется каждой добавлять одно и то же.. Спасибо!