Gruppe von Steuerlementen verstecken

  • Hallo zusammen,

    ich wollte eine GUI erstellen die dynamisch auf die Auswahl des Anwenders reagiert.

    Wenn in einem Dropdown beispielsweise A ausgewählt ist soll die Gruppe A (Group Control) mit den darin enthaltenen Steuerlementen angezeigt werden.

    Ich habe allerdings festgestellt, dass GuiCtrlSetState ($Group, $GUI_HIDE) gar nicht die in der Gruppe enthaltenen Controls unsichtbar macht. Gibt es hier eine elegante Lösung?

    Ich wollte nicht jedes Control einzeln verstecken.

    Danke sehr.

  • Hallo Bitboy

    Als kleine Ergänzung möchte ich noch anmerken:

    Wenn es sich um viele Controls handelt, die ein- und ausgeblendet werden sollen, ist es zu empfehlen zuvor das Neuzeichnen der GUI mit GuiSetState(@SW_LOCK) auszusetzen und es nach Abschluss der Aktion mit GuiSetState(@SW_UNLOCK) wieder zu aktivieren. Es geht dadurch schneller. Außerdem kann es störend sein, wenn der Anwender den Ab-/Aufbau der Controls beobachten kann (wie die anderen beiden beschrieben haben. Das passiert alles nacheinander in einer Schleife..).

    Grüße autoiter

  • Hey wow,

    danke für die schnelle Antworten. Ich hatte ähnliche aber uralte Beiträge gefunden und gehofft, dass es inzwischen eine bessere Lösung gibt.

    Der verstecken einer Gruppe hatte afaik unter Visual Basic 6 (uuuuralt) funktioniert und dachte daher das müsste auch in AutoIt gehen.

    Dann wird ichs wohl über Arrays lösen müssen.

    Danke sehr :)

    • Offizieller Beitrag

    Wenn Du die Control-Elemente der Gruppe alle nacheinander erstellst, dann musst Du nicht unbedingt ein Array benutzen:

    Das funktioniert aber nur, wenn die Control-Elemente alle hintereinander erstellt werden, denn AutoIt vergibt die Control-IDs der Reihe nach (1, 2, 3, 4,....usw.).

  • Ich wollte nicht jedes Control einzeln verstecken.

    Es gibt zwar keine Control-Gruppen in AutoIt, aber du kannst die Controls in einem Child-Window erstellen und diese dann als Control-Gruppen missbrauchen.

    ControlGroups.au3