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
    g

    ich 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
    akari

    Vielen 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


Anmelden zum Antworten