Countdown in label anzeigen lassen

hi,
ich bin noch nicht ganz mit c++ vertraut, und hab deshalb gerade ein kleines problem:

in einem label soll erst „10“, dann „9“,„8“,… angezeigt werden.
Jede Sekunde eins runter :smile:

ich hab gedacht des geht mit folgenden zeilen:

for (a=10; a>=0; a–)
{
Label1->Caption=a;
Sleep (1000);
}

da muss ich mich aber getäuscht haben, denn so geht es nicht (es zeigt nach 10s die „0“ an)

könnt ihr mir weiterhelfen?!?

gruß hannes

Hallo,

ich hab gedacht des geht mit folgenden zeilen:

for (a=10; a>=0; a–)
{
Label1->Caption=a;

Hier solltest du irgend eine Funktion aufrufen, die die GUI aktualisiert

Sleep (1000);
}

da muss ich mich aber getäuscht haben, denn so geht es nicht
(es zeigt nach 10s die „0“ an)

Solange deine Funktion läuft, wird üblicherweise die GUI nicht aktualisiert.
Du hast zwei Möglichkeiten:

  1. Du aktualiesierst manuell die GUI, bei den meisten Toolkits gibts dazu eine Funktion namens flush oder update oder so.
  2. Du nimmst einen Systemtimer, der jede Sekunde einmal eine Funktion aufruft. In dieser Funktion brauchst du dann kein sleep mehr :wink:

Grüße,
Moritz

hi moritz,
ich peil leider net ganz was du mir versuchst zu erklären.
kannest du mir vlt nen „befehl“ für den c builder sagen, glaub sonst peil ich des net!!!

thx
hannes

Er will dir sagen , das du zwar zählst, aber die Graphische Benutzer Oberfläche (GUI) nicht neu gemalt wird, sprich du siehst den Anfangszustand und dann den Endzustand. Es muss aber nach dem runterZählen wohl jede Sekunde auch die Anzeige neugezeichnet werden.
Also folglich die Ansicht bei jeder Zählung einmal Updated.

kapische :wink:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi,
so jetzt habs au ich kappiert!!!
danke euch beiden.

hat wie gesagt nur update(); gefehlt

gruß hannes