Entwickler-Ecke

Sonstiges (Delphi) - Problem beim Verschieben eines Objekts!


Savos12 - Sa 27.03.10 18:03
Titel: Problem beim Verschieben eines Objekts!
hallo Mitglieder,
Ich möchte zur Zeit ein Spiel programmieren.
Immer wenn ich auf den Button klicke, soll dieser sich zufällig auf der Form verschieben. Das klappt soweit auch, jedoch nach ein paar klicks sehe ich den Button nicht mehr, weil er sich zu weit verschoben hat. Wenn ich also die Anwendung durch ziehen vergrößere kann ich ihn wieder anklicken. Da liegt dann auch mein Problem. Wie kann ich das anstellen, dass er sich nur auf der sichtbaren Form verschiebt. versteht ihr wie ich meine?

Hier Mein Quelltext:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
implementation


{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  randomize;
  form1.Color:= RGB(random(255)+1, random(255)+1, random(255)+1); // soll nur zum Spass die Farbe ändern (funktioniert)

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  randomize;
  button1.Left:= random(button1.Width+(form1.Width)+1); //soll den Button nach links bzw rechts verschieben (funktioniert)
  button1.Top:= random(button1.Height+random(form1.Height)+1);// soll den Butten nach oben und unten verschieben (funktioniert)

end;

end.


Ich glaube mein Problem ist nicht allzukompliziert..
danke

Moderiert von user profile iconKha: Delphi-Tags hinzugefügt


ALF - Sa 27.03.10 18:31

Hi,
Du schickst den Button ja auch "aus" Deiner Form!

Delphi-Quelltext
1:
Button1.left := Button1.Width + Form1.Width                    

ist also um Button1.width grösser als deine Form!
Wenn er innerhalb deiner Form bleiben soll must Du das berücksichtigen!

Bitte schreibe Deinen Quelltext in [delphi] Dein QuellText [/delphi] tags.
Sieht schöner aus :wink:
Gruss ALf

P.S


ffgorcky - Sa 27.03.10 20:03

Also müsstest Du das ganze nur ein bisschen andersherum schreiben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
begin
  randomize;
  button1.Left:= random(form1.Width-button1.Width);
  button1.Top:= random(form1.Height-button1.Height);
end;

So sollte das doch funktionieren, wie Du es möchtest.
-------------------------
PS: Habe nur das eine random noch rausgenommen, das ich ausversehen zuviel reingeschrieben habe.


ALF - Sa 27.03.10 20:08

bist Du sichere user profile iconffgorcky das es so Funct :wink:
Nur so z.B. 0-Button1.width wo ist jetzt der Button :?:
Gruss ALf


Jann1k - Sa 27.03.10 23:56

Das -Button1.width ist doch noch innerhalb der random Klammer d.h. man kann keine Werte, die kleiner als 0 sind, kriegen.

€: Seh grade das der Beitrag von user profile iconffgorcky editiert wurde, weiß also nicht was da vorher stand.


ALF - So 28.03.10 11:40

is richtig, Fehler von mir! Sorry :oops:
obwohl, beim button.Top funct es trotdem nicht richtig :wink:
Gruss Alf


Savos12 - So 28.03.10 12:17

hey danke jetzt funktionierts...
Was ich dennoch machen würde, ist den Borderstyle der form auf "bsNone" umzustellen
danke