IP Adresse in GUI mit mehrern Reitern (Tabs)

  • Ich meine es in abgewandelter Form schon mal gefragt zu haben, ist aber irgendwie untergegangen...

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <GuiIPAddress.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 378, 354, 377, 548)
    $Tabs = GUICtrlCreateTab(0, 0, 377, 25)

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

    ;Tab 1 Allgemein
    $Allgemein = GUICtrlCreateTabItem("Allgemein")
    $Combo1 = GUICtrlCreateCombo("Combo1", 48, 48, 185, 25)

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

    ;Tab 2 Einstellunegn
    $Einstellungen = GUICtrlCreateTabItem("Einstellungen")
    $IP = GUICtrlCreateLabel("IP-Adresse", 48, 200, 55, 17)
    $IPAddress1 = _GUICtrlIpAddress_Create($form1, 104, 200, 129, 17)
    _GUICtrlIpAddress_Set($IPAddress1, "192.168.223.100")
    $IPAddress2 = _GUICtrlIpAddress_Create($Form1, 104, 232, 129, 17)
    _GUICtrlIpAddress_Set($IPAddress2, "192.168.223.255")
    $Input1 = GUICtrlCreateInput("Input1", 48, 128, 185, 21)
    $Input2 = GUICtrlCreateInput("Input2", 48, 160, 185, 21)
    $Broadcast = GUICtrlCreateLabel("Broadcast", 48, 232, 52, 17)

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

    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Tabs
    EndSwitch
    WEnd

    [/autoit]

    Was muss man hier _GUICtrlIpAddress_Create($Form1, 104, 232, 129, 17) tun,
    damit der IP Dialog nur auf der 2. Seite zu sehen ist $form1 ist ja alles?
    Und bei der Angabe von $Einstellungen mault autoit den 1. Parameter an :(

    Gruß Dietmar


    EDIT: Eine Möglichkeit wäre vermutlich mit GUI(show/hide), fühlt sich aber irgendwie getrickst an, oder?

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

    3 Mal editiert, zuletzt von Dietmar (24. Juni 2009 um 18:29)

  • Hmm ist das so verquer gefragt, oder ist der Wunsch es so zu benutzen noch nie geäußert worden.
    Oder mach ich ich es komplett falsch?

    Hintergrund ich möchte halt ein Tool basteln für WOL mit noch ein paar Extras und
    auf der Einstellungen Seite kann man Clients hinzufügen/löschen.
    Da dachte ich es sieht mit den tabs ganz hübsch aus, ist so aber nicht wirklich funktioniell, wie lösen andere so ein Problem? :S

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

    • Offizieller Beitrag

    Ist ganz simpel: Die Controls nur anzeigen lassen, wenn das Tab aktiv ist:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <GuiIPAddress.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1");, 378, 354, 377, 548)
    $Tabs = GUICtrlCreateTab(0, 0, 377, 25)

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

    ;Tab 1 Allgemein
    $Allgemein = GUICtrlCreateTabItem("Allgemein")
    $Combo1 = GUICtrlCreateCombo("Combo1", 48, 48, 185, 25)

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

    ;Tab 2 Einstellunegn
    $Einstellungen = GUICtrlCreateTabItem("Einstellungen")
    $IP = GUICtrlCreateLabel("IP-Adresse", 48, 200, 55, 17)
    $IPAddress1 = _GUICtrlIpAddress_Create($Form1, 104, 200, 129, 17)
    _GUICtrlIpAddress_Set($IPAddress1, "192.168.223.100")
    _GUICtrlIpAddress_ShowHide ($IPAddress1, @SW_HIDE)
    $IPAddress2 = _GUICtrlIpAddress_Create($Form1, 104, 232, 129, 17)
    _GUICtrlIpAddress_Set($IPAddress2, "192.168.223.255")
    _GUICtrlIpAddress_ShowHide ($IPAddress2, @SW_HIDE)
    $Input1 = GUICtrlCreateInput("Input1", 48, 128, 185, 21)
    $Input2 = GUICtrlCreateInput("Input2", 48, 160, 185, 21)
    $Broadcast = GUICtrlCreateLabel("Broadcast", 48, 232, 52, 17)
    GUICtrlCreateTabItem("")

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

    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Tabs
    $current = GUICtrlRead($Tabs)
    Switch $current
    Case 0
    _GUICtrlIpAddress_ShowHide ($IPAddress1, @SW_HIDE)
    _GUICtrlIpAddress_ShowHide ($IPAddress2, @SW_HIDE)
    Case 1
    _GUICtrlIpAddress_ShowHide ($IPAddress1, @SW_SHOW)
    _GUICtrlIpAddress_ShowHide ($IPAddress2, @SW_SHOW)
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]
  • So was in etwa hatte ich mir schon gedacht, das meinte ich mit GUI hide/show,
    aber das es mit den anderen Dialogen(Combobox/Inputbox) so klappt, dachte ich es gäbe noch eine "simplere Lösung".
    Bei den anderen Sachen wird ja auch das Basisfenster nicht benannt. ;)

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

    • Offizieller Beitrag

    Hintergrund:
    Die IP-Controls erhalten keine ID sondern ein Handle. Dadurch sind sie nicht in der Hierarchie der Controlerstellung gebunden sondern rein auf das Fenster fixiert. D.h. sie befinden sich nur auf dem Tab, weil das Tab auf dem Fenster ist. Blendest du das Tab aus, sind sie weiter dort. ;)

  • ja das handle ist ja $form1 von daher ist mir das schon klar, ich dachte man würde sonst nee Gruppe machen und die angeben oder den $tab als handle.
    Aber das geht ja nicht :) Problem hatte ich also schon richtig gedeutet, mich nur gegen [die/meine] Lösung gesträubt ;)

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o