AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FMX StringGrid sehr langsam

Ein Thema von Medium · begonnen am 1. Jul 2022 · letzter Beitrag vom 5. Jul 2022
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#1

FMX StringGrid sehr langsam

  Alt 1. Jul 2022, 10:38
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)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#2

AW: FMX StringGrid sehr langsam

  Alt 1. Jul 2022, 12:34
Ich habe damals die KernowSoftware FMX-Komponenten benutzt, allerdings scheinen die nicht mehr weiter gepflegt zu werden. Naja, das ist einer der Gründe, weshalb ich mich von FMX verabschiedet habe, ich will das hier nicht weiter vertiefen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
RonaldK

Registriert seit: 14. Sep 2021
16 Beiträge
 
#3

AW: FMX StringGrid sehr langsam

  Alt 4. Jul 2022, 10:32
Moin zusammen.
Kann ich irgend etwas tun, doch potenziell tausende Zeilen scrollbar bereitzustellen, das ganze aber in benutzbarer Geschwindigkeit zu halten?
Das ist wohl ein fundamentales Problem mit FMX.
DevExpress hat die Weiterentwicklung in diesem Bereich auch eingestellt.
Performance ist auch hier, eines der Gründe:
https://community.devexpress.com/blo...ure-plans.aspx

Zudem erzeugen die Delphi Nexgen Compiler, auch noch den langsamsten Code.
Hier bessert Delphi leider auch nicht mehr nach.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: FMX StringGrid sehr langsam

  Alt 4. Jul 2022, 16:23
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
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: FMX StringGrid sehr langsam

  Alt 5. Jul 2022, 13:33
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!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium ( 5. Jul 2022 um 14:35 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 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