![]() |
FMX StringGrid sehr langsam
Moin zusammen.
Ich stelle in einem TStringGrid (FMX) eine Meldungsliste für Prozesszustände in einer industriellen Anlage dar. Das können schon mal recht viele werden, und wenn man diese Liste wirklich braucht (lies: falls mal richtig etwas schief gelaufen ist), sollte man in dieser auch z.B. alle Meldungen der letzten 2-3 Tage ungefiltert darstellen und durchscollen können. So wahnsinnig viele sind es auch wieder nicht, ca. 1000-2000 pro Tag maximal. Das Abrufen dieser Daten aus der DB ist sehr zügig, allerdings braucht das Grid ewig mit der Darstellung. Fast schon eine ganze Minute wenn man es mal testhalbar übertreibt und ca. 10000 Datensätze abruft. Ich nutze das OnDrawColumnCell Event um die Zeilen anhand eines Wertes in der jeweiligen Zeile zu färben (FillRect), und lasse von DefaultDrawCell() dann den Rest erledigen. Also auch nichts wildes denke ich. Mir scheint, als würde das Grid versuchen alle Zeilen zu zeichnen, auch wenn diese gerade überhaupt nicht im sichtbaren Bereich liegen. Das ist aber nur eine Vermutung. Kann ich irgend etwas tun, doch potenziell tausende Zeilen scrollbar bereitzustellen, das ganze aber in benutzbarer Geschwindigkeit zu halten? Ich habe früher mit dem TMS Grid für genau denselben Zweck gearbeitet, und damit keine solchen Probleme gehabt. (Delphi 10.2.3, Anbindung des Grids an eine UNIDAC TMyQuery via LiveBindings) |
AW: FMX StringGrid sehr langsam
Ich habe damals die
![]() |
AW: FMX StringGrid sehr langsam
Zitat:
DevExpress hat die Weiterentwicklung in diesem Bereich auch eingestellt. Performance ist auch hier, eines der Gründe: ![]() Zudem erzeugen die Delphi Nexgen Compiler, auch noch den langsamsten Code. Hier bessert Delphi leider auch nicht mehr nach. |
AW: FMX StringGrid sehr langsam
emm...
TGrid ist turbo schnell - besonder weil die Datenhaltung extern ist. Es wird immer nur das vom Model abgerfragt was auch dargestellt werden muss.. Ich habe unter FMX StringGrid nie verwenden, daher würde ich Dir vorschlagen mal das TGrid zu versuchen. Mavarik |
AW: FMX StringGrid sehr langsam
Das klingt erstmal sehr interessant! Das einzige Problem das ich damit jetzt aber habe ist, dass ich anhand eines Wertes in meinen Zellen meine Zeilen unterschiedlich färben möchte. OnDrawColumnBackground klingt erstmal nach einem guten Ereignis dafür, aber leider komme ich ja gerade durch den von dir benannten Vorteil nicht mehr so einfach an die Daten ran - es gibt gar keine Cells[] Property! Wie kann man das denn damit dann lösen? Für jede Zeile immer wieder in meiner DB nachschauen erscheint mir auch nicht wirklich eine performante Sache zu sein =)
Edit: Habs darüber gelöst, indem ich den Datensatz meiner Query anhand der Row setze. Irgendwie war mir so, als wäre TQuery.RecNo mal ReadOnly gewesen, aber scheinbar geirrt. Das ist ziemlich flott jetzt, danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07: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 by Thomas Breitkreuz