![]() |
AW: Ermitteln ob die Maus auf der Form ist?
Stimmt. Darauf habe ich jetzt nicht geachtet, weil ich mich gerade sehr an dem Timer gestört hatte.
|
AW: Ermitteln ob die Maus auf der Form ist?
Zitat:
|
AW: Ermitteln ob die Maus auf der Form ist?
Zitat:
Da kommen sie her (komplettes Beispiel):
Code:
Und damit funktioniert es - anders als mit dem ApplicationEvent - perfekt auch unter Delphi 7, und zudem wird auch die Kopfzeile der Form als Bestandteil der Form erkannt, und es ist egal, ob und welche Komponente (z.B. ein Panel) auf der Form plaziert ist.
type
TForm1 = class(TForm) Panel1: TPanel; Timer1: TTimer; Label1: TLabel; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); protected private { Private-Deklarationen } isMouseOnForm: Boolean; changed: Boolean; procedure CMMouseEnter(var msg: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE; public { Public-Deklarationen } end; Implementation const cMouseOnForm = 'Mouse on form'; cMouseOutOfForm = 'Mouse outside of form'; procedure TForm1.CMMouseEnter(var msg: TMessage); begin isMouseOnForm := true; label1.caption := cMouseOnForm; changed := true; end; procedure TForm1.CMMouseLeave(var msg: TMessage); begin isMouseOnForm := false; label1.caption := cMouseOutOfForm; changed := true; end; procedure TForm1.FormCreate(Sender: TObject); begin panel1.Caption := ''; label1.Caption := ''; timer1.interval := 100; // oder nach Bedarf end; procedure TForm1.Timer1Timer(Sender: TObject); begin // "changed"- Abfrage nur, um unnötige Aktionen zu vermeiden if changed then begin changed := false; label1.invalidate; // oder was auch immer nötig: if isMouseOnForm then MachDies() else MachDas(); end; end; |
AW: Ermitteln ob die Maus auf der Form ist?
Warum nicht einfach WindowFromPoint ?
GetCursorPos in verbindung mit WindowFromPoint Wenn beim Loslassen des Button (oder was auch immer ein HWND/THandle besitzt) das HWND vom WindowFromPoint das gleiche wie mein Handle des Button ist Ergebnis true andernfalls false UPS: Sehe gerade hatte Sir Rufo ja schon geschrieben. gruss |
AW: Ermitteln ob die Maus auf der Form ist?
Probier das mal aus. Sollte eigentlich das sein was du brauchst:
Delphi-Quellcode:
procedure TForm1.FormDeactivate(Sender: TObject);
begin ReleaseCapture; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if GetCapture = 0 then SetCapture(Handle); if PtInRect(BoundsRect, ClientToScreen(Point(x, y))) then Caption := 'Maus ist über der Form' else Caption := 'Maus ist außerhalb der Form'; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 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