Entwickler-Ecke
Datenbanken - Datensatznummer feststellen
uli - Do 26.09.02 10:22
Titel: Datensatznummer feststellen
Hallo Leute
Ist es möglich im DrawColumnCell-Ereignis vom DBGrid festzustellen, welcher Datensatz (Datensatznummer) gerade in's Grid geschrieben wird?
Hintergrund meiner Frage ist, ich möchte jeden zweiten Datensatz farbig hinterlegen. Ich müsste also abfragen, ob die aktuelle Datensatznummer durch 2 teilbar ist und dann Brush.Color auf eine Farbe setzen.
Mit der Abfrage über Tabelle.RecNo hat es nicht so richtig funktioniert.
Hat jemand vielleicht eine Idee?
Gruß Uli
Lemmy - Do 26.09.02 12:09
Hi,
hier der komplette Code:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TfrmAdresse.DBGridKundeDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var dbGrd:TDBGrid; begin dbGrd:=TDBGrid(Sender); if gdSelected in State then begin dbGrd.Canvas.Brush.Color := $00DDDDFF; dbGrd.Canvas.Font.Color := clBlack; end {need that highlight for 'focus'} else if (DMAdresse.DSKundeGrid.DataSet.RecNo mod 2) = 0 then begin dbGrd.Canvas.Font.Color := clBlack; dbGrd.Canvas.Brush.Color := $00FFBBBB //clSilver; end; dbGrd.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; |
Das hier:
if (DMAdresse.DSKundeGrid.DataSet.RecNo mod 2) = 0 then
suchst Du...
Grüße
Lemmy
uli - Do 26.09.02 13:12
So funktiniert es.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure THauptForm.DBGrid5DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if KADaoTable14.RecNo mod 2 =0 then DBGrid5.Canvas.Brush.Color:=12648324 else DBGrid5.Canvas.Brush.Color:=clWhite; DBGrid5.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; |
Es geht wenn ich die RecNo von der Tabelle abfrage.
Mein Fehler war, ich habe statt DBGrid5 immer DBGrid1 geschrieben, da kann ich lange warten, dass was passiert.
Trotzdem danke für die schnelle Antwort.
Gruß Uli
jasocul - Fr 11.10.02 15:25
Titel: Vorsicht bei SQL-Abfragen
Grundsätzlich gibt es bei den Lösungen mit RecNo nichts einzuwenden. Wenn Du allerdings Deine Datenbankabfragen mit TQuery (also SQL) durchführst, kann es passieren, dass die aktuelle Datensatznummer immer "0" ist.
Das hängt mit der Ergebnismenge bei SQL zusammen, die oft nur einen Teil der Datensätze holt und dann nicht mehr die Datensatznummern ermitteln kann.
Falls Du also Deine Idee in einer neuen DBGrid-Komponente einsetzen willst, wird es nicht in jedem Fall funktionieren.
Gruß Peter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!