![]() |
Formulartitelleiste
Hi,
wie kann man erkennen ob sich der Mauszeiger in der Titelleiste eines Formulars befindet? Gruß Stinger |
Re: Formulartitelleiste
Hi Stinger,
dazu musst Du die Windows-Botschaft WM_NCMOUSEMOVE abfangen
Delphi-Quellcode:
Damit wird allerdings auch erkannt, wenn die Mouse den Rand berührt, aber das kann man ja abgfangen...
type
TForm1 = class(TForm) private { Private declarations } protected procedure WmNcMouseMove(var Msg: TWMNCMouseMove); message WM_NCMOUSEMOVE; public { Public declarations } end; ... procedure TForm1.WmNcMouseMove(var Msg: TWMNCMouseMove); begin ShowMessage('Maus in Form ausserhalb des Client Bereiches'); inherited; end; ...:cat:... |
Re: Formulartitelleiste
Hallo Sakura,
WmNcMouseMove springt auch schon an, wenn der Mauszeiger in das MainMenu kommt. Kann man auch noch die Koordinaten (X,Y) des Mauszeigers innerhalb von WmNcMouseMove ermitteln? mfg eddy |
Re: Formulartitelleiste
Und wie kann ich verhindern dass Windows erkennt dass sich der Mauszeiger in der Titelleiste befindet, sprich dass es irgendeine Msg. erhält wenn der Cursor in dem Bereich ist?
|
Re: Formulartitelleiste
Da TWMNCMouseMove von TWMNCHitMessage kommt sollte
Delphi-Quellcode:
funktionieren.
if msg.HitTest = htCaption then ...
Gruß s14 |
Re: Formulartitelleiste
Und wie blockier ich die jetzt? indem ich Win vorgauckle es wäre nicht in der Titelleiste sondern im Client?
EDIT: Ok, das hat funktioniert. Das Problem ist, jetzt kann ich die Bordericons nicht mehr anklicken. |
Re: Formulartitelleiste
ich vermute mal
Delphi-Quellcode:
oder
if msg.HitTest = htCaption then msg.HitTest := HTNOWHERE
Delphi-Quellcode:
if msg.HitTest = htCaption then msg.HitTest := HTCLIENT
|
Re: Formulartitelleiste
Funktioniert doch nicht so, das Fenster lässt sich immer noch verschieben.
|
Re: Formulartitelleiste
Dann solltest Du die MouseDown Nachricht abfangen
Delphi-Quellcode:
Hab ich jetzt aber nicht getestet :roll:
procedure WMNcLButtonDown(var msg: TWMNcLButtonDown); message WM_NCLBUTTONDOWN;
procedure TForm1.WMNcLButtonDown(var msg: TWMNcLButtonDown); begin if msg.HitTest = htCaption then msg.HitTest := htClient; inherited; end; |
Re: Formulartitelleiste
Funktioniert, danke :).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 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