Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - was muss ich tun...button bewegen
Tobias - Mo 14.10.02 21:46
Titel: was muss ich tun...button bewegen
hi leuts!
eine frage:
ich habe eine form, auf dieser form befindet sich 1 button, wie kann ich den dann im 2 sek. takt "wandern" lassen? der button soll sich alle 2 sek. an eine bestimmte koordinate bewegen. hab schon einiges ausprobiert, nur irgendwie will das nicht...
i hope i get help soon ;)
Christian S. - Mo 14.10.02 22:04
Hi!
Mit einem Timer kannst Du dieses Zeitintervall realisieren. Wenn Du dann in das OnTimer-Ereignis einen Code setzt, der den Left- und Top-Wert des Buttons so ändert, wie Du es willst, solltest Du das bekommen, was Du haben willst.
MfG,
Peter
Tobias - Di 15.10.02 14:40
könnte mir da jemand nen source für gegeben? bitte.
Christian S. - Di 15.10.02 14:46
Hi!
Aber ohne Gewähr, mein Delhi ist noch nicht installiert, deswegen kann ich den Code nicht testen. Also, du suchst Dir in der Komponentenleiste von Delphi irgendwo die Komponente TTimer (sorry, weiß nicht auswendig, wo!)
Da setzt Du dann also zwei Eigenschaften: einmal musst du das Intervall in Millisekunden eingeben, dann musst Du mit Enabled angeben, ob der Timer schon zählen soll, oder nicht. Beide kannst Du auch während der Laufzeit setzen.
Der Timer hat ein OnTimer-Ereignis. Da schreibst Du folgenden Code rein:
Quelltext
1: 2:
| Button1.Left:=Button1.Left+10; Button1.Top:=Button1.Top+10; |
Ist Enabled=true und Intervall=1000 wird der Button jede Sekunde zehn Pixel nach Links und 10 nach unten springen.
MfG,
Peter
Tobias - Di 15.10.02 14:50
danke :). das hat geklappt
LCS - Di 15.10.02 14:51
Naaa gut. Wer so schön bitte sagt :mrgreen:
Formular mit einem Button und einem Timer.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) Button1: TButton; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } x, y, vx, vy: Integer; public { Public-Deklarationen } end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled := not Timer1.Enabled; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin x := x + vx; //Bewegung für x und y festlegen y := y + vy; //Button ist am linken Rand if x <= 0 then vx := vx * -1; //Button ist am rechten Rand if x >= ClientWidth - Button1.Width then vx := vx * -1; //Button ist am oberen Rand if y <= 0 then vy := vy * -1; //Button ist am unteren Rand if y >= ClientHeight - Button1.Height then vy := vy * -1; Button1.Left := X; Button1.Top := Y; end;
procedure TForm1.FormCreate(Sender: TObject); begin x := Button1.Left; y := Button1.Top; vx := 10; vy := 10; end;
end. |
Gruss Lothar
LCS - Di 15.10.02 14:54
Mal wieder zu spät.
Christian S. - Di 15.10.02 14:57
Dafür aber vollständiger als meins!
Frischling - Mi 16.10.02 16:00
hihu LCS.... :lol:
ich habe Dein Beispiel einfach mal kopiert....
auf meine Form habe ich nen Button und nen Timer gesetzt.
tscha...nur passieren tut nix...
da kann ich auf dem Button rumklicken wie ich will der bewegt sich kein stück :o(
Christian S. - Mi 16.10.02 16:33
Hi!
Ich habe es gerade ausprobiert: der Code von LCS funktioniert.
Du solltest beachten: der Timer ist AKTIV, wenn das Programm startet, der erste "Hüpfer" kommt aber erst nach einer Sekunde. Kann es sein, dass Du direkt nach dem Start des Programmes auf den Button klickst?
MfG,
Peter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!