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 StringGrid mehr als 10000 Zeilen (https://www.delphipraxis.net/21534-stringgrid-mehr-als-10000-zeilen.html)

Jacki O 4. Mai 2004 14:19


StringGrid mehr als 10000 Zeilen
 
Hallo,

ich habe in meinem Prog ein TStringGrid, in das mehr als 10000 Zeilen eingefühgt werden sollen.
Der Inhalt der Zeilen stammt aus einer List, die ich leider sequenziell durchlaufen muß um die Informationen in das Grid schreiben zu können. Da diese Angelegengheit sehr zeitaufwendig ist, suche ich nach einem besseren Weg. :gruebel:

Ich habe follgenden Weg überlegt:
Nur 1000 Zeilen eintragen, wenn der Bediener dann scrollt und an eine Endmarke erreicht wird, werden die nächsten 1000 Zeilen geschrieben. Dazu stosse ich das Nachladen der follgenden 1000 Zeilen im OnDrawCell Eventhandler an. Somit sollte dann irgendwann der komplette Inhalt meiner Liste im Grid stehen. Leider funktioniert das nur bedingt, da das Ereigniss anscheinend mehrfach ausgelöst wird, wenn der Scrollbar an der Endekennung steht.
Wie könnte ich das mehrfache Auslösen meiner Nachladefunktion unterbinden ?

Oder bin ich absolut auf dem falschen Weg ?
Denkbar wäre auch, einen Thread mit dem Füllen aller Zeilen zu beauftragen, allerdings weiß ich nicht, wie sich das auf die Performance auswirkt. Das Füllen müsset dann ja im Thread synchronisiert durch Synchronize(Nachlaefunktion) erfolgen.

Weiss jemand rat ?
Dnake im voraus Gruß Jacki

kiar 4. Mai 2004 14:24

Re: StringGrid mehr als 10000 Zeilen
 
wer zum teufel guckt sich in einem stringgrid 1000 zeilen an ? :gruebel:

ich kann mir nicht vorstellen, das man dies nichtt eingrenzen kann.

raik

Jacki O 4. Mai 2004 14:35

Re: StringGrid mehr als 10000 Zeilen
 
Hallo,

Die 10000 Zeilen sollten nur ein Beispiel sein.
Genau gesagt ist die Anzahl dynamisch. Das Prog soll Dateien nach bestimmten Werten durchsuchen und dannach darstellen. Das Ganze läuft ohne DB ab. Es kann also vorkommen, das 'sehr viele' Datensätzte gefunden werden, die dann auch sichtbar gemacht werden müssen. Bis auf das Problem mit der Ladezeit ist das auch alles ok. Wenn eine DB integriert wäre, hatte ich das mit enem DBGrid gemacht und gut, aber wie gesagt, es gibt keine DB.

Gruß Jacki

kiar 4. Mai 2004 14:42

Re: StringGrid mehr als 10000 Zeilen
 
warum nimmst du nicht ein listview. da kannst du dann mit
updatebegin & updateend 'ich hoffe das ist richtig, kein delphi offen'
das aktualisieren des listview unterdrücken.

Jacki O 4. Mai 2004 14:54

Re: StringGrid mehr als 10000 Zeilen
 
Es müsste schon bei dem Stringgrid bleiben, da das an eine Funktion als Parameterübergeben wird ,
um es auszudrucken.

Gollum 4. Mai 2004 14:54

Re: StringGrid mehr als 10000 Zeilen
 
Hallo,

wie kiar schon geschrieben hat, die Daten in einer ListView anzeigen. Mit dem Ereignis OnData (OwnerData=True) kann die Listview dann on the fly gefüllt werden.
Ich mache das im Prinzip auch so. Dabei spielt dann die Menge der anzuzeigenden Daten keine Rolle mehr.

Jacki O 4. Mai 2004 15:03

Re: StringGrid mehr als 10000 Zeilen
 
Danke erstmal, ich werde mir die Listview mal ansehen.

Gruß Jacki


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