Zitat von
Benjin:
Was ist Memox.tag?
TComponent.Tag ist eine Integervariable, die du benutzen kannst wie du willst. In diesem Fall verwende ich sie einfach dazu, die Left-Position des Memos zu speichern, damit ich weiss wann die Bewegung aufhoeren muss.
Zitat:
Und kannst du die Timerfunktionen in der Aufrufprozedur der Timer noch mal ausführlicher erklären, was da nach entsprechenden Anweisungen passiert?
Klar, auch wenn das schon teilweise gemacht wurde:
Timer1.Enabled := False;
Das muss nicht unbedingt sein, aber ich hab mir angewoehnt, die Timer auszumachen waehrend der Event-Handler laeuft, nur falls der Code im Handler laenger dauert als ein Timer-Intervall. Ist hier zwar nicht der Fall, aber Gewohnheit
Memo1.Left := Memo1.Left-Step;
Hier wird einfach der vorgegebene Wert von der linken Position des Memos abgezaehlt.
Timer1.Enabled := (Memo1.Left + Memo1.Width) > 0;
Hier wirds komplizierter. Wir duerfen den Timer naemlich nur einschalten, wenn das Memo noch sichtbar ist. Nachdem wir es nach links schieben, ueberpruefen wir, ob die rechte Kante des Memos noch im Form ist, also der Wert > 0. Die Position der rechten Kante errechnet sich aus linker Kante + Breite. Und um alles kuerzer zu machen, weisen wir den Wert dieser Abfrage (=Boolean) der Enabled-Property des Timers zu. Ist die Bedingung wahr, also das Memo noch sichtbar wird der Timer wieder eingeschaltet, sonst bleibt er aus.
Delphi-Quellcode:
if not Timer1.Enabled then
ShowMessage('Done');
Wie gesagt...das ist nur zur Kontrolle dass alles ordnungsgemaess laeuft und auch wieder aufhoert.
Greetz
alcaeus