Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   DrawGrid Zellen abwechselnd mit Farbe füllen (https://www.delphipraxis.net/211024-drawgrid-zellen-abwechselnd-mit-farbe-fuellen.html)

TLAng 16. Jul 2022 08:51

Delphi-Version: 10.4 Sydney

DrawGrid Zellen abwechselnd mit Farbe füllen
 
Hallo,

Ich bin am verzweifeln, bekomme es nicht hin.
Ich möchte ein DrawGrid diagonal mit einer Farbe füllen.
Bei mir werden immer die Spalten unterschiedlich gefüllt!

Kann mir einer einen Tipp geben? :)

himitsu 16. Jul 2022 09:06

AW: DrawGrid Zellen abwechselnd mit Farbe füllen
 
Nicht nur die Zeilen (ACol), sondern auch die Spalten (ARow) prüfen. :zwinker:


Niemand weiß wie dein Code aussieht. Wie soll da jemand wissen, was du falsch machst?



Tipp/Vermutung: Wenn DefaultDrawing False ist, dann mußt du auch dann die "andere" Farbe zurücksetzen, selbst wenn es nicht die gewünschte Zelle ist.
Vorher wird da ja der Standardhintergrund nicht gemalt (das
Delphi-Quellcode:
DrawGrid1.Canvas.Brush.Color := DrawGrid1.Color;
vom DefaultDraw fehlt).

TLAng 16. Jul 2022 12:59

AW: DrawGrid Zellen abwechselnd mit Farbe füllen
 
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if (Sender as TStringGrid).Cells[ACol, ARow] <> '' then begin
    (Sender as TStringGrid).Canvas.Brush.Color := clRed;
    (Sender as TStringGrid).Canvas.FillRect(Rect);
  end;
end;
Hier mein Code.

Andreas13 16. Jul 2022 13:05

AW: DrawGrid Zellen abwechselnd mit Farbe füllen
 
Hi TLAng,
Du kannst Deinen Quellcode etwas übersichtlicher formatieren, wenn Du das Delphi-Symbol (= gelber Helm mit dem roten Kamm) vom Menü direkt über dem Editorfenster benutzt. Alternaiv dazu kannst Du den Quellcode zwischen [DELPHI] und [/DELPHI] setzten. Das geht übrigens auch nachträglich, wenn Du Deinen letzten Beitrag editierst. :-D
Gruß, Andreas

peterbelow 16. Jul 2022 13:46

AW: DrawGrid Zellen abwechselnd mit Farbe füllen
 
Zitat:

Zitat von TLAng (Beitrag 1508830)
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if (Sender as TStringGrid).Cells[ACol, ARow] <> '' then begin
    (Sender as TStringGrid).Canvas.Brush.Color := clRed;
    (Sender as TStringGrid).Canvas.FillRect(Rect);
  end;
end;
Hier mein Code.

Malt alle Rosen rot, jedenfalls wenn sie leer sind:-D

Was willst Du denn wirklich erreichen?

TLAng 16. Jul 2022 14:25

AW: DrawGrid Zellen abwechselnd mit Farbe füllen
 
Ich möchte abwechselnd blau und rote Zellen haben.
In einer Reihe sind 8 Zellen und ich habe 8 Reihen.
In der nächsten Reihe versetzt.

TurboMagic 16. Jul 2022 15:32

AW: DrawGrid Zellen abwechselnd mit Farbe füllen
 
Das ist machbar.
Man kann es mit If's zusammenbauen.
Mittels Odd(ACol) bekommst du zum Beispiel heraus ob du in einer "ungeraden" Spalte bis.

Dann könnte es z. B. so aussehen:

Delphi-Quellcode:
var
  CellColor: TColor;
begin
  if Odd(ACol) then
  begin
    if Odd(ARow) then
      CellColor := clRed
    else
      CellColor := clBlue;
  end
  else
  begin
    if Odd(ARow) then
      CellColor := clBlue
    else
      CellColor := clRed;
  end;

  // und hier müsste dein Einfärben in...
end;

himitsu 16. Jul 2022 19:58

AW: DrawGrid Zellen abwechselnd mit Farbe füllen
 
Wieso dein Code eventuell nicht das macht, was er soll?

Klar, er macht ja auch was Anderes, als du gesagt hast.
-> Färben, wenn etwas in der Zelle, wo hier niemand weiß, was deren Inhalt ist.


@TurboMagic, das geht auch mathematisch :)
Delphi-Quellcode:
if Odd(ARow) xor {not} Odd(ACol) then // NOT oder das Color:=... umdrehen, falls andersrum
  DrawGrid1.Canvas.Brush.Color := clBlue
else
  DrawGrid1.Canvas.Brush.Color := clRed;
DrawGrid1.Canvas.FillRect(Rect);

TurboMagic 17. Jul 2022 13:09

AW: DrawGrid Zellen abwechselnd mit Farbe füllen
 
Ja, ich dachte mir schon, dass es vermutlich noch einen einfacheren Weg gibt. Ich wollte aber
zumindest einen möglichen Weg aufzeigen. Jetzt kann er sich's raussuchen.

TLAng 17. Jul 2022 19:28

AW: DrawGrid Zellen abwechselnd mit Farbe füllen
 
Hi himitsu,

herzlichen Dank für deine Hilfe. Das habe ich gesucht.:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr.
Seite 1 von 2  1 2      

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