[Borland;C++] Einfacher Stop-Button - Denkanstoß

angeberman

Grünschnabel
Hallo Leute,

Ich hab folgende Problematik und bräuchte einen Denkanstoß:

Ich habe eine Editfeld in dem erstmal die Zahl null steht. Dann hab ich einen Button "GO" und einen Button "Stop". Wenn ich den GO-Button klicke beginnt das Programm langsam (Sleep(5);) bis 1000 zu zählen, mit einem einfachen Selbstaufruf der GOButtonClick();

Code:
void __fastcall TForm1::Button1Click(TObject *Sender)
 {
int x;
x = zahl->Text.ToInt();
x++;
zahl->Text = x;
zahl->Update();
Sleep(5);
if (x<1000) 
        {
	Button1Click(this);
	}
}

Wie zu erwarten, ist -bis fertig gezählt ist- keine Möglichkeit vorhanden mit dem StopButton in irgendeiner Form zu intervenieren.

Selbstverständlich ist das nur ein vereinfachtes Beispiel um meine Problematik zu erläutern.

Was ich brauche ist eine Möglichkeit eine "Schleife" die eine Zeitlang läuft, über einen ButtonKlick abzubrechen.

Muß ich mich dafür in Threadprogrammierung einarbeiten, gibt es dafür einfacherer Vorgehensweisen. Nach was soll ich Googeln? Über einen kleinen Denkanstoß wäre ich hocherfreut.

Vielen Dank

Tillmann
 

Anhänge

  • bsp.jpg
    bsp.jpg
    10,9 KB · Aufrufe: 74
Nimm doch einen Timer, der überprüft, ob ein boolean gesetzt wurde. Diese wird durch Klick auf stop gesetzt, der timer wird über Go gestartet.
Und solange die boolean auf false steht zählst du deinen Counter hoch.

edit: zu spät
 
Warum benutzt du keinen Timer ?

Nimm doch einen Timer, der überprüft, ob ein boolean gesetzt wurde. Diese wird durch Klick auf stop gesetzt, der timer wird über Go gestartet.
Und solange die boolean auf false steht zählst du deinen Counter hoch.

Ich kann doch den "Stop"Button garnicht drücken während meine "Hochzählschleife" am laufen ist. :confused:

Werd mich mal in Timer einlesen... Und schonmal danke für die schnellen Antworten.
 
Wenn du einen Timer laufen hast, dann wirst du den stop button drücken können;)
 
So also habs hinbekommen.

Go und Stop-Button setzten den Timer->Enabeld auf true bzw. false

und die eigentlich Zählfunktion hab ich in die Timerfunktion verschoben.

Vielen Dank für die Hilfe. Werd versuchen den Lösungsansatz jetzt auf mein "richtiges" Problem anzuwenden.
 
Zurück