Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Warum wird die erste Spalte nicht eingefärbt ? (https://www.delphipraxis.net/6566-warum-wird-die-erste-spalte-nicht-eingefaerbt.html)

JoelH 15. Jul 2003 14:13


Warum wird die erste Spalte nicht eingefärbt ?
 
ich hab diesen Code geschrieben
Delphi-Quellcode:
procedure Gridcolor(Sender: TObject;
  ACol, ARow: Integer; Rect: TRect; State: TGridDrawState; geldrows : Array of Integer);
var check : boolean;
    i : integer;
begin
  with Sender as TStringgrid do
  begin
    WITH Canvas DO
    BEGIN
      check := false;
      for i := 0 to length(geldrows)-1 do
      begin
        if ACol = geldrows[i] Then check := true;
      end;
      if (ARow > 0) then
      begin
        if (check) then
          Brush.Color := schriftfarbe
        else
          Brush.Color := gridhintergrund;
      end;
      //if (row = ARow) then Brush.Color := schriftfarbe XOR 65655;
      if (State = [gdSelected]) then Brush.Color := schriftfarbe XOR 65655;
      FillRect(Rect);
      TextOut(Rect.Left, Rect.Top, Cells[ACol, ARow]);
    END;
  end;
end;
wichtig sind hier folgende Zeilen
Delphi-Quellcode:
      //if (row = ARow) then Brush.Color := schriftfarbe XOR 65655;
      if (State = [gdSelected]) then Brush.Color := schriftfarbe XOR 65655;
sie sollten beide das selbe machen, die Zeile die selected ist anders einfärben. Tun sie auch, zumindestens fast. Die auskommentierte Zeile tut wie befohlen und markierte alle selektierte Zellen (rowSelect ist an) aber die zweite lässt die erste Spalte unengefärbt :(

Warum nur ?

Hansa 15. Jul 2003 14:16

Re: Warum wird die erste Spalte nicht eingefärbt ?
 
Delphi-Quellcode:
      if (ARow > 0) then
Die Spalten werden ab 0 gezählt, so auf die Schnelle, ohne Garantie. :spin:

JoelH 15. Jul 2003 14:27

Re: Warum wird die erste Spalte nicht eingefärbt ?
 
@Hansa
es geht um die erste Spalte, nicht die erste Reihe ;)

Bei einem DBGrid ist es leider das selbe Phänomen, leider kann ich hier nicht auch die row zurückgreifen bzw. weis leider nicht wie ich an diese ran komme da ja die Parameterübergabe wie folgt ist
Delphi-Quellcode:
procedure DBGridcolor(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState;geldrows : Array of Integer);
Da hab ich ja leider nicht row und ARow :( Wie heissen die bein einem DBGrid ?

Sharky 15. Jul 2003 14:43

Re: Warum wird die erste Spalte nicht eingefärbt ?
 
Hai JoelH,

schaue dir doch mal mein Beispiel in der Code-Library an. Eventuell hilft Dir das ja weiter.

JoelH 15. Jul 2003 15:08

hmm,
 
joo,
muss heissen
Delphi-Quellcode:
if (gdSelected in State) then
und nicht
Delphi-Quellcode:
if (State = [gdSelected]) then
sowas aber auch.

Sharky 15. Jul 2003 15:15

Re: hmm,
 
Zitat:

Zitat von JoelH
joo,
muss heissen
....sowas aber auch.

So geht es einmal manchmal http://www.sharkys-home.de/smiles/zaehneputzen.gif

Nachtrag zu deiner Frage bzgl. Row:

Da ein DBGrid ja mit einem Query oder vergleichbar verbunden ist müsstest Du diese Info über Query1.RecNo herausbekommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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