Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
Delphi XE5 Enterprise
|
Re: dbgrid aktuelle Zeile im dbGrind färben
30. Mär 2009, 19:50
Hi,
Delphi-Quellcode:
type
// kleiner Trick um an die aktuelle Row heranzukommen.
TDBGrid = class(DBGrids.TDBGrid)
public
property Row;
end;
TForm1 = class(TForm)
MyDBGrid: TDBGrid;
.....
procedure MyDBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.MyDBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (State * [gdFocused, gdSelected] = []) then
begin
if MyDBGrid.Row = MyDBGrid.MouseCoord(Rect.Left, Rect.Top).Y then
begin
// aktuelle Zeile
MyDBGrid.Canvas.Brush.Color := clAqua;
MyDBGrid.Canvas.Font.Color := clWindowText;
end else
if MyDBGrid.SelectedRows.IndexOf(MyDBGrid.DataSource.DataSet.Bookmark) >= 0 then
begin
// alle selektierten Zeilen
MyDBGrid.Canvas.Brush.Color := clHighlight;
MyDBGrid.Canvas.Font.Color := clWindowText;
end else
begin
// alle anderen Zeilen
if (MyDBGrid.DataSource.DataSet.RecNo mod 2) = 0 then
MyDBGrid.Canvas.Brush.Color := clInfoBk
else
MyDBGrid.Canvas.Brush.Color := clWindow;
MyDBGrid.Canvas.Font.Color := clWindowText;
end;
end;
MyDBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
sieht dann so aus wie im Anhang.
alex
Alexander
|
|
Zitat
|