Autor Beitrag
Tobias
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 14.10.02 21:46 
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 ;)

_________________
Greetz
Tobias
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Tobias Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 15.10.02 14:40 
könnte mir da jemand nen source für gegeben? bitte.

_________________
Greetz
Tobias
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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:

ausblenden 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Tobias Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 15.10.02 14:50 
danke :). das hat geklappt

_________________
Greetz
Tobias
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Di 15.10.02 14:51 
Naaa gut. Wer so schön bitte sagt :mrgreen:

Formular mit einem Button und einem Timer.
ausblenden volle Höhe 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

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Di 15.10.02 14:54 
Mal wieder zu spät. user defined image

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 15.10.02 14:57 
Dafür aber vollständiger als meins!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Frischling
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".