Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Form mit der Maus ziehen... (https://www.delphipraxis.net/79175-form-mit-der-maus-ziehen.html)

logo123 17. Okt 2006 15:55


Form mit der Maus ziehen...
 
Hallo,

ich möchte mir einen eigenen fenter-style machen.
Wenn man auf einer Image drauf klickt und mit der maus zieht, soll sich das ganze fenster mit bewegen.
Wie geht das?

DGL-luke 17. Okt 2006 15:57

Re: Form mit der Maus ziehen...
 
du könntest im onmousedown die fensterposition hinterlegen und im onmousemove - falls linke maustaste gedrückt - die form entsprechend verschieben.

Nils_13 17. Okt 2006 16:06

Re: Form mit der Maus ziehen...
 
Hi,

du musst dabei aber auch darauf achten, dass es zwei Varianten gibt. Du musst dem Benutzer allerdings unbedingt überlassen, welche er benutzen möchte, weil 1. beide Varianten systemweit arbeiten und 2. die erste Variante (SetFullWindowDrag) systembelastender ist. Die FullDragmethode ist allerdings nicht von mir, sondern von EWeiss und die Andere ist auch hier im Forum zu finden.
Delphi-Quellcode:
procedure TfrmMain.xiCaptionBarMouseDown(Sender: TObject;     // das ist das MouseDown-Ereigniss deiner Titelleiste
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   if frmSetting.FullDrag then // wenn der Benutzer für die systembelastendere Methode ist ; musst natürlich diese Zeile an dein Programm anpassen
   begin
     SetFullWindowDrag(frmOp.Handle, True);

     SetFullWindowDrag(frmOp.Handle, False);
   end else // wenn er für den Systemstandard ist
   begin
     ReleaseCapture;
     Perform(wm_syscommand,$f012, 0);
   end;
end;

function TfrmMain.SetFullWindowDrag(hwnd: DWORD; ShowFullWindow: Boolean): Boolean;
var lOldSetting: integer;
    lSuccess  : boolean;
begin
  lSuccess := SystemParametersInfo(SPI_GETDRAGFULLWINDOWS, 0, @lOldSetting, 0);
  if lSuccess = False Then
    Exit;

  if Bool(lOldSetting) <> ShowFullWindow then
  begin
    lSuccess := SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, Abs(DWORD(ShowFullWindow)), 0, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE);
    if bool(lSuccess) = True then
    begin
      Result := True;
      ReleaseCapture;
      SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
    end;
  end
end;

3_of_8 17. Okt 2006 16:19

Re: Form mit der Maus ziehen...
 
Link


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 Uhr.

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