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/)
-   -   Delphi FMX StringGrid OnDrawColumnCell Farben anhand eine anderen Wertes (https://www.delphipraxis.net/205611-fmx-stringgrid-ondrawcolumncell-farben-anhand-eine-anderen-wertes.html)

Stefan1286b 28. Sep 2020 11:37

FMX StringGrid OnDrawColumnCell Farben anhand eine anderen Wertes
 
Hallo.

Ich bin gerade dabei ein VCL Programm in FMX umzuschreiben.
Das Programm greift via FireDAC auf einen MSSQLServer zu. Das funktioniert auch so weit. Auch funktioniert es die Daten via LiveBindings in ein StringGrid zubekommen.
Es ist allerdings auch das erste mal das ich mit LiveBindings arbeite.
Auch das ändern der Font und Brush Farben in OnDrawColumnCell stellt soweit kein Problem da.

Das Problem ist die Herkunft der Farbe. Ich habe ein Feld Projektleiter. dieser wird über die SQL Abfrage korrekt dargestellt. In der Tabelle ist es ProjektleiterId und wir über die Abfrage von einer anderen Tabelle (Projektleiter ) korrekt zum Namen geändert. Es gibt ein weiteres Feld welches auch über die Abfrage als Feld dargestellt wird auch dieses kommt von der Tabllle Projektleiter. Es ist die Farbe. Das Feld hat den Namen ProjektleiterFarbe und enhält einen Integerwert der Farbe. Alles soweit gut. Nur wie Komme ich in OnDrawColumnCell im Column Projektleiter auf die Farbe.
In VCL war dies ganz einfach.

Delphi-Quellcode:
ADODataSetProjekteProjektleiterFarbe.Value
Theoretisch funktioniers das in FMX unter FireDAC auch
Delphi-Quellcode:
FDQProjekteProjektleiterFarbe.Value
nur das der Wert immer gleich ist und das dies nicht funktioniert.
Es funktioniert wenn ich
Delphi-Quellcode:
FDQProjekte.RecNo := Row+1;
setze nun dann ist die Geschwindikeit unbrauchbar langsam.
Also gehe ich davon aus, dass ich die Farbe auch via LiveBindings an den StringGrid übergeben muss. Nur wie?
Mein Ansatz ist dass ist ein weiteres Columns erstelle im StringGrid welcher die Farbe enthält und die Breit auf 0 stelle. Aber ich weiß immer noch nicht wie ich wenn die Procedure von OnDrawColumnCell sich in Projektleiter befindet ich auf Projektleiterfarbe zugreifen kann.

Stefan1286b 28. Sep 2020 12:07

AW: FMX StringGrid OnDrawColumnCell Farben anhand eine anderen Wertes
 
Was ich noch vergessen hatte zu schreiben:

Hier https://www.delphipraxis.net/194195-...ren-zelle.html
geht es im Grunde genommen um das selbe nur das es sich dort um TDBGrid (gibt es nicht in FMX) handelt und nicht um TStringGrid.
Und wie TigerLilly schon sagt verhält sich das TDBGrid synchron zur Datenmenge
Nur halt nicht bei TStringGrid mit LiveBindings.

Rollo62 28. Sep 2020 13:09

AW: FMX StringGrid OnDrawColumnCell Farben anhand eine anderen Wertes
 
https://stackoverrun.com/de/q/11516463
https://stackoverrun.com/de/q/11992036

Man sollte es aber eigentlich auch über Livebinding zuweisen und/oder casten können, als Binding Expression.

https://stackoverflow.com/questions/...h-livebindings

http://docwiki.appmethod.com/appmeth...ndings_Methods

https://www.youtube.com/watch?v=86PPmORQ7kY

Stefan1286b 4. Okt 2020 12:04

AW: FMX StringGrid OnDrawColumnCell Farben anhand eine anderen Wertes
 
Nach vielen hin und her habe ich es jetzt gelöst in dem ich die Daten in TGrid.OnDrawColumnCell direkt von der TFDQuery abfrage ohne LiveBindings.
Nachteil ist, das TGrid erst die 1. Column alle Rows zeichnet und dann die zweite usw. So dass TFDQuery.RecNo permanent neu gesetzt werden muss. Von der Geschwindigkeit kann ich aber keinen Nachteil mehr feststellen.


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