Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fenster bewegen (https://www.delphipraxis.net/3530-fenster-bewegen.html)

flomei 18. Mär 2003 16:12

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

Specialwork 18. Mär 2003 16:24

Hallo Jungs (und evtl. Mädels)
 
Habt Ihr mal versucht, vor dem Aufruf der random Funktion die Initialisierung mit
Delphi-Quellcode:
Randomize;
aufzurufen.

Gruß, Tom

Specialwork 18. Mär 2003 16:30

Also bei mir funktioniert es anstandlos

Delphi-Quellcode:
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.
Gruß, Tom

flomei 18. Mär 2003 16:38

Ich hab da mal ein Randomize; vorgesetzt aber das zeigt keinen Effekt.

Delphi-Quellcode:
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;
Das ist der Code der OnMouseMove Prozedur meiner Form. Sie springt immer nach links oben in die Ecke.

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

Haegar 18. Mär 2003 16:56

Zitat:

Das ist der Code der OnMouseMove Prozedur meiner Form. Sie springt immer nach links oben in die Ecke.
dann schau dir nochmal die werte deiner klammern ...random(...);
an, und vergleiche die mal mit den ganzen hier geposteten codes!!

gruss haegar

Specialwork 18. Mär 2003 17:17

Hallo Flomei,

Deine Funktion z.B.
Delphi-Quellcode:
Random(Form1.ClientHeight - Form1.Height);
liefert immer den gleichen Wert (+-1) bis auf das Vorzeichen.

Ich hab mir mal die Werte ausgeben lassen:

Delphi-Quellcode:
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
Diese Werte erhalte ich nur, wenn
Delphi-Quellcode:
Form1.Borderstyle:=bsSingle;
ist. Wenn Du aber
Delphi-Quellcode:
Form1.Borderstyle:=bsNone;
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.

Gruß, Tom

Luckie 18. Mär 2003 17:24

Ist doch ganmz simple: ClientHeight ist die Höhe des Client-Bereiches des Fensters und Height die gesamt Höhe.

flomei 20. Mär 2003 16:53

Zitat:

Zitat von Specialwork
Delphi-Quellcode:
Form1.Borderstyle:=bsSingle;
ist. Wenn Du aber
Delphi-Quellcode:
Form1.Borderstyle:=bsNone;
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.

Das sollte eigentlich nichts damit zu tun haben, oder?

Wo liegt denn jetzt der Fehler?

Thx!

MfG Florian

flomei 21. Mär 2003 16:44

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.
Seite 2 von 2     12   

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