Einzelnen Beitrag anzeigen

alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#12

Re: dbgrid aktuelle Zeile im dbGrind färben

  Alt 30. Mär 2009, 18: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
Miniaturansicht angehängter Grafiken
mydbgrid_168.gif  
Alexander
  Mit Zitat antworten Zitat