MouseOver UDF

  • Hey Leute.

    Ich habe mir einmal eine kleine Mouseover UDF geschrieben, und möchte diese mit euch teilen :D

    UDF:

    Spoiler anzeigen
    [autoit]

    #include-Once

    [/autoit] [autoit][/autoit] [autoit]

    ; #INDEX# ===========================================================================================================
    ; Name ...........: Mouse Over
    ; Sprache ........: Deutsch
    ; Beschreibung ...: Funktion zum ändern des Bildes eines Controls(Mouse over).
    ; Author .........: cinema
    ; ====================================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _mover($control, $bild1, $bild2)

    [/autoit] [autoit][/autoit] [autoit]

    $mpos = GUIGetCursorInfo()
    If (IsArray($mpos)) Then
    If ($mpos[4] = $control) Then
    GUICtrlSetImage($control, $bild2)
    Else
    GUICtrlSetImage($control, $bild1)
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]

    Erklärung:

    $control = ControlId (zum Beispiel bei einen Button in Koda wäre dass $Button1)
    $bild1 = Das Bild, welches angezeigt werden soll, wenn die Maus NICHT über dem Control ist
    $bild2 = Das Bild, welches angezeigt werden soll, wenn die Maus über dem Control ist

    Hier ein Beispielscript:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include "_mover.au3"

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 445, 192, 124)
    $Button1 = GUICtrlCreateButton("Button1", 192, 128, 80, 57, BitOR($BS_BITMAP,$WS_GROUP))
    GUICtrlSetImage(-1, "ok_nact.bmp", -1)
    GUICtrlSetFont(-1, 7, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    _mover($Button1, "ok_nact.bmp","ok_act.bmp")
    WEnd

    [/autoit]

    Also, verbesserungsvorschläge sind gern gesehen. Werde vllt noch andere GUI UDF´s rausbringen.

    LG cinema

  • Kleine, schnelle Funktion
    Super :thumbup:

    €dit: 300 Post :party: :party:


    Gz zum 300 Post :D Ja, ich hab sie gebraucht, und immer das alles zu schreiben war mir zu blöd. Also lieber immer nur 1ne Zeile :D

  • Verbesserungsvorschlag von mir:
    Du baust einfach deine Funktion um:

    Befehl

    [autoit]


    _OnMouseOver_RegisterControl($hControlID)

    [/autoit]


    registriert zB eine Adlib-Funktion die dann immer MouseOver prüft.

    Das würde nähmlich das

    [autoit]


    _mover($Button1, "ok_nact.bmp","ok_act.bmp")

    [/autoit]

    In der While-Schleife sparen ;)
    ich hoffe du versteht was ich meine :)

  • Du könntest auch machen, dass kein Bild angezeigt werden soll, sondern einfach nur die Farbe geändert wird, wenn der Cursor auf dem Control ist. Dann, wenn der Cursor nicht mehr über dem Control ist, wird die Farbe wieder zur vorherigen Farbe zurückgesetzt. :) Hilft beipielsweise, wenn man grade keine Bilder parrat hat. ;D

  • Ich geh mal davon aus das die Funktion in der Mainloop steckt, und somit wird das Bild dauerhaft aktuellisiert. Klüger wäre es wenn man eine Variable setzt und kontrolliert ob das Bild schon angezeigt wird.

  • Hey !
    Super Script!

    Folgendes:

    War gerade dabei, mir selber eine Funktion zu schreiben die sowas macht, da hab ich deine Gesehen! Bin nämlich gerade dabei, Eigene Button-Designs zu erstellen!
    (Lade Bild in Button - Maus geht rüber - Button als angewählt darstellen - Maus klickt - Button Wird Runtergedrückt!)

    Mit deiner Funktion kann man verwirklichen, dass man den Button als angewählt darstellen kann jedoch nicht als Angeklickt (runtergedrückt)
    --->> Kannst du diese Funktion noch hinzufügen?? Das wär total geil! Weil dann könnte jeder Diese nutzen, wenn man Button selber erstellen will! :)