Controls in (unsichtbare) Gruppe zusammenfassen

  • Halli hallo... ich fasse mich kurz:

    Ist es iwie möglich, mehrere controls (buttons zb) in einer gruppe zusammen zu fassen, so dass man diese gruppe und alle enthaltenen controls mit einem "GuiCtrlSetState" ausblenden kann?

    Danke für die antworten im vorraus

    MfG

    • Offizieller Beitrag

    Dafür gibt es den Style $WS_GROUP. Edit: Damit wird nur das Fokussieren mit den Pfeiltasten geregelt.
    Echte Groups gibt es nur für Radiobutton.
    Für andere Ctrl fass deren ID in einem Array zusammen, dann kannst du dieses durchlaufen und z.B. gleiche Styles setzen.

  • Ist es iwie möglich, mehrere controls (buttons zb) in einer gruppe zusammen zu fassen, so dass man diese gruppe und alle enthaltenen controls mit einem "GuiCtrlSetState" ausblenden kann?


    BugFix , tklausl: sorry kann es sein dass ihr den 2. Teil der Frage nicht gelesen habt?

    ich lege dafür immer eine ChildGui an

    Spoiler anzeigen
    [autoit]

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

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

    Dim $idRadio2[5]
    #region ### START Koda GUI section ### Form=

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

    $Form1 = GUICreate("Form1", 441, 241, 50, 69)
    $btnHide = GUICtrlCreateButton('&verstecken', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)

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

    $btnShow = GUICtrlCreateButton('&Zeigen', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)

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

    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $hGroup2 = GUICreate("", 170, 170, 235, 25, $WS_POPUP, $WS_EX_MDICHILD, $Form1)
    For $i = 0 To 4
    $idRadio2[$i] = GUICtrlCreateRadio("Radio " & $i, 5, $i * 25, 60, 18)
    Next
    GUISetState(@SW_SHOW, $Form1)
    GUISetState(@SW_SHOW, $hGroup2)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnHide
    GUISetState(@SW_HIDE, $hGroup2)
    Case $btnShow
    GUISetState(@SW_SHOW, $hGroup2)
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

  • autoBert: Warum hast du denn GUICtrlCreateGroup zweimal drin?
    Der Nachteil ist auch, dass wenn du die Sichtbar machst, die Hauptgui ausgegraut wird, also sie sich deaktiviert. Aber das könnte man mit GUISetState(@SW_RESTORE, $Form1) verhindern. Aber dennoch kommt das selbe vor, wenn man ein Radio auswählt. Da wäre doch mal Zeit für eine neue Funktion.

    EDIT: Das wäre mein Vorschlag dazu. So sieht es aus wie eine ganz normale Gui.

    Spoiler anzeigen
    [autoit]

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

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

    Dim $idRadio2[5]

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

    $Form1 = GUICreate("Form1", 441, 241, 50, 69)
    $btnHide = GUICtrlCreateButton('&verstecken', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    $btnShow = GUICtrlCreateButton('&Zeigen', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    For $i = 0 To 4
    $idRadio2[$i] = GUICtrlCreateRadio("Radio " & $i, 250, 80 + ($i * 25), 60, 18)
    Next
    GUISetState()

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

    $hGroup2 = GUICreate("", 170, 170, 235, 25, $WS_POPUP, $WS_EX_MDICHILD, $Form1)
    GUISetState(@SW_DISABLE)

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

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnShow
    GUISetState(@SW_HIDE, $hGroup2)
    Case $btnHide
    GUISetState(@SW_SHOW, $hGroup2)
    GUISetState(@SW_RESTORE, $Form1)
    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von m-obi (18. November 2010 um 01:02)

    • Offizieller Beitrag

    @ErrorKid, wenn du Gruppen aus deiner Gui ausblenden willst könnte das für dich interessant sein: http://www.autoitscript.com/forum/topic/11…version-171110/
    Ist eine Super UDF um Guiteile aus- und einzublenden.

  • Warum hast du denn GUICtrlCreateGroup zweimal drin?


    diese beiden Zeilen können natürlich entfernt werden

    [autoit]

    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

    [/autoit]

    sind beim löschen aus einem anderen Beispiel von mir übrig geblieben. Zum Rest, meist mach ich meine eigenen Projekte aus Design-Gründen ähnlich wie NeMP3-P (siehe Signatur) also auch die MainGui im PopUp-Stil, da kann es nicht auftreten, deine Version ist aber besser.

    Da wäre doch mal Zeit für eine neue Funktion.

    na Raupi hat sie ja schon gefunden, werde ich heute Mittag testen,

    mfg autoBert

    • Offizieller Beitrag

    BugFix , tklausl: sorry kann es sein dass ihr den 2. Teil der Frage nicht gelesen habt?

    Doch, gelesen - aber anders interpretiert. Ich dachte, er möchte eine nur logische Gruppe ohne sichtbare Abgrenzung durch das Group-Ctrl. Denn dass jemand dieses Ctrl nicht kennt hielt ich irgendwie nicht für möglich. ;)

  • Hallo,

    wie wäre es mit einem normalen Child-GUI:

    Spoiler anzeigen
    [autoit]

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

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

    $Form1 = GUICreate("Form1", 441, 241)
    $btnHide = GUICtrlCreateButton('&Verstecken', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    $btnShow = GUICtrlCreateButton('&Zeigen', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    GUISetState()

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

    Dim $idRadio2[5]
    $G2W = 60
    $G2H = (4 * 25) + 18
    $hGroup2 = GUICreate("", $G2W, $G2H, 235, 25, $WS_CHILD, Default, $Form1)
    For $i = 0 To 4
    $idRadio2[$i] = GUICtrlCreateRadio("Radio " & $i, 0, ($i * 25), 60, 18)
    Next
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnShow
    GUISetState(@SW_SHOW, $hGroup2)
    Case $btnHide
    GUISetState(@SW_HIDE, $hGroup2)
    Case $idRadio2[0] To $idRadio2[4]
    MsgBox(0, "!!! Klick !!!", GUICtrlRead($nMsg, 1), 1, $Form1)
    EndSwitch
    WEnd

    [/autoit]
  • @m-obi: Das habe ich getan, ich sehe da aber kein gefülltes $WS_CHILD GUI sondern ein leeres $WS_EX_MDICHILD GUI, das beim Aktivieren im Gegensatz zum $WS_CHILD GUI dem MainGUI den Fokus klaut. ;)

    Edit: OK, ich sehe ein gefülltes und ein leeres $GUI_EX_MDICHILD GUI, das ändert aber nichts daran, dass sie den Fokus klauen.

    Einmal editiert, zuletzt von Großvater (18. November 2010 um 13:45) aus folgendem Grund: Nicht lang genug hingeschaut!

  • autoBert: Deine Version tut's bei mir unter XP Prof SP3 schon.

    @All: Nichts für Ungut, ich habe das zum ersten mal in einem Skript von Raupi (glaube ich wenigstens) gesehen und bis dahin nicht daran geglaubt, dass das so einfach funktionieren kann. ;)

  • leute, leute, ich bin immer wieder überascht, wie sehr ihr anderen leuten helft ;) DANKE an alle! An die möglichkeit mit dem Childgui hab ich garnicht gedacht aber das ist im prinzip genau das was ich gesucht habe, einfach aber genial.. Danke nochmal an alle :)

    MfG