Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ziehen mit borderstlye bsnone (https://www.delphipraxis.net/26131-ziehen-mit-borderstlye-bsnone.html)

G G 18. Jul 2004 22:05


ziehen mit borderstlye bsnone
 
hi also ich hab ein form1 mit borderstyle bsnone, aber nun will ich das wen man irgendwo außer buttons draufkíckt, man das fenster rumziehen kann, so wie man es auch normal kann wen man den oberen balken hat.

ideen, anregungen ?

danke

GG

gmarts 18. Jul 2004 22:10

Re: ziehen mit borderstlye bsnone
 
Klick

MrKnogge 18. Jul 2004 22:13

Re: ziehen mit borderstlye bsnone
 
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (ssLeft in Shift) then begin
    ReleaseCapture;
    SendMessage(Form1.Handle, WM_SYSCOMMAND, SC_MOVE+1,0);
  end;
end;

G G 18. Jul 2004 22:14

Re: ziehen mit borderstlye bsnone
 
ich seh da nix, was mir weiterhilft

edit: war auf den link bezogen

gmarts 18. Jul 2004 22:18

Re: ziehen mit borderstlye bsnone
 
Steht doch da: :shock:

Zitat:

Fenster ohne Titelzeile verschieben
Delphi 1, 2, 3, 4
Vielleicht haben Sie auch schon einmal Fenster gesehen, die nicht nur mit Hilfe der Titelleiste verschoben werden konnten. Und vielleicht haben Sie ja schon einmal versucht, dieses Verhalten mit Hilfe des OnMouseMove-Ereignisses nachzuprogrammieren und sind auf zahlreiche Probleme gestoßen. Mit diesem Trick hat die komplizierte Programmierung ein Ende. Alles, was Sie brauchen, ist eine Methode, die auf das Windows-Ereignis WM_NCHitTest reagiert. Dazu deklarieren Sie im Abschnitt Private die Methode

procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;
Im Implementation-Abschnitt definieren Sie dann den Code der Methode

procedure TForm1.WMNCHitTest (var M: TWMNCHitTest);
begin
inherited;
if M.Result = htClient then M.Result := htCaption;
end;
Fertig. Was aber macht diese Routine? Eigentlich ganz einfach! Das Ereignis tritt ein, sobald Sie auf das Fenster klicken. Unsere Routine erfragt nun, ob der Klick im Fenster-Titel (htCaption) oder im Arbeitsbereich (htClient) stattgefunden hat. Ist letzteres der Fall, dann meldet die Routine einfach zurück, daß es sich keineswegs um den Arbeitsbereich, sondern doch um den Fenstertitel handelt. Derart getäuscht macht sich Windows daran, das Fenster zu verschieben.

Quelle: DMV/FranzisVerlag

G G 18. Jul 2004 22:34

Re: ziehen mit borderstlye bsnone
 
ohh sorry, bin heut wieder blind, haut perfekt hin danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 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