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/)
-   -   [FMX] Stringgrid / Grid Zelle Färben (https://www.delphipraxis.net/190672-%5Bfmx%5D-stringgrid-grid-zelle-faerben.html)

Devil1925 25. Okt 2016 08:00

[FMX] Stringgrid / Grid Zelle Färben
 
Hallo,
Ich weiss, dass es hier dieses Thema schon zu hunderten gibt, aber entweder war ich zu blöd das richtige zu finden oder das ist wirklich alles nur für VCL, was mir nicht weiter hilft.

Ich muss in einer Spalte die Zellen je nach Inhalt einfärben (so a la Ampel in grün, gelb oder rot).
Soweit so gut. Um mit der Zelle zu Interagieren gehe ich über das onDrawCell - Event. An den Inhalt komme ich ja nun über Value ran. Kein Problem. Jetzt habe ich nur das Problem, das ich die Zelle irgendwie einfärben muss. Da habe ich schon eine Ganze menge Probiert, es hat bisher aber noch nichts ansatzweise funktioniert!

Folgendes Habe ich probiert:

Delphi-Quellcode:
procedure TfrmProjekt.GRD_ProjektDrawColumnCell(Sender: TObject;
  const Canvas: TCanvas; const Column: TColumn; const [Ref] Bounds: TRectF;
  const Row: Integer; const [Ref] Value: TValue; const State: TGridDrawStates);
begin
        Canvas.Fill.Color := TAlphaColorRec.Yellow;
End;
Delphi-Quellcode:
procedure TfrmProjekt.GRD_ProjektDrawColumnCell(Sender: TObject;
  const Canvas: TCanvas; const Column: TColumn; const [Ref] Bounds: TRectF;
  const Row: Integer; const [Ref] Value: TValue; const State: TGridDrawStates);
begin
        GRD_Projekt.Canvas.Fill.Color := TAlphaColorRec.Yellow;
        GRD_Projekt.Canvas.FillRect(Bounds);
End;
Ich habe auch einige Lösungen gefunden, welche auf die Eigenschaft "CellControlByRow" zugreifen, welche es aber in FMX scheinbar nicht gibt!

Hat hier jemand eine Idee?

Whookie 25. Okt 2016 08:22

AW: [FMX] Stringgrid / Grid Zelle Färben
 
Bin zwar kein FMX-Spezialist hab das aber mal kurz probiert:

Delphi-Quellcode:
procedure TForm2.StringGrid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer;
  const Value: TValue; const State: TGridDrawStates);
begin
  if (Row=2) And (Column=StringColumn1) then
  begin
    Canvas.Fill.Color := TAlphaColorRec.Yellow;
    Canvas.FillRect(Bounds, 0, 0, [], 100, Canvas.Fill);
  end;

end;
und scheint zu klappen...

Devil1925 25. Okt 2016 08:37

AW: [FMX] Stringgrid / Grid Zelle Färben
 
Danke, war dementsprechend wohl einfach zu blöd Canvas.FillRect richtig zu verwenden .-.

Vielen Dank, das Funktioniert genau wie gehofft.

Rollo62 26. Okt 2016 06:43

AW: [FMX] Stringgrid / Grid Zelle Färben
 
Verstehe zwar nicht was du vorhast, aber warum nimmst du nicht die Styles-System dafür ?
Das ist genau für solche Dinge gedacht, und man kann einiges anpassen.

Rollo

Devil1925 26. Okt 2016 15:03

AW: [FMX] Stringgrid / Grid Zelle Färben
 
Es geht darum, die Farbe der Zelle je nach inhalt zu ändern.
Es ist eine Tabelle, in welcher eine Spalte eine "Ampel" darstellt. Hier wird die Zelle z.B. grün gefärbt, wenn der Wert unter 50 % ist, zwischen 50 % und 100 % wird sie Gelb dargestellt und bei über 100 % dann Rot.

Wenn dass auch mit dem Styles - System geht, wäre das natürlich auch super, müsste man mir nur verraten, wie das Geht.

Rollo62 26. Okt 2016 17:45

AW: [FMX] Stringgrid / Grid Zelle Färben
 
Also du nutzt FMX, richtig ?

Da würde ich dann vielleicht etwas aus geometrischen Shapes zusammenbauen, wie TRectangle, TPath, etc.
Die kann man wunderbar grafisch kombinieren, und auch die Farben ändern.

Mit Styles geht sowas natürlich auch, da geht es aber gleich um die ganze Anwendung.

Rollo


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