![]() |
Form zur Laufzeit verschieben bei BorderStyle: bsNone?
Hallo,
wieder mal ne dämliche Frage. Wie kann mann ein Fenster das die Eigenschaft BorderStyle: bsNone hat, zur Laufzeit mit der Maus hin und her ziehen? Danke |
Re: Form zur Laufzeit verschieben bei BorderStyle: bsNone?
Hallo,
dazu gibts sicher hier im Forum schon was, aber das hatte ich gerade bei der Hand: ![]() MfG GM |
Re: Form zur Laufzeit verschieben bei BorderStyle: bsNone?
Ist nicht ganz was ich momentan brauche. Trotzdem danke.
|
Re: Form zur Laufzeit verschieben bei BorderStyle: bsNone?
Hast du auch ganz unten gelesen?:
Zitat:
|
Re: Form zur Laufzeit verschieben bei BorderStyle: bsNone?
Sorry, habe ich erst jetzt gesehen. Das löst mein Problem. Danke!!!
|
AW: Form zur Laufzeit verschieben bei BorderStyle: bsNone?
Hallo, unter FMX funktioniert das ja nicht mehr :-/
Gibt es eine allgemeine Lösung? Problem ist ja, dass wenn die Maus die Componente zu schnell verlässt, kommt man zB mit "screen.MousePos" nicht mehr hinterher. |
AW: Form zur Laufzeit verschieben bei BorderStyle: bsNone?
Mit Windows Vcl mach ich es per "Non Client Hit - Abfrage"
Wie ein Fmx damit klar kommt ist mir unbekannt.
Delphi-Quellcode:
Zweite Möglichkeit, ähnelt dem oben beschriebenen, mit einer OnMouse procedure
type
TForm1 = class(TForm) private protected procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; end; .. procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest); var Pt: TPoint; begin Pt := ScreenToClient(SmallPointToPoint(Message.Pos)); if Pt.Y < 30 then // hier legst du fest wie hoch eine selbstgemalte titelzeile hoch ist, entferne das wenn du alles als drag fläche willst Message.Result := HTCAPTION else inherited; end;
Delphi-Quellcode:
oder Non-Vcl
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); const SC_DRAGMOVE = $F012; begin if Button = mbLeft then begin ReleaseCapture; Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0); end; end;
Delphi-Quellcode:
function DlgProc(hWin: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): bool; stdcall;
... WM_LBUTTONDOWN: begin Result := BOOL(DefWindowProc(hWin, uMsg, wp, lp)); PostMessage(hWin, WM_SYSCOMMAND, $f012, 0); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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 by Thomas Breitkreuz