Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

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

Aphton 13. Sep 2009 10:05

Re: Fenster verschieben?
 
:roll:

FarAndBeyond 29. Mai 2016 05:25

AW: Fenster verschieben?
 
Zitat:

Violett + Blau = Left + Delta X
Ist das nicht alles zu kompliziert? Bei mir macht's da nicht sofort klick...

Warum nicht einfach so:
(ein Timer ist eh besser als MouseMove, da ich dann auch einen MultimediaTimer nehmen kann, ist gut für die Optik..)
Nur für den Fall das hier nochmal jemand d'rüber stolpert und auch nicht sofort durchsteigt...

Delphi-Quellcode:
Unit uMoveForm;

Interface
 Uses
  Windows, SysUtils, Classes, Controls, ExtCtrls, Forms;

 Type
  TForm1 = Class(TForm)
   Procedure FormCreate   (Sender: TObject);
   Procedure FormMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
   Procedure FormMouseUp  (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
   Procedure MoveTimer    (Sender: TObject);
  End;

 VAR
  Form1: TForm1;
  Ti: TTimer;

  PosX: Integer;
  PosY: Integer;
Implementation
 {$R *.dfm}


Procedure TForm1.FormCreate(Sender: TObject);
 Begin
  DoubleBuffered:= True;

  Ti:= TTimer.Create(Application);
  Ti.Interval:= 30;
  Ti.Enabled:= False;
  Ti.OnTimer:= Form1.MoveTimer;
 End;


Procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 Begin
  If Button = mbLeft
  Then
   Begin
    PosX:= Mouse.CursorPos.X - Left;
    PosY:= Mouse.CursorPos.Y - Top;

    ShowCursor(False);
    Ti.Enabled:= True;
   End;
 End;


Procedure TForm1.MoveTimer(Sender: TObject);
 Begin
  Top:= Mouse.CursorPos.Y - PosY;
  Left:= Mouse.CursorPos.X - PosX;
 End;


Procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 Begin
  If Button = mbLeft
  Then
   Begin
    Ti.Enabled:= False;
    ShowCursor(True);
   End;
 End;


End.
Läuft einwandfrei unter Lazarus und D7... das verstehe ich unter "leicht verständlich"...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 Uhr.
Seite 5 von 5   « Erste     345   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz