Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Einfärben des Grids (https://www.delphipraxis.net/163551-einfaerben-des-grids.html)

Flash68 4. Okt 2011 08:49

Einfärben des Grids
 
Hallo zusammen,

ich versuche mit folgender Procedure mein Grid abwechselnd einzufärben:

Delphi-Quellcode:
procedure TFRM_Main.DBG_RechnerDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var
  test1: real;
  RowNo: Integer;
  farbe: Integer;
begin
  with (Sender as TDBGrid) do
  begin
    if (gdSelected in State) then
    begin
      Canvas.Brush.Color := clskyblue;
    end
    else
    begin
      rowno := DM_Rechner.ADO_DS_Rechner.RecNo;
      test1 := (Rowno / 2) - trunc(Rowno / 2);
      If test1 = 0 then
        begin
          farbe := Clwhite;
        end
        else
        Begin
          farbe := clsilver;
        end;
      canvas.brush.Color := farbe;
      canvas.Font.Color := ClBlack;
    end;
    canvas.FillRect(rect);
    canvas.TextOut(Rect.Left + 2, rect.Top + 1, column.Field.AsString);
 end
end;
bei meinen anderen Projekten funkioniert das auch, aber bei dem aktuellen Projekt ist alles clsilver und nicht abwechselnd silber und weiss.

Kann mir jemand helfen woran das liegt und wie ich das ändere?

Gruß

Flash

DeddyH 4. Okt 2011 09:16

AW: Einfärben des Grids
 
Benutze doch bitte Delphi-Tags, dann ist der Code auch besser zu lesen. Und Deine Ermittlung gerader/ungerader Zeilen erscheint mir doch sehr kompliziert, wieso nicht einfach Odd() oder mod 2 benutzen. Durch den Vergleich einer Fließkommazahl mit 0 kann es sein, dass das so nicht eintritt, da etwas wie 0,00000001 herauskommt.

Flash68 4. Okt 2011 10:04

AW: Einfärben des Grids
 
Wie benutze ich die Tags?

Wie gesagt bei meinen anderen Projekten funktioniert das ohne Probleme, habe den Code selbst im Internet gefunden.

DeddyH 4. Okt 2011 10:12

AW: Einfärben des Grids
 
Entweder über die "Helm"-Schaltfläche im Beitragseditor oder händisch mit [ delphi]Code[ /delphi] (ohne Leerzeichen). Und wie gesagt, das geht auch anders:
Delphi-Quellcode:
if Odd(DM_Rechner.ADO_DS_Rechner.RecNo) then
  farbe := clSilver
else
  farbe := clWhite;

//oder auch
if (DM_Rechner.ADO_DS_Rechner.RecNo and 1) = 0 then
  farbe := clWhite
else
  farbe := clSilver;

Flash68 4. Okt 2011 10:23

AW: Einfärben des Grids
 
OK hab es oben mal geändert, danke für den Tip.

Wegen des codes meinst du so:

Delphi-Quellcode:
procedure TFRM_Main.DBG_RechnerDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var
  farbe: Integer;
begin
  with (Sender as TDBGrid) do
  begin
    if (gdSelected in State) then
    begin
      Canvas.Brush.Color := clskyblue;
    end
    else
    begin
      if Odd(DM_Rechner.ADO_DS_Rechner.RecNo) then
        farbe := clSilver
      else
        farbe := clWhite;
      {end; ist zu viel}
      canvas.brush.Color := farbe;
      canvas.Font.Color := ClBlack;
    end;
    canvas.FillRect(rect);
    canvas.TextOut(Rect.Left + 2, rect.Top + 1, column.Field.AsString);
 end
end;

DeddyH 4. Okt 2011 10:26

AW: Einfärben des Grids
 
Das sollte so richtig sein, zumindest ist mir nichts Negatives aufgefallen.

Flash68 4. Okt 2011 10:30

AW: Einfärben des Grids
 
Es war ein end zuviel, aber das hat leider nichts geändert, es wird noch immer alles in silber angezeigt(außer dem Cursor der ist blau).

DeddyH 4. Okt 2011 10:36

AW: Einfärben des Grids
 
Hast Du DefaultDrawing auf false gesetzt?

Flash68 4. Okt 2011 10:41

AW: Einfärben des Grids
 
Ne das steht auf True so wie bei meinen anderen Projekten auch.

DeddyH 4. Okt 2011 10:43

AW: Einfärben des Grids
 
Komisch. Wie ist es so?
Delphi-Quellcode:
procedure TFRM_Main.DBG_RechnerDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var
  farbe: Integer;
begin
  with (Sender as TDBGrid) do
  begin
    if (gdSelected in State) then
    begin
      farbe := clskyblue;
    end
    else
    begin
      if Odd(DM_Rechner.ADO_DS_Rechner.RecNo) then
        farbe := clSilver
      else
        farbe := clWhite;
      end;
    end;
    canvas.brush.Color := farbe;
    DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
  end;
end;
[edit] Oder mal ohne with:
Delphi-Quellcode:
procedure TFRM_Main.DBG_RechnerDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  grid: TDBGrid;
  farbe: TColor;
begin
  grid := Sender as TDBGrid;
  if (gdSelected in State) then
  begin
    farbe := clskyblue;
  end
  else
  begin
    if Odd(DM_Rechner.ADO_DS_Rechner.RecNo) then
      farbe := clSilver
    else
      farbe := clWhite;
    end;
  end;
  grid.canvas.brush.Color := farbe;
  grid.DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
end;
[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:13 Uhr.
Seite 1 von 4  1 23     Letzte »    

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