Hilfe mit Memos
-
Ich versuche gerade eine Art Animation in nem Memo zu machen .
Es soll eine Art Ladebalken ersetzen, also im Prinzip
Memo1->Lines->Add("L");
Sleep(150);
Memo1->Lines->Add("o");
Sleep(150);
Memo1->Lines->Add("a");
Sleep(150);
Memo1->Lines->Add("d");
Sleep(150);
Memo1->Lines->Add("i");
Sleep(150);
Memo1->Lines->Add("n");
Sleep(150);
Memo1->Lines->Add("g");aber das Problem ist, das es wie folgt zu sehen wäre :
L
o
a
d
i
n
gich will aber dass das normal wie eine Laufschrift aussieht :
L + Sleep(150) + o ............Also
Loading
Wie könnte ich das machen ?
-
Hallo
Memo1->Lines->Text = "L"; Sleep(150); Memo1->Lines->Text = Memo1->Lines->Text + "o"; ...
bis bald
akari
-
Du blockierst aber dadurch die GUI (wegen dem Sleep, d.h. mich wundert, daß du überhaupt die Änderungen ohne Aufruf von Application->ProcessMessages() überhaupt bisher siehst?).
Besser wäre ein Timer!
-
akari schrieb:
Hallo
Memo1->Lines->Text = "L"; Sleep(150); Memo1->Lines->Text = Memo1->Lines->Text + "o"; ...
bis bald
akariVielen Dank .. Hoffe es funzt
@TH69
Ja ich wollte das generell mit nem Timer machen aber zur verständnis, damit ihr verstäht, was ich eigentlich von euch will, hab ich das so geschrieben
Aber danke für den Hinweis !
-
Hinterher hab ich gemerkt, das ich garnicht so recht weiss, was Application->ProcessMessages() ist.
Magst du mir das kurz erläutern ?
-
Hallo
Kurze Erklärung : Die GUI wird erst nach dem Ende deiner Methode aktualisiert. Deshalb wird auch dein Memo nicht schon bei jedem einzelnen Buchstaben aktualisiert, sondern erst wenn alles fertig ist. Der von dir gewünschte Effekt ist nicht zu sehen.
Mit der Anweisung Application->ProcessMessages();. kannst du innerhalb deiner Methode jederzeit erzwingen, das die GUI aktualisiert wird. Das könntest du also nach jedem einzelnen Buchstaben und vor jedem folgendem Sleep machen.Weiter Erklärungen, auch zu Timer, findest du über die Suchfunktion und die Builder-Hilfe.
bis bald
akari