![]() |
Re: dbgrid aktuelle Zeile im dbGrind färben
So, hab eine Lösung gefunden. Wenn auch nicht ganz sauber:
1. hab mir ne globale Variable erstellet: current_row: integer; 2. Diese setze ich beim "DataSource1DataChange" auf die ausgewählte Zeile:
Delphi-Quellcode:
3. Und zur vollständigkeit noch meine DBGrid1DrawColumnCell-Funktion:
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin current_row:= Table1.RecNo; DBGrid1.Repaint; // wird benötigt wenn das Mausrad benutzt wird end;
Delphi-Quellcode:
So, tolles Ergebnis für einen Nachmitag Arbeit :glaskugel: procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if Table1.RecNo=current_row then DBGrid1.Canvas.Brush.Color := clred else DBGrid1.Canvas.Brush.Color := clWhite; DBGrid1.DefaultDrawColumnCell(rect,datacol,column,state); end; Über eine Sauber kurze Lösung wäre ich echt noch dankbar, oder teilt mal mit, wenn ihr das selbe problem habt. Und danke an alle! |
Re: dbgrid aktuelle Zeile im dbGrind färben
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
Delphi-Quellcode:
sieht dann so aus wie im Anhang.
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; alex |
Re: dbgrid aktuelle Zeile im dbGrind färben
Liste der Anhänge anzeigen (Anzahl: 1)
Hier nochmal das ganze Project (für D7) mit Scrollrad.
alex |
Re: dbgrid aktuelle Zeile im dbGrind färben
Vielen Dank, bin mit meiner Lösung doch zu frieden. Musste halt ne Nacht drüber schlafen.
Find es halt schade, das beim dbgrid so ohnen weiteres nicht möglich die aktuelle Zeile hervorzuheben und ich denke, dass ich nicht der einzige mit diesem wunsch bin! Dank noch mal an alle. :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz