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;