AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

DrawGrid Zellen abwechselnd mit Farbe füllen

Ein Thema von TLAng · begonnen am 16. Jul 2022 · letzter Beitrag vom 17. Jul 2022
Antwort Antwort
Seite 1 von 2  1 2   
TLAng

Registriert seit: 15. Jul 2022
9 Beiträge
 
#1

DrawGrid Zellen abwechselnd mit Farbe füllen

  Alt 16. Jul 2022, 09:51
Delphi-Version: 10.4 Sydney
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.146 Beiträge
 
Delphi 12 Athens
 
#2

AW: DrawGrid Zellen abwechselnd mit Farbe füllen

  Alt 16. Jul 2022, 10:06
Nicht nur die Zeilen (ACol), sondern auch die Spalten (ARow) prüfen.


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 DrawGrid1.Canvas.Brush.Color := DrawGrid1.Color; vom DefaultDraw fehlt).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

Geändert von himitsu (16. Jul 2022 um 10:34 Uhr)
  Mit Zitat antworten Zitat
TLAng

Registriert seit: 15. Jul 2022
9 Beiträge
 
#3

AW: DrawGrid Zellen abwechselnd mit Farbe füllen

  Alt 16. Jul 2022, 13:59
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.

Geändert von TBx (16. Jul 2022 um 14:30 Uhr) Grund: Delphi-Tags eingefügt, bitte zukünftig selbst machen. MfG TBx
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#4

AW: DrawGrid Zellen abwechselnd mit Farbe füllen

  Alt 16. Jul 2022, 14:05
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.
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
703 Beiträge
 
Delphi 12 Athens
 
#5

AW: DrawGrid Zellen abwechselnd mit Farbe füllen

  Alt 16. Jul 2022, 14:46
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

Was willst Du denn wirklich erreichen?
Peter Below
  Mit Zitat antworten Zitat
TLAng

Registriert seit: 15. Jul 2022
9 Beiträge
 
#6

AW: DrawGrid Zellen abwechselnd mit Farbe füllen

  Alt 16. Jul 2022, 15:25
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.

Geändert von TLAng (16. Jul 2022 um 15:56 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.959 Beiträge
 
Delphi 12 Athens
 
#7

AW: DrawGrid Zellen abwechselnd mit Farbe füllen

  Alt 16. Jul 2022, 16:32
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.146 Beiträge
 
Delphi 12 Athens
 
#8

AW: DrawGrid Zellen abwechselnd mit Farbe füllen

  Alt 16. Jul 2022, 20:58
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);
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

Geändert von himitsu (17. Jul 2022 um 14:11 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.959 Beiträge
 
Delphi 12 Athens
 
#9

AW: DrawGrid Zellen abwechselnd mit Farbe füllen

  Alt 17. Jul 2022, 14:09
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.
  Mit Zitat antworten Zitat
TLAng

Registriert seit: 15. Jul 2022
9 Beiträge
 
#10

AW: DrawGrid Zellen abwechselnd mit Farbe füllen

  Alt 17. Jul 2022, 20:28
Hi himitsu,

herzlichen Dank für deine Hilfe. Das habe ich gesucht.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 Uhr.
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