_GUICtrlIpAddress_Create mit Tabs

  • Hallo zusammen

    Ich habe mit Koda eine GUI mit Tabs erstellt und ein Feld für eine IP Adresse in einem der Tabs platziert.
    In Koda scheint alles einwandfrei zu funktionieren. Beim wechseln in einen anderen Tab, verschwindet die Eingabemaske für die IP.
    Aber beim Kompilieren geht es nicht :(
    Die Eingabemaske für die IP bleibt in jedem Tab sichtbar. :(

    Habe schon verschiedenes ohne Erfolg versucht.
    Vieleicht habt Ihr noch einen Tip für mich.
    Über die suche habe ich komischerweise nichts zu Thema "_GUICtrlIpAddress_Create" gefunden.

    Mein letzter versuch sah so aus:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiIPAddress.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ###
    $Form2 = GUICreate("Form2", 405, 296, 302, 218)
    $Tab1 = GUICtrlCreateTab(40, 48, 321, 209)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
    $Button1 = GUICtrlCreateButton("Button1", 280, 216, 75, 25, $WS_GROUP)
    $IPAddress1 = _GUICtrlIpAddress_Create($Form2, 64, 104, 130, 21)
    _GUICtrlIpAddress_Set($IPAddress1, "127.0.0.1")
    $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 64, 184, 97, 17)
    $TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
    $Radio1 = GUICtrlCreateRadio("Radio1", 80, 192, 113, 17)
    $Radio2 = GUICtrlCreateRadio("Radio2", 80, 224, 113, 17)
    $TabSheet4 = GUICtrlCreateTabItem("TabSheet4")
    $Input3 = GUICtrlCreateInput("Input3", 64, 184, 121, 21)
    GUICtrlCreateTabItem("")
    $Input4 = GUICtrlCreateInput("0", 160, 6, 17, 21)
    GUICtrlCreateLabel("Selektierter Tab:", 72, 8, 82, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Tab1
    tabswitch(GUICtrlRead($Tab1))
    EndSwitch
    WEnd

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

    Func tabswitch($i)
    Switch $i
    Case 0
    GUICtrlSetState($IPAddress1,$GUI_ENABLE + $GUI_SHOW)
    GUICtrlSetData($Input4,'0')
    Case 1
    GUICtrlSetState($IPAddress1,$GUI_HIDE)
    GUICtrlSetData($Input4,'1')
    Case 2
    GUICtrlSetState($IPAddress1,$GUI_DISABLE)
    GUICtrlSetData($Input4,'2')
    Case 3
    GUICtrlSetState($IPAddress1,$GUI_DISABLE + $GUI_HIDE)
    GUICtrlSetData($Input4,'3')
    EndSwitch
    EndFunc

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

    Einmal editiert, zuletzt von Sayen (11. Oktober 2009 um 18:49)

    • Offizieller Beitrag

    GUICtrlSetState funktioniert bei den UDF Funktionen nicht. Um das _GUICtrlIpAddress_Create zu verstecken mußt du _GUICtrlIpAddress_ShowHide benutzen.

    progandy´s Beispiel mit _GUICtrlIpAddress_ShowHide ;)

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiIPAddress.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ###

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

    Global $TabSheets[5]

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

    $Form2 = GUICreate("Form2", 405, 296, 302, 218)
    $TabSheets[0] = GUICtrlCreateTab(40, 48, 321, 209)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheets[1] = GUICtrlCreateTabItem("TabSheet1")
    $Button1 = GUICtrlCreateButton("Button1", 280, 216, 75, 25, $WS_GROUP)
    $IPAddress1 = _GUICtrlIpAddress_Create($Form2, 64, 104, 130, 21)
    _GUICtrlIpAddress_Set($IPAddress1, "127.0.0.1")
    $TabSheets[2] = GUICtrlCreateTabItem("TabSheet2")
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 64, 184, 97, 17)
    $TabSheets[3] = GUICtrlCreateTabItem("TabSheet3")
    $Radio1 = GUICtrlCreateRadio("Radio1", 80, 192, 113, 17)
    $Radio2 = GUICtrlCreateRadio("Radio2", 80, 224, 113, 17)
    $TabSheets[4] = GUICtrlCreateTabItem("TabSheet4")
    $Input3 = GUICtrlCreateInput("Input3", 64, 184, 121, 21)
    GUICtrlCreateTabItem("")
    $Input4 = GUICtrlCreateInput("0", 160, 6, 17, 21)
    GUICtrlCreateLabel("Selektierter Tab:", 72, 8, 82, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $TabSheets[0]
    tabswitch()
    EndSwitch
    WEnd

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

    Func tabswitch()
    Switch GUICtrlRead($TabSheets[0],1)
    Case $TabSheets[1]
    _GUICtrlIpAddress_ShowHide ($IPAddress1, @SW_SHOW)
    Case Else
    _GUICtrlIpAddress_ShowHide ($IPAddress1, @SW_HIDE)
    EndSwitch
    GUICtrlSetData($Input4,GUICtrlRead($TabSheets[0]))
    EndFunc

    [/autoit]
  • Du brauchst ControlHide und ControlShow ;) Und die Tabs würde ich dazu noch in ein Array packen (ist zwar nicht nötig, finde ich aber übersichtlicher.)

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiIPAddress.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ###

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

    Global $TabSheets[5]

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

    $Form2 = GUICreate("Form2", 405, 296, 302, 218)
    $TabSheets[0] = GUICtrlCreateTab(40, 48, 321, 209)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheets[1] = GUICtrlCreateTabItem("TabSheet1")
    $Button1 = GUICtrlCreateButton("Button1", 280, 216, 75, 25, $WS_GROUP)
    $IPAddress1 = _GUICtrlIpAddress_Create($Form2, 64, 104, 130, 21)
    _GUICtrlIpAddress_Set($IPAddress1, "127.0.0.1")
    $TabSheets[2] = GUICtrlCreateTabItem("TabSheet2")
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 64, 184, 97, 17)
    $TabSheets[3] = GUICtrlCreateTabItem("TabSheet3")
    $Radio1 = GUICtrlCreateRadio("Radio1", 80, 192, 113, 17)
    $Radio2 = GUICtrlCreateRadio("Radio2", 80, 224, 113, 17)
    $TabSheets[4] = GUICtrlCreateTabItem("TabSheet4")
    $Input3 = GUICtrlCreateInput("Input3", 64, 184, 121, 21)
    GUICtrlCreateTabItem("")
    $Input4 = GUICtrlCreateInput("0", 160, 6, 17, 21)
    GUICtrlCreateLabel("Selektierter Tab:", 72, 8, 82, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $TabSheets[0]
    tabswitch()
    EndSwitch
    WEnd

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

    Func tabswitch()
    Switch GUICtrlRead($TabSheets[0],1)
    Case $TabSheets[1]
    ControlShow($IPAddress1,"","")
    Case Else
    ControlHide($IPAddress1,"","")
    EndSwitch
    GUICtrlSetData($Input4,GUICtrlRead($TabSheets[0]))
    EndFunc

    [/autoit]