![]() |
Application.ProcessMessage
Hallo,
ich lese mitteiles folgenden Code alle Kategorien einer INI-Datei ein:
Delphi-Quellcode:
Allerdings bleibt dabei die Anwendungs pausiert, d.h. kein Cursor-Wechsel, nochnichtmal die Fenstergröße kann man verändern.
Sec := TStringList.Create;
Ini := TIniFile.Create('liste.ini'); Ini.ReadSections(Sec); for i := 0 to Sec.Count-1 do begin ListView1.items.add(Sec.Strings[i]); end; Ini.Free; Sec.Free; Habe irgendwas von "Application.ProcessMessage" gelesen, aber habe nicht wirklich kapiert, wie man diese Funktion (?) verwendet... Kann mir eventull jemand helfen??? Danke im vorraus, MCXSC [edit=Christian Seehase]Delphi-Tags korrigiert. Mfg, Christian Seehase[/edit] |
Re: Application.ProcessMessage
Einfach in der Schleife aufrufen :wink: .
PS: TApplication.ProcessMessages |
Re: Application.ProcessMessage
Hiho,
Gehe ich recht der Annahme, daß Listview1 vom Typ TListbox ist? Die Komponente Listview1:TListview hat keine solche überladene Funktion Add falls ich mich jetzt nicht total irre. :gruebel: Ansonsten versuch mal:
Delphi-Quellcode:
Sec := TStringList.Create;
Ini := TIniFile.Create('liste.ini'); try Ini.ReadSections(Sec); Listview1.Items.Assign(Sec); finally Ini.Free; Sec.Free; end; MfG :) |
Re: Application.ProcessMessage
Achso ja, stimmt natürlich beides... ;-) Hatte den Code kurz mal getippt, um ein kleines Beispiel zu zeigen....
|
Re: Application.ProcessMessage
Hi,
![]() Sprich du musst sie einfach da verwenden, wo du auf Dinge in der Anwendung reagieren willst. Sinnvoll also innerhalb der Schleife. ;) Chris |
Re: Application.ProcessMessage
Ich würde allerdings empfehlen, Application.ProcessMessages nicht bei jedem Schleifendurchlauf auszuführen (es sei denn, der Block umfasst 30 Anweisungen und mehr), da sonst die Performance des Programmes drastisch sinkt.
Delphi-Quellcode:
... (if i mod 10) = 0 //nur bei jedem zehnten Schleifendurchlauf
then Application.ProcessMessages ... |
AW: Application.ProcessMessage
Obwohl dieser beitrag schon fünf Jahre alt ist, hier noch ein Tipp, welcher auch bei selbst gezeichneten ListBoxes usw enorme Leistungssteigerung bringt:
BeginUpdate und EndUpdate! |
AW: Application.ProcessMessage
Leistungssteigerung durch Application.ProcessMessages? :shock:
So sollte das Einfügen eigentlich länger dauern (nur daß währenddessen das Programm noch reagiert, falls es "länger" dauert) Dafür ist wohl eher das ListView1.BeginUpdate verantwortlich. ![]() PS: Sicher daß bei dir nicht ein paar .Items fehlen?
Delphi-Quellcode:
ListView1.Items.BeginUpdate;
for i := 0 to Sec.Count-1 do begin ListView1.Items.add(Sec[i]); end; ListView1.Items.EndUpdate; |
AW: Application.ProcessMessage
Zitat:
In meinem Beitrag steht nur, dass Begin/Endupdate eine Mehrleistung bewirkt. Ich denke, du hattest dich verlesen. |
AW: Application.ProcessMessage
Na weil du deinen ursprünglichen Beitrag editiert hast.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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