Zitat:
Wäre ein Thread nicht eine sauberere Lösung?
Sagen wir es mal so, wenn alles im Hauptthread läut und man der Form/Application keine Möglichkeit der Messageverarbeitung gibt, dann kann man sich das Disablen auch sparen.
So oder so, ob mit regelmäßigen ProcessMessages oder mit Thread ... man sollte das "sperren", was nicht rekursiv/geichzeitig aufgerufen werden darf/soll.
Zitat:
jede
Wenn etwas schnell ist, dann kann man damit alles ausbremsen.
- entweder mit fester Schrittweite z.B. nur jeden 100-ten
- oder zeitgesteuert die Anzeige auffrischen, bzw. den Fortschritt anzeigen.
z.B. alle 100-250 Millisekkunden sind flüssig oder eben alle 1 Sekunde
PS: BeginUpdates der ListBox beschleunigt auch die Verarbeitung und es guckt eh kaum jemand sich alle 50000000 Einträg der Box an, vorallem nicht, wenn man eine schöne ProgressBar/Counter zur Verfügung hat.
Die Form Disablen?
Oder die entsprechenden Komponenten auf ein/mehrere TPanel und dann das/die Panel disablen.
Oder ein modales "Progess"-Fenster an diese Form hängen (dabei wird die Form automatisch disabled)
Oder ...
- du schaust dir die Vererbung an
- suchst einen gemeinsamen Vorfahren, welcher die gewünschte Eigenschaft/Funktion enthält oder gar implementiert
- dann geht man alle Components oder rekursiv die Controls (jenachdem wie die Owner vergeben sind) der Form durch
- prüft auf diesen Vorfahren und verwendet den passenden Cast, um auf diese Eigenschaft/Funktion zuzugreifen.