Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Form verschieben!!!! (https://www.delphipraxis.net/10432-form-verschieben.html)

maximi 18. Okt 2003 15:54


Form verschieben!!!!
 
So, ich habe BorderStyle auf bsnone gesetzt und somit die obere Leiste wech bekommen.Ich hab mir eine Komponente erstellt die dann diese Leiste ersetzen soll.
Ich möchte nun, wenn man auf die oberer Leiste klickt und die Maus bewegt, dass sich das Form verschiebt.
Ich hab angefangen, nur iregndwie klappt das noch nicht so ganz. Kann mir einer helfen??

Delphi-Quellcode:

  if(active_click = true) then
  begin
    Form8.Left := Mouse.CursorPos.X-Form8.Left;
    Form8.Top := Mouse.CursorPos.Y;
  end;

Daniel 18. Okt 2003 16:07

Re: Form verschieben!!!!
 
Bitte verzichte künftig auf mehrere Ausrufezeichen in Deinen Betreffs-Zeilen. In 9 von 10 Fällen kann man sogar gänzlich auf Ausrufezeichen in den Betreffs-Zeilen verzichten. :wink:

Und zusätzlich wäre es hilfreich, wenn Du kurz beschreibst, was denn genau nicht funktioniert.

Mirilin 18. Okt 2003 16:40

Re: Form verschieben!!!!
 
:hi:


Vielleicht hilft dir die Message WM_NCHITEST

oder dieses hier

und dieses Hier kannst du so umwandeln, dass es für dich passt...

maximi 18. Okt 2003 19:26

Re: Form verschieben!!!!
 
danke, der erste Link hat mir weitergeholfen!!!!! ;))

Mirilin 18. Okt 2003 19:37

Re: Form verschieben!!!!
 
Delphi-Quellcode:
...
var
  md     : Boolean;
  mp     : TPoint;
...
procedure TMainForm.PanelHeaderBarMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
  P : TPoint;
begin
  if not md then Exit;
  P := Point(PanelHeaderBar.Left+(X - mp.X),PanelHeaderBar.Top + (Y - mp.Y));
  P := ClientToScreen(P);
  P.Y := P.Y - (Height-(ClientRect.Bottom-ClientRect.Top))-PanelHeaderBar.Top;
  Left := P.X;
  Top := P.y;
end;
...
procedure TMainForm.PanelHeaderBarMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  md := True;
  mp := Point(X,Y);
end;
...
procedure TMainForm.PanelHeaderBarMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  md := False;
end;
so hab ich das mal gemacht

johny 18. Okt 2003 21:08

Re: Form verschieben!!!!
 
Hier noch eine Lösung:

Delphi-Quellcode:
{ = DragAndDrop = }

var
 xPos, yPos: integer;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 xPos := x;
 yPos := y;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 if HiWord(GetAsyncKeyState(VK_LBUTTON)) > 0 then
 begin
  Form1.Left := Form1.Left + X - xPos;
  Form1.Top := Form1.Top + Y - yPos;
 end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 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-2025 by Thomas Breitkreuz