Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Automatisches hin und her hüpfen mit hilfe eines timers (https://www.delphipraxis.net/32024-automatisches-hin-und-her-huepfen-mit-hilfe-eines-timers.html)

malo 17. Okt 2004 15:30


Automatisches hin und her hüpfen mit hilfe eines timers
 
Und zwar hab ich mal zu Versuchszwecken versucht ein Programm zu schreiben, dass ein Label automatisch nach links und rechts hüpfen lässt(bin immer noch Anfänger in Delphi :( ).

jetzt sieht mein Quelltext im OnTimer-Event folgendermaßen aus:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
    Bewegung := Bewegung + 1; // Wert von Bewegung erhöht sich sekündlich um 1
  if Bewegung = 5 then
    begin
      if Label1.Left = Entfernung then
        Label1.Left := Entfernung + 100; // Soll nur einmal vorkommen
    end;
  if Bewegung = 5 then
    begin
      if Label1.Left = Entfernung + 100 then
        Label1.left := Entfernung - 100 // nach der ersten Bewegung soll Label1 in die andere Richtung
    end;
  if Bewegung = 5 then
    begin
      if Label1.Left = Entfernung - 100 then
        Label1.Left := Entfernung + 100; // nach der zweiten Bewegung wieder in die andere Richtung. Dann tritt das zweite wieder ein.
    end;
  if Bewegung = 5 then
    Bewegung := 1; // Bewegung wird auf 1 zurückgesetzt, eine Endlos schleife soll entstehen


end;
Bewegung und Entfernung sind Variabeln vom Typ integer. Entfernung hat im OnCreat des Forms den gleichen Wert bekommen, wie Label1.Left ist. Bewegung startet mit 1.

Wenn ich das Programm jetzt laufen lasse, hüpft das Label einmal nach rechts und bleibt dort. Was hab ich falsch gemacht?

MrSpock 17. Okt 2004 15:39

Re: Automatisches hin und her hüpfen mit hilfe eines timers
 
Hallo malo,

alle Programmteile werden bei dir bei Bewegung=5 ausgeführt, deshalb können sie allen in einen Block:

Delphi-Quellcode:
if Bewegung = 5 then
begin
   ...
end;
Also bei Bewegung = 5 wird ja Label.Left auf Entfernung +100 gesetzt, aber in der nächsten if-Abfrage wieder zurück! Du siehst also gar nichts.

malo 17. Okt 2004 15:41

Re: Automatisches hin und her hüpfen mit hilfe eines timers
 
Mh... das heißt also im Grunde, dass Label1.Left gleichzeitig +100 und -100 wird? So ungefähr? ^^

Nun gut, dürfte ja nicht sooo schwer sein, dass zu ändern... danke :)

MrSpock 17. Okt 2004 15:44

Re: Automatisches hin und her hüpfen mit hilfe eines timers
 
Hallo Malo,

ja, so ist es. Soll das Label nach 5 Sekunden nach rechts hüpfen, nach 10 Sekunden zurück, nach 15 wieder nach rechts usw.?

Sharky 17. Okt 2004 15:45

Re: Automatisches hin und her hüpfen mit hilfe eines timers
 
Hai malo,

wenn ich es richtig verstehe möchtest Du das Label abwechselnd rechts und links anzeigen lassen oder?
Dann könntest Du es doch so machen:
Delphi-Quellcode:
var
 leftpos, rightpos : Integer;

procedure TForm1.Button1Click(Sender: TObject);
begin
  leftpos := 100; // Linkepostion des Labels
  rightpos := 400; // Rechteposition des Labels
  Timer1.Interval := 1000; // einmal pro Sekunden hüpfen
  Timer1.Enabled := True; // Timer starten
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Label1.Left = leftpos then // Wenn es links ist
  begin
    Label1.Left := rightpos; // dann nach rechts setzen
  end
  else
  begin
    Label1.Left := leftpos // sonst wieder nach links
  end;
end;

malo 17. Okt 2004 15:55

Re: Automatisches hin und her hüpfen mit hilfe eines timers
 
Hm... das ist sogar eine noch einfachere Variante ^^

Aber egal, ich hab das jetzt schon mit meinem Quelltext gemacht, nur etwas verändert... aber merken werd ich's mir auf jeden fall :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz