Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism dbgrid aktuelle Zeile im dbGrind färben (https://www.delphipraxis.net/131762-dbgrid-aktuelle-zeile-im-dbgrind-faerben.html)

Andreas Nord 30. Mär 2009 16:31

Datenbank: bde • Zugriff über: keine ahnung

dbgrid aktuelle Zeile im dbGrind färben
 
Hallo, würde zu gerne die gesamte ausgewählte Zeile in einen DbGrind einfärben.
Bekomme leider nur die aktuelle Zelle gefärbt:

Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin
if (State=[gdSelected,gdFocused])
    then DBGrid1.Canvas.Brush.Color := clred
    else DBGrid1.Canvas.Brush.Color := clWhite;
end;
Hab schon mindestens 3 Stunden gesucht. Wäre sehr dankbar!

DeddyH 30. Mär 2009 16:42

Re: dbgrid aktuelle Zeile im dbGrind färben
 
Und wenn Du unter "Options" RowSelect auf true stellst?

[edit] BDE unter Delphi.NET? Bist Du da sicher? [/edit]

Andreas Nord 30. Mär 2009 16:59

Re: dbgrid aktuelle Zeile im dbGrind färben
 
Klappt leider auch nicht. Möchte auch gerne jede Celle zur laufzeit editieren können. Aber trotzdem Danke.
Ist eine Paradox 7 Tabelle.

DeddyH 30. Mär 2009 17:05

Re: dbgrid aktuelle Zeile im dbGrind färben
 
Dann such doch mal nach Hier im Forum suchenDrawColumnCell, da solltest Du einige Beispiele finden.

shmia 30. Mär 2009 17:10

Re: dbgrid aktuelle Zeile im dbGrind färben
 
Das Problem ist, dass du hier zwei Mengen auf Gleichheit überprüfst.
Nur Zellen, die Selected und Fokusiert werden eingefärbt (nur eine Zelle hat den Fokus)
Delphi-Quellcode:
begin
  if gdSelected in State then  // ***
     DBGrid1.Canvas.Brush.Color := clred
  else
     DBGrid1.Canvas.Brush.Color := clWhite;
end;

DeddyH 30. Mär 2009 17:13

Re: dbgrid aktuelle Zeile im dbGrind färben
 
:wall: das hab ich natürlich geflissentlich übersehen. Vielleicht sollte ich mich mal sinnvollen Dingen wie Fliegenfischen in der Badewanne widmen, so wird das hier eh nichts mehr.

Andreas Nord 30. Mär 2009 17:26

Re: dbgrid aktuelle Zeile im dbGrind färben
 
Sorry, laut Delphi-Hilfe:

gdSelected - Die Zelle ist aktuell ausgewählt

Ich möchte wissen, ob die Zeile und nicht die Zelle ausgewählt ist!

Danke für die Bemühungen.

DeddyH 30. Mär 2009 17:31

Re: dbgrid aktuelle Zeile im dbGrind färben
 
Nochmal: RowSelect auf true stellen und die Abfrage ändern.
Zitat:

Delphi-Quellcode:
if (State=[gdSelected,gdFocused])

Das tritt nämlich nur dann ein, wenn State genau diese beiden Flags enthält. Wenn Dir eins der beiden genügt, müsste das IMHO so lauten:
Delphi-Quellcode:
if (gdSelected in State) or (gdFocused in State)

Andreas Nord 30. Mär 2009 17:39

Re: dbgrid aktuelle Zeile im dbGrind färben
 
Also mit:
Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
  begin
if gdSelected in State
    then DBGrid1.Canvas.Brush.Color := clred
    else DBGrid1.Canvas.Brush.Color := clWhite;
end;
und der Option "RowSelect" erhalte ich genau mein erwünschtes ergebnis.

Nun kann ich aber nicht mehr die einzelnen Zellen editieren :wall:

Andreas Nord 30. Mär 2009 18:20

Re: dbgrid aktuelle Zeile im dbGrind färben
 
Es muss doch irgendwie möglichsein, innerhalb der Funktion "DBGrid1DrawColumnCell" festzustellen welche Zeile bei einer Tabelle ausgewählt ist!?

Mit RecNo geht das leider nicht, da inerhalb von DBGrid1DrawColumnCell dieser von 0 bis an das Tabellenende Hochgezählt wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz