grösse der GUI mit einem Button verändern

  • Hallo geschätzte AutoIt Community,

    ich möchte in meiner GUI einen Button einbauen "advanced" der mir dann höhe der GUI verdoppelt und ein paar weitere Funktionen in einem Tab darstellt.
    Momentan habe ich den Tab Bereich immer dargestellt, für viele ist der Bereich aber nicht interessant und er soll ausgeblendet werden!
    Also möchte ich gern den Bereich von vornhinen ausblenden und bei bedarf über einen "advanced" Button einblenden.

    Geht sowas?

    Vielen Vielen Dank für eure Hilfe

    Einmal editiert, zuletzt von dabronko1 (15. Juni 2012 um 07:23)

  • Mit WinMove.

    So:

    [autoit]

    #include <GUIConstantsEx.au3>

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

    $hGui = GUICreate("Test", 400, 400)
    $cAdvanced = GUICtrlCreateButton("advanced", 20, 20, 80, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cAdvanced
    $aWGP = WinGetPos($hGui)
    WinMove($hGui, "", Default, Default, $aWGCS[2] + 200, $aWGCS[3])
    EndSwitch
    WEnd

    [/autoit]

    2 Mal editiert, zuletzt von m-obi (14. Juni 2012 um 23:25)

  • Hi,

    vielen Dank schonmal, es gibt jetzt nurnoch Problem wenn ich das TAB wieder sichbar machen möchte.
    Momentan wird nur alles gestaucht

    Vielen Dank

    Einmal editiert, zuletzt von dabronko1 (15. Juni 2012 um 02:54)

  • Das musst du mit GUICtrlSetResizing(-1, ...) einstellen.

    Edit: Was mir noch eingefallen ist. Wenn die Controls nicht sichtbar sind, darf man die ja nicht ansprechen mit ControlClick zum Beispiel. Also musst du abfragen welcher Status gerade ist. Hab dir mal zu Veranschaulichung ein kleines Beispiel geschrieben.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Global $hGui, $cAdvanced, $aWGCSOld, $aWGCS, $xToggleState, $cButton1, $cButton2, $cByControlClick

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

    $hGui = GUICreate("Test", 300, 200)
    $cAdvanced = GUICtrlCreateButton("advanced", 20, 20, 80, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $cButton1 = GUICtrlCreateButton("Button1", 320, 20, 80, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $cButton2 = GUICtrlCreateButton("Button2", 320, 60, 80, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $cByControlClick = GUICtrlCreateButton("ControlClick", 20, 120, 80, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUISetState()

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

    $aWGCSOld = WinGetPos($hGui)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cAdvanced
    $aWGCS = WinGetPos($hGui)
    $xToggleState = Not $xToggleState
    If $xToggleState Then
    WinMove($hGui, "", Default, Default, $aWGCS[2] + 200, $aWGCS[3])
    Else
    WinMove($hGui, "", Default, Default, $aWGCSOld[2], $aWGCSOld[3])
    EndIf
    Case $cButton1
    If $xToggleState Then MsgBox(0, "", "Button1 wurde betätigt.")
    Case $cButton2
    If $xToggleState Then MsgBox(0, "", "Button2 wurde betätigt.")
    Case $cByControlClick
    ControlClick($hGui, "", $cButton1)
    EndSwitch
    WEnd

    [/autoit]

    Übriegens, wenn alle Controls das selbe Verhalten haben soll, also z.B. alle $GUI_DOCKALL, dann kannst du auch GUIResizeMode nehmen.

    4 Mal editiert, zuletzt von m-obi (15. Juni 2012 um 07:36)