![]() |
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:
Theoretisch funktioniers das in FMX unter FireDAC auch
ADODataSetProjekteProjektleiterFarbe.Value
Delphi-Quellcode:
nur das der Wert immer gleich ist und das dies nicht funktioniert.
FDQProjekteProjektleiterFarbe.Value
Es funktioniert wenn ich
Delphi-Quellcode:
setze nun dann ist die Geschwindikeit unbrauchbar langsam.
FDQProjekte.RecNo := Row+1;
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. |
AW: FMX StringGrid OnDrawColumnCell Farben anhand eine anderen Wertes
Was ich noch vergessen hatte zu schreiben:
Hier ![]() 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. |
AW: FMX StringGrid OnDrawColumnCell Farben anhand eine anderen Wertes
![]() ![]() Man sollte es aber eigentlich auch über Livebinding zuweisen und/oder casten können, als Binding Expression. ![]() ![]() ![]() |
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 04:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz