Einzelnen Beitrag anzeigen

Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#3

Re: Form mit der Maus ziehen...

  Alt 17. Okt 2006, 16:06
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;
  Mit Zitat antworten Zitat