Autor Beitrag
madanik
Hält's aus hier
Beiträge: 2

Win XP
D4 Prof
BeitragVerfasst: Di 26.04.05 22:05 
Hey Leute!

Ich hab da ma ne allgemeine Frage zu Delphi, falls jemand ne Antwort hat wär das klasse!
Ich erklär mein Problem mal durch ein Beispiel:

Ich hab ne Prozedur, in der eine Schleife 100 mal durchlaufen muss, bis die prozedur beendet ist. In dieser Prozedur wird bei jedem Durchlauf eine Zahl um 1 erhöht (und fängt bei 0 an), stellt also den prozentualen Fortschritt dar. Diese Zahl soll dann in einem Label stehen, so dass ich während der Prozedur den Fortschritt beobachten kann. Leider zeigt mein Programm mir erst die Zahl an, wenn die Prozedure beendet ist, also 100%, und keine Zwischenwerte.

Wie kann ich also machen, dass Werte, die sich während der Prozedure ändern, auf meine Oberfläche dargestellt werden? Und in diesem Zusammenhang: Wie kann ich erreichen, dass ich während der Prozedur auf einen Button klicken kann, der diese Prozedur beendet?
Mir bringt es leider nicht viel wenn mir mein Programm 100% anzeigt wenn er fertig ist und den Verlauf bis zu den 100% nicht darstellt und ich erst auf abbrechen klicken kann, wenn die Prozedur eh schon beendet ist...

Ich hoffe mir kann jemand helfen, falls ja schonmal danke!
madanik
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 26.04.05 22:08 
Hallo!

Damit Dein Programm auch während solcher Vorgänge reagiert, rufst Du in jedem Prozedurdurchlauf Application.ProcessMessages auf. Damit werden die Windows-Nachrichten verarbeitet. Dadurch wird die Abarbeitung der Schleife allerdings auch langsamer. Es ist daher auch nicht im Allgemeinen, sondern nur in diesem Spezielfall sinnvoll, den Befehl bei jedem Durchlauf aufzurufen.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
madanik Threadstarter
Hält's aus hier
Beiträge: 2

Win XP
D4 Prof
BeitragVerfasst: Di 26.04.05 22:13 
Super, Klasse, das funktioniert, vielen Dank!!