Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TDBGrid-Zeilen unterschiedlich färben und TTable (https://www.delphipraxis.net/10327-tdbgrid-zeilen-unterschiedlich-faerben-und-ttable.html)

Tyler 16. Okt 2003 11:18


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

Tanadirian 16. Okt 2003 15:09

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

Tyler 17. Okt 2003 08:53

Re: TDBGrid-Zeilen unterschiedlich färben und TTable
 
Leider gibt´s keiner derartige Funktion beim DBGrid, hab ich auch schon geschaut... :cry:

Sharky 17. Okt 2003 08:59

Re: TDBGrid-Zeilen unterschiedlich färben und TTable
 
Zitat:

Zitat von Tyler
Leider gibt´s keiner derartige Funktion beim DBGrid, hab ich auch schon geschaut... :cry:

Hai Tyler,

eventuell kannst Du dir ja eine globale Variable deklarieren.


Delphi-Quellcode:
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;
Ist aber nicht getestet!


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