Menü per Button anzeigen

  • Wie kann ich das Menü anzeigen und verstecken, wenn ich auf den Button klicke?

    [autoit]


    Opt("GUIOnEventMode", 1)
    #include <GUIConstants.au3>

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

    GUICreate("Menü-Test", 200, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_close")
    ; Menü
    $mnu_file = GUICtrlCreateMenu("&Datei")
    GUICtrlSetState(-1, $GUI_HIDE)
    ; Menü anzeigen
    GUICtrlCreateButton("Menü anzeigen", 20, 20, 100, 30)
    GUICtrlSetOnEvent(-1, "_show_mnu")
    ; Fenster anzeigen
    GUISetState(@SW_SHOW)

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

    Func _show_mnu()
    GUICtrlSetState($mnu_file, $GUI_SHOW)
    EndFunc
    Func _close()
    Exit
    EndFunc ;==>_close

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

    While 1
    sleep(500)
    WEnd

    [/autoit]

    Edit: Das Menü wird von Anfang an angezeigt. Ich will es aber haben, wenn ich auf den Button geklickt habe. Das Problem ist noch nicht gelöst

    2 Mal editiert, zuletzt von Chrissi_A (4. Februar 2007 um 18:24)

    • Offizieller Beitrag

    Hi,

    hier ein Start ist sicher noch ausbaufähig:

    [autoit]

    Opt("GUIOnEventMode", 1)
    #include <GUIConstants.au3>

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

    Global $status = False

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

    GUICreate("Menü-Test", 200, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_close")

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

    ; Menü anzeigen
    GUICtrlCreateButton("Menü anzeigen", 20, 20, 100, 30)
    GUICtrlSetOnEvent(-1, "_menu")
    ; Fenster anzeigen
    GUISetState(@SW_SHOW)

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

    Func _close()
    Exit
    EndFunc ;==>_close

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

    Func _menu()
    If $status = False Then
    $mnu_file = GUICtrlCreateMenu("&Datei")
    $infoitem = GUICtrlCreateMenuitem("Info", $mnu_file)
    $exititem = GUICtrlCreateMenuitem("Exit", $mnu_file)
    $status = True
    EndIf
    EndFunc ;==>_menu

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

    While 1
    Sleep(500)
    WEnd

    [/autoit]

    So long,

    Mega

  • Danke th.meger. Habs ausprobiert funktioniert einwandfrei. Nun wie kann ich es auch andersherum machen, statt anzeigen einfach verstecken

    • Offizieller Beitrag

    Hi,

    kein Problem:

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode", 1)
    #include <GUIConstants.au3>

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

    Global $status = False
    Global $mnu_file
    Global $infoitem
    Global $exititem

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

    GUICreate("Menü-Test", 200, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_close")

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

    ; Menü anzeigen
    $b = GUICtrlCreateButton("Menü anzeigen", 20, 20, 100, 30)
    GUICtrlSetOnEvent(-1, "_menu")
    ; Fenster anzeigen
    GUISetState(@SW_SHOW)

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

    Func _close()
    Exit
    EndFunc ;==>_close

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

    Func _menu()
    If $status = False Then
    $mnu_file = GUICtrlCreateMenu("&Datei")
    $infoitem = GUICtrlCreateMenuitem("Info", $mnu_file)
    $exititem = GUICtrlCreateMenuitem("Exit", $mnu_file)
    $status = True
    GUICtrlSetData($b, "Menü löschen")
    ElseIf $status = True Then
    GUICtrlDelete($mnu_file)
    GUICtrlDelete($infoitem)
    GUICtrlDelete($exititem)
    $status = False
    GUICtrlSetData($b, "Menü anzeigen")
    EndIf
    EndFunc ;==>_menu

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

    While 1
    Sleep(500)
    WEnd

    [/autoit]

    So long,

    Mega

  • Danke th.meger. Funktioniert einwandfrei. Evtl. könntest du mir auch bei diesem Problem helfen und zwar. habe ich mir überlegt man könnte ein Skript schreiben, das es ermöglicht wenn man mit der Maus an den oberen Fensterrand geht, das sich automatisch das Menü anzeigt und wenn man die Maus aus dem Bereich zieht, das das Menü wieder verschwindet.

    • Offizieller Beitrag

    Hi,

    hier mal das was du glaube ich haben wolltest:

    [autoit]


    #include <GUIConstants.au3>
    Global $mnu_file
    Global $infoitem
    Global $exititem
    Global $title = "Menü-Test"
    Global $show = False
    GUICreate($title, 200, 200)
    GUISetState(@SW_SHOW)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit (0)
    EndSwitch
    _check()
    WEnd

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

    Func _check()
    $size = WinGetPos($title)
    $pos = MouseGetPos()
    If ($pos[1] <= $size[1] + 50 And $pos[1] > $size[1]) And ($pos[0] >= $size[0] And $pos[0] <= ($size[0] + $size[2])) And $show = False Then
    $mnu_file = GUICtrlCreateMenu("&Datei")
    $infoitem = GUICtrlCreateMenuitem("Info", $mnu_file)
    $exititem = GUICtrlCreateMenuitem("Exit", $mnu_file)
    $show = True
    EndIf
    If Not (($pos[1] <= $size[1] + 50 And $pos[1] > $size[1]) And ($pos[0] >= $size[0] And $pos[0] <= ($size[0] + $size[2]))) And $show = True Then
    $show = False
    GUICtrlDelete($mnu_file)
    GUICtrlDelete($infoitem)
    GUICtrlDelete($exititem)
    EndIf
    EndFunc ;==>_check

    [/autoit]

    So long,

    Mega

    P.S.: Kriege ich jetzt ne positive Bewertung? :schild4:

  • Danke. Da ich bei Galenda ein kleines bisschen mitprogrammiere dachte ich mir, man könnte das Menü verschwinden lassen. Und wenn man es braucht, mit der Maus oben hin fahren.

  • @pee Natürlich entscheidest du! Ich finde das versteckte Menü eigentlich ganz OK. Natürlich schreib ich dann drüber

    [autoit]


    ; th.meger, Angepasst von Chrissi_A

    [/autoit]
    • Offizieller Beitrag

    Hi,

    nein brauchst du nicht. Ich bin da nicht so. Ich freue mich zwar, wenn ich es mal hier oder da lese, aber wenn nicht, ist auch nicht schlimm.

    Hast du irgendwo schon weitere Ideen gepostet?

    Sowas macht mir nämlich immer Spaß und ggf. kann ich ja auch für eigene Dinge die eine oder andere Idee adaptieren.

    So long,

    Mega