Ein "Klappmenü" erstellen

  • Versuche gerade für ein Chatscript das Usermenü ein & ausblenden zu lassen.
    So dass nur noch das Inputfeld und der Senden-Button sichtbar ist.

    Soweit funzt alles.
    Blos was ist mit den Controls während sie nicht sichtbar sind.
    Müssen die nicht deaktiviert werden oder so ?


    Die Funktion ist von Raupi.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StructureConstants.au3>
    #include <WindowsConstants.au3>

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

    $gui = GUICreate("gui", 200, 200, 200, 200)
    GUISetState(@SW_SHOW, $gui)

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

    GUICtrlCreateInput("meine katze hat durchfall", 5, 40, 135, 40)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKTOP)
    $kl=GUICtrlCreateButton("x", 140, 40, 55, 40)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKTOP)
    ;SOLL WEG
    GUICtrlCreateButton("wir", 5, 120, 40, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP)

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

    GUICtrlCreateButton("sind", 50, 120, 40, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP)
    GUICtrlCreateButton("unerwünscht", 100, 120, 80, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;SOLL WEG ENDE

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

    Func _GuiResize($Guiname, $Posx, $posy, $Breite, $Hoehe)
    $Breite = $Breite + 6
    $Hoehe = $Hoehe + 32
    If $Posx = -1 Then
    $PosxTemp = @DesktopWidth / 2 - $Breite / 2 + 1
    Else
    $PosxTemp = $Posx
    EndIf
    If $posy = -1 Then
    $PosYTemp = @DesktopHeight / 2 - $Hoehe / 2 - 14
    Else
    $PosYTemp = $Posx
    EndIf
    WinMove($Guiname, "", $PosxTemp, $PosYTemp, $Breite, $Hoehe)
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $kl
    if GUICtrlRead($kl) == "x" Then
    _GuiResize("gui", Default, Default, 200, 100)
    GUICtrlSetData($kl, "o")
    Else
    GUICtrlSetData($kl, "x")
    _GuiResize("gui", Default, Default, 200, 200)
    EndIf
    EndSwitch
    WEnd

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

    5 Mal editiert, zuletzt von Kizum (16. Dezember 2011 um 18:38)

  • Hallo Kizum,

    nein, da du keine Hotkeys auf die Schaltflächen gelegt hast ist das unnötig. Hier meine Lösung:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    $gui = GUICreate("gui", 200, 200, 200, 200)
    GUISetState(@SW_SHOW, $gui)

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

    $btnToggle = GUICtrlCreateButton("&einklappen", 20, 10, 100, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    GUICtrlCreateInput("meine katze hat durchfall", 5, 80, 135, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlCreateButton("Senden", 140, 80, 55, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)

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

    ;SOLL WEG
    GUICtrlCreateButton("wir", 5, 120, 40, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlCreateButton("sind", 50, 120, 40, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlCreateButton("unerwünscht", 100, 120, 80, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    ;SOLL WEG ENDE
    $aPos = WinGetPos($gui)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnToggle
    If GUICtrlRead($btnToggle) = "&einklappen" Then
    _GuiResize("gui", $aPos[0], $aPos[1], $aPos[2], 137)
    GUICtrlSetData($btnToggle, "&ausklappen")
    Else
    _GuiResize("gui", $aPos[0], $aPos[1], $aPos[2], $aPos[3])
    GUICtrlSetData($btnToggle, "&einklappen")
    EndIf
    EndSwitch
    WEnd

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

    Func _GuiResize($Guiname, $Posx, $posy, $Breite, $Hoehe)
    ; $Breite = $Breite + 6
    ; $Hoehe = $Hoehe + 32
    If $Posx = -1 Then
    $PosxTemp = @DesktopWidth / 2 - $Breite / 2 + 1
    Else
    $PosxTemp = $Posx
    EndIf
    If $posy = -1 Then
    $PosYTemp = @DesktopHeight / 2 - $Hoehe / 2 - 14
    Else
    $PosYTemp = $Posx
    EndIf
    WinMove($Guiname, "", $PosxTemp, $PosYTemp, $Breite, $Hoehe)
    EndFunc ;==>_GuiResize

    [/autoit]

    mfg autoBert

  • Okay gut zu wissen danke bert.

    Aber

    [autoit]

    _GuiResize("gui", $aPos[0], $aPos[1], $aPos[2], 137)

    [/autoit]


    sollte Default bleiben da die Position vor der Whileschleife gelesen wird.
    So wird das Fenster immer an die selbe Position gesetzt.

    den Rest werde ich schon mal übernehmen.
    Achso und danke nochmal für die Hilfe in meinem alten Thread (Kontextmenü) werde darauf bei Gelegenheit nochmal zurück kommen, arbeite momentan an einem anderen Projekt.

    MFG