Autor Beitrag
overmoon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 16



BeitragVerfasst: Sa 01.02.03 01:06 
Ich bastele (programmiere) gerade an einer Komponente, die auch darauf reagieren soll (leider muss), sobald die Maus nicht mehr über ihr ist.

Ich habe eben mal kurz mit einem Programm (das ich geschrieben habe) alle Konstanten für die Windows-Nachrichten aus der messages.pas (von Delphi) gelesen. Dabei habe ich auch die Nachricht WM_MOUSELEAVE gefunden. Hörte sich ganz vielversprechend an, scheint aber nicht die richtig Nachricht zu sein. :cry:

Meine Frage ist nun folgende: Weiß jemand vielleicht wie die Nachricht heißt, die ich suche ? (Und gibt es so etwas überhaupt ?)

Bei JavaScript kennt man das Ereignis ja als „onMouseOut“; also hoffe ich, dass Delphi das auch kennt ?

Theoretisch wäre es natürlich möglich in die Komponente einen Timer einzubauen und mit Hilfe der Mausposition zu überprüfen, ob die Maus über der Komponente ist. Das ist aber extrem unelegant. (Da stehen einem ja die Haare zu Berge, oder?)

Wie ich auf Windows-Nachrichten reagiere, weiß ich. Da sollte eigentlich kein Fehler liegen. Die Komponente hat bereits ein selbstgeschriebenes Ereignis (OnLMouseDown) bei dem ich auf die Windows-Nachricht WM_LBUTTONDOWN (also auf das klicken mit der linken Maustaste) reagiere. Das ist auch getestet und funktioniert einwandfrei.

overmoon
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 03.02.03 10:16 
Versuch es mal mit folgenden Code:
ausblenden Quelltext
1:
2:
3:
protected 
  procedure CMMouseEnter(var msg:TMessage); message CM_MOUSEENTER;
  procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure MyComponent.CMMouseEnter(var msg:TMessage);
begin
  inherited;
  { Hier Dein Code }
end;

procedure MyComponent.CMMouseLeave(var msg: TMessage);
begin
  inherited;
  { Hier Dein Code } 
end;


Gruß
TINO
overmoon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 16



BeitragVerfasst: Mo 03.02.03 16:07 
Danke !!!

Funktioniert wunderbar ! *freu*

:D :idea: :D

Ich wusste gar nicht,
dass es auch noch für Controls spezifische Nachrichten gibt
(die mit CM_... anfangen).
Ich hatte ja nur nach WM_... Nachrichten gesucht.