Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi - StringGrid-Zelle färben (https://www.delphipraxis.net/195092-delphi-stringgrid-zelle-faerben.html)

jsphde 31. Jan 2018 17:11

Delphi-Version: 7

Delphi - StringGrid-Zelle färben
 
Guten Abend allerseits,

ich habe zwar zu diesem Thema viele Beiträge im Internet gelesen, jedoch noch nichts eindeutiges gefunden.

Meine Idee/Vorhaben:
Eine Zelle eines StringGrids färben (Farben sind in einem Array gespeichert), wenn man auf die jeweilige Zelle klickt.
Mir ist bekannt, dass man dafür das OnDrawCell-Event benutzt. Jedoch wird das Event anscheinend beim Öffnen/Erstellen des
Formulars aufgerufen.

Ich habe an eine Prozedur gedacht, wo man die Zeile, Spalte und die Farbe angeben muss. Jedoch habe ich keinen festen Ansatz,
um dies zu realisieren :(

Vielleicht hat jemand einen Ansatz für mich.

MfG

Neutral General 31. Jan 2018 17:24

AW: Delphi - StringGrid-Zelle färben
 
Das Event wird beim Neuzeichnen des Stringgrids aufgerufen. D.h. wenn du mit einem anderen Fenster über das Stringgrid fährst oder sich am Stringgrid etwas ändert usw. ODER wenn du manuell Stringgrid.Repaint bzw. Stringgrid.Invalidate aufrufst.

hoika 31. Jan 2018 17:33

AW: Delphi - StringGrid-Zelle färben
 
Hallo,
du kannst das OnDrawCell manuell anwerfen im OnClick durch

Delphi-Quellcode:
Grid.Invalidate;
*
Besser wäre InvalidateRect, weil dann nur eine bestimmte Zelle aktualisiert wird,
aber probier erst mal Invalidate.

jsphde 31. Jan 2018 18:59

AW: Delphi - StringGrid-Zelle färben
 
Vielen Dank für eure Antworten.
Aber leider wird mir daraus nicht wirklich ersichtlich, wie ich es am besten anstellen kann, nur eine einzige Zelle bei einem Klick zu färben.

MfG

Delphi.Narium 31. Jan 2018 19:15

AW: Delphi - StringGrid-Zelle färben
 
Das StringGrid hat das Ereignis OnSelectCell, in dem kann man dann der Zelle 'ne andere Farbe geben.

Delphi-Quellcode:
StringGrid1.ColorCell[Col,Row] := clRed;


Oder im Ereignis OnDrawCell könnte man sowas machen:
Delphi-Quellcode:
if StringGrid1.Cells[Col,Row] = '1234' then begin
  StringGrid1.ColorCell[Col,Row] := clRed;
end else begin
  StringGrid1.ColorCell[Col,Row] := clGreen;
end;

jsphde 31. Jan 2018 20:06

AW: Delphi - StringGrid-Zelle färben
 
Vielen Dank!


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