Noch eine MouseHover-UDF

    • Offizieller Beitrag

    Hier mal eine MouseHover-UDF, die mit SubClasses arbeitet und ein echtes MouseHover (mit Zeitverzögerung) ermöglicht.

    Die Benutzung ist einfach: die UDF includen und dann gibt es drei Funktionen:

    1. "_MouseHover_Register" zum registrieren der beiden Funktionen für MouseHover und MouseLeave. Außerdem kann man die Zeit (in ms) bestimmen, die die Maus über dem Control-Element sein muss, bevor die Hover-Funktion aufgerufen wird ("-1" gleich Standard-Systemzeit).

    2. "_MouseHover_UnRegister", um den Hover-Effekt wieder abzuschalten.

    3. "_MouseHover_Update", um die Parameter aendern zu koennen.


    Edit 02.09.2020 neue Version v1.3 (Anpassungen von Bitnugger):

    - Die Funktion "_MouseHover_Update" ist dazugekommen.

    - Einige kleine Änderungen am Code.

    - Beispiel-Code angepasst.


    Edit 22.01.2023 neue Version v1.4:

    - Die statische Variable "$bMouseTrack" in eine globale Variable "$__g_bMouseTrack" umgewandelt, um einen Fehler zu beheben, der auftritt, wenn man "_MouseHover_UnRegister" aufruft für ein Objekt, auf dem sich die Maus gerade befindet. Ein Dankeschön an Aaron3569 für das finden des Fehlers!


    Schaut euch einfach das Beispiel an (siehe Anhang).

  • Oscar

    Hat den Titel des Themas von „Noch eine MousHover-UDF“ zu „Noch eine MouseHover-UDF“ geändert.
    • Offizieller Beitrag

    Ich habe die UDF nochmal überarbeitet. Sie arbeitet jetzt mit SubClasses statt einem MouseHook.

    Dafür ist das jetzt ein echtes MouseHover (Hover-Effekt erst nach der Verzögerungszeit). Vorher war das ja eher ein MouseEnter, also sobald die Maus das Control-Element "betreten" hat.

    Das Beispiel habe ich entsprechend angepasst. Da sieht man auch, dass auch verschiedene Hover-/Leave-Funktionen möglich sind.

  • Hi Oscar

    danke fürs Teilen :)

    Ich finde das sehr schön flexibel gehalten! Das ist wirklich toll.


    Ich finde nicht ganz so gut, dass die UDF keine Funktionsheader hat. Ohne Thread und Example ist sie - trotz ihrer Kürze - so schwer verständlich und für User Call Tip Manager unbrauchbar. Func1 und Func2 für EntryFunc und Func2 für ExitFunc sind als Ersatz auch nicht sprechend.

  • Schöne Sache! :thumbup:


    Besonders gut finde ich deine Lösung zum Ermitteln des MouseOver. Deine Erkennung funktioniert sehr präzise, was sich z.B. zeigt, wenn man die Hälfte eines Labels mit einem fremden Fenster verdeckt und mit der Maus über das Label fährt. Wenn die Maus über dem sichtbaren Teil des Labels schwebt, wird der Hover-Effekt gezeigt, und wenn die Maus über dem verdeckten Teil des Labels schwebt, wird der Hover-Effekt zurückgesetzt.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

    • Offizieller Beitrag

    Ich finde nicht ganz so gut, dass die UDF keine Funktionsheader hat. Ohne Thread und Example ist sie - trotz ihrer Kürze - so schwer verständlich und für User Call Tip Manager unbrauchbar. Func1 und Func2 für EntryFunc und Func2 für ExitFunc sind als Ersatz auch nicht sprechend.

    Ja, damit hast Du natürlich recht. Die ungeliebte Dokumentation... ;)

    Ich habe das jetzt nachgeholt (neue Version, siehe Post#1). Danke für die konstruktive Kritik! :thumbup: