[C++] GUI Komplette Form wartet während Schleife läuft


#1
Tag auch,

ich hab nun folgedes Problem:

Ich lasse bei einer Änderung der Caption eines Buttons (ausgelöst OnClick) eine Schleife durchlaufen, die einen Wert erhöht, der in einem Edit Feld ausgegeben wird.

Während die Schleife läuft wartet das gesamte Programm, bis diese beendet ist und das Edit Feld den aktuellen Wert ausgiebt.

Wie schaffe ich es, dass das Programm weiterläuft, also u.a. die anderen Buttons gedrückt werden können?

Hoffe das Problem ist verständlich geschildert...


Gruß Asix
 

Turri

Erfahrenes Mitglied
#2
Hallo,

wird nicht klappen wenn du die Schleife in das OnClick Ereignis steckst.
Mein Vorschlag wäre, den Inhalt die Schleife die du durchläufst in einen Timer zu stecken... und der Timer erhöht deinen Wert.
Der Timer wird in einem extra Thread ausgeführt somit würde die GUI weiter bedienbar bleiben.

MfG Turri

PS: siehe Anhang (gebaut mit C++ Builder 6.0)
 

Anhänge

#4
@ Turri,

Timer ist bestimmt nicht schlecht, aber bei Auflösungen im < 50 ms Bereich nicht mehr genau.
Daher ein
Code:
Application->ProcessMessages();
in die Schleife und gut is :)

Nur mal so ganz allgemein angemerkt.

grüssle :)
 

Turri

Erfahrenes Mitglied
#5
Geht natürlich auch :)
Ist die Frage wie zeitkritisch seine Aktion letztendlich sein muss.
Weil mit ProcessMessages seine Schleife dann zu schnell laufen würde und einfach durchrattert, so das man das hochzählen seiner Zahl im Editfeld nicht mehr erkennen würde.

MfG Turri
 

Neue Beiträge