![]() |
Ich hab den Code von Daniel genommen, aber das einzige was passiert ist, dass meine Form oben links in die Ecke spring. Das ist nicht schön! :-(
Sie kommt da nämlich nicht mehr weg. Weitere Hilfe erbeten! Thx! MfG Florian |
Hallo Jungs (und evtl. Mädels)
Habt Ihr mal versucht, vor dem Aufruf der random Funktion die Initialisierung mit
Delphi-Quellcode:
aufzurufen.
Randomize;
Gruß, Tom |
Also bei mir funktioniert es anstandlos
Delphi-Quellcode:
Gruß, Tom
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin // Achtung: Timer1.Enabled=False; Timer1.Enabled:=True; end; procedure TForm1.FormCreate(Sender: TObject); begin Randomize; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Left := Random(Screen.Width-Width); Top := Random(Screen.Height-Height); end; end. |
Ich hab da mal ein Randomize; vorgesetzt aber das zeigt keinen Effekt.
Delphi-Quellcode:
Das ist der Code der OnMouseMove Prozedur meiner Form. Sie springt immer nach links oben in die Ecke.
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); begin Randomize; Form1.Top:= random(Form1.ClientHeight - Form1.Height); Form1.Left:= random(Form1.ClientWidth - Form1.Width); end; Vielleicht könnte man auch etwas anderes machen: Form bewegt sich von links unten nach rechts oben, von da nach rechts unten und dann nach links oben, bewegt sich nach links unten und fängt von vorne an. Mit Schleifen und Bedingungen, oder so??? Thx! MfG Florian |
Zitat:
an, und vergleiche die mal mit den ganzen hier geposteten codes!! gruss haegar |
Hallo Flomei,
Deine Funktion z.B.
Delphi-Quellcode:
liefert immer den gleichen Wert (+-1) bis auf das Vorzeichen.
Random(Form1.ClientHeight - Form1.Height);
Ich hab mir mal die Werte ausgeben lassen:
Delphi-Quellcode:
Diese Werte erhalte ich nur, wenn
LEFT: -32768TOP : 32767
LEFT: 32767TOP : -32768 LEFT: -32768TOP : 32767 LEFT: -32768TOP : -32768 LEFT: 32767TOP : -32768 LEFT: 32767TOP : -32768 LEFT: 32767TOP : -32768 LEFT: 32767TOP : -32768 LEFT: 32767TOP : -32768 LEFT: 32767TOP : -32768 LEFT: 32767TOP : 32767 LEFT: 32767TOP : -32768 LEFT: 32767TOP : -32768 LEFT: 32767TOP : 32767
Delphi-Quellcode:
ist. Wenn Du aber
Form1.Borderstyle:=bsSingle;
Delphi-Quellcode:
eingestellt hast, bekomme ich nur Null. Das erklärt a) bsSingle: warum Deine Form zur Laufzeit verschwindet; und b) bsNone: warum Deine Form oben links in der Ecke plaziert ist.
Form1.Borderstyle:=bsNone;
Gruß, Tom |
Ist doch ganmz simple: ClientHeight ist die Höhe des Client-Bereiches des Fensters und Height die gesamt Höhe.
|
Zitat:
Wo liegt denn jetzt der Fehler? Thx! MfG Florian |
Prima! Es geht jetzt! Manchmal ist geposteter Code doch am besten. :wink:
Thx! MfG Florian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:40 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 by Thomas Breitkreuz