![]() |
TDBGrid-Zeilen unterschiedlich färben und TTable
Moin zusamm
folgender Code unter GridDrawColumnCell If ((Table.RecNo mod 2) = 0) then begin Grid.Canvas.Brush.Color := clSkyBlue; Grid.DefaultDrawColumnCell(Rect, 0, Column, State); end; sollte ja eigentlich jede 2. Zeile des Grid´s in ein zartes Blau tauchen. Ich hab für meine Table aber 2 Indizes, einmal für ein Textfeld, einmal für ein Zahlenfeld (beide Unique). Setzte ich den Index der Table auf mein Zahlenfeld, woraufhin die Table nach diesem Zahlenfeld der Datenbank sortiert wird, funktioniert die Färbung korrekt (jede 2. Zeile vom Grid) Nehm ich als Index das Textfeld, woraufhin die Table nach dem Textfeld sortiert wird, werden die Felder wild durcheinander blau eingefärbt, aber nicht wie es eigentlich sein sollte, jedes 2. Im Klartext: Die Färbung der Zeilen geht offensichtlich nicht nach der tatsächlichen sichtbaren Position der Zeile im Grid, sondern vielmehr der realen Position in der Datenbank aufgrund des Zahlen-Indizes. Nur zum Verständnis: Will ich eine Aufwärts-Sortierung der Table erreichen, wechsel ich den Index, oder gibt´s da noch andere Möglichkeiten? Denn nur aus dem Grund wechsel ich die Indizes zur RunTime, weil ich ein anderes zu sortierendes Feld auswähle. Wenn das Grid die Daten aus einer TQuery-Komponente anzeigt, funktioniert das ganze übrigens wunderbar, egal nach welchem Datenfeld ich sortiere! Weiß einer Abhilfe oder Rat? mfG |
Re: TDBGrid-Zeilen unterschiedlich färben und TTable
Hallo Tyler,
Du gehst ja auch nach den Records in deiner Tabelle, die haben immer die selbe Reihenfolge. Versuchs doch mal mit DBGrid.row oder ähnlichem. mfg Tanadirian |
Re: TDBGrid-Zeilen unterschiedlich färben und TTable
Leider gibt´s keiner derartige Funktion beim DBGrid, hab ich auch schon geschaut... :cry:
|
Re: TDBGrid-Zeilen unterschiedlich färben und TTable
Zitat:
eventuell kannst Du dir ja eine globale Variable deklarieren.
Delphi-Quellcode:
Ist aber nicht getestet!
var
gerade : Boolean = False; procedure TForm1.GridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin If (gerade) then begin Grid.Canvas.Brush.Color := clSkyBlue; end; Grid.DefaultDrawColumnCell(Rect, 0, Column, State); gerade := Not (gerade); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 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 by Thomas Breitkreuz