Hallo,
ich habe versucht eine einfache Leiste im Windows-Startleistenstyle zu bauen, die immer am oberen Bildschirmrand hängt und verschwindet, wenn man mit der Maus weggeht und wieder erscheint, wenn man mit der Maus wieder hingeht.
Ich habe die Idee verdrängt, es mit einem Timer zu prüfen, ob die Maus drüber ist oder nicht, weil mir schon klar ist, dass diese Lösung nicht sehr elegant ist.
Dann habe ich hier im Forum Beiträge zum Thema cm_mouseleave gefunden und hab dann
Delphi-Quelltext
1: 2: 3: 4: 5:
| public Procedure MouseEnter(Var Msg: TCMMOUSEENTER); message CM_MOUSEENTER; Procedure MouseLeave(Var Msg: TCMMOUSELEAVE); message CM_MOUSELEAVE; end; |
in den Public--Teil des Formulars geschrieben und
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| Procedure TForm1.MouseEnter(Var Msg: TCMMOUSEENTER); Begin If ((Msg.Sender) is TForm1) Then begin end; end;
Procedure TForm1.MouseLeave(Var Msg: TCMMOUSELEAVE); Begin If ((Msg.Sender) is TForm1) Then begin end; end; |
Mein Problem ist, dass ich die MouseLeave-Nachricht nicht immer empfange, wenn ich mit der Maus vom Formular runter gehe, sondern manchmal nur, wenn ich dann in ein fremdes Fenster klicke, manchmal aber noch nicht einmal das!?
Kann mir irgendjemand weiterhelfen und mir sagen, wie ich das mache, das jedesmal, wenn meine Maus das Formular verlässt eine bestimmte Procedure aufgerufen wird?
Ich brauche dringend eure Hilfe, schon mal danke für Antworten...
Viele Grüße Tobi
Moderiert von
Motzi: Code- durch Delphi-Tags ersetzt.Moderiert von
Tino: Topic aus VCL (Visual Component Library) verschoben am Sa 07.05.2005 um 08:42