Fenster leeren nach Menüauswahl?

  • Hi,

    nach der Auswahl von GUICtrlCreateMenuItem soll das Fenster "geleert" werden.
    Gibt es dafür einen pauschalen Befehl?

    Wenn man zuvor Menüitem A ausgewählt und danach Menüitem B auswählt, dann sieht man immer noch die Labels, die bei A angezeigt wurden.

    Grüße und Danke

    Guido

  • Ich habe eine Menübar mit GUICtrlCreateMenu gemacht.
    Angenommen ich wähle im Menü "Benutzer anzeigen" aus, wird in dem Fenster alles zum angemeldeten Benutzer angzeigt.
    Wähle ich in der Menüleiste nun "Drucker anzeigen" aus, sollen natürlich alle Einträge zu installieren Druckern angezeigt werden.
    Nun ist es aber so, dass die Informationen zu "Benutzer anzeigen" ebenfalls noch angezeigt werden.

    Mit GUICtrlDelete müsste ich jedes Label, Input-Feld, Button, etc. sepparat entfernen.
    Schöner wäre es, wenn die Fensterfläche mit einem Befehl wieder frei ist und man nur noch die Menüleiste sieht.

  • In der Funktion "_events" werden die Funktionen aufgerufen, die im Menü ausgewählt wurden.
    Wurde z. B. "DC's" ausgewählt, werden u. a. alle Domänen-Controller angezeigt.
    Wurde z. B. "Mitgliedschaft" ausgewählt, erscheint ein Input-Feld mit einem Button zum Abschicken.

    Hat man nun zuerst DC's ausgewählt und wählt anschließend Mitgliedschaft aus, stehen die Einträge von der letzten Auswahl noch im Fenster.

    Ich kann natürlich eine Funktion bauen, die nach dem Aufruf eines Menüpunktes sämtliche Ctrl's löscht, komfortabel ist das aber nicht.

  • Hallo ThinkCross,

    warum löst du das ganze nicht mit einem Tab-Control z.B:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiTab.au3>

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

    ;Fenster erstellen

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

    Global $strDomaine = "TestDomäne", $strLogonServer = "TestServer", $DCS = "Test-DC"

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

    Global $DCS, $DC

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

    GUICreate("AD-Funktionen", 600, 580)
    GUISetBkColor("0xFFFFCA")
    GUISetFont(9, 400, 0, "Arial")

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

    ;Menübar anzeigen
    $menu_dc = GUICtrlCreateMenu("DC", -1, 1)
    $item_dc_dcs = GUICtrlCreateMenuItem("DC´s", $menu_dc)

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

    $menu_help = GUICtrlCreateMenu("?", -1, 1)
    $item_help_auto = GUICtrlCreateMenuItem("Autor", $menu_help)
    $item_help_exit = GUICtrlCreateMenuItem("Beenden", $menu_help)

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

    $menu_group = GUICtrlCreateMenu("Gruppen", -1, 1)
    $item_group_search = GUICtrlCreateMenuItem("Mitgliedschaft", $menu_group)
    $hmainTab = GUICtrlCreateTab(0, 0, 600, 550)
    $htabDC = GUICtrlCreateTabItem("DC's")
    GUICtrlCreateLabel("Domäne:", 10, 40)
    GUICtrlCreateLabel($strDomaine, 100, 40)
    GUICtrlCreateLabel("Logon-Server:", 10, 70)
    GUICtrlCreateLabel($strLogonServer, 100, 70)
    ;$DCS = _ADDCList()
    For $i = 1 To UBound($DCS, 1) - 1
    $DC = $DC & $DCS[$i] & @CRLF
    Next
    GUICtrlCreateLabel("Domänen-Controller", 10, 140, 140, 20)
    GUICtrlSetFont(-1, 10, 800)
    GUICtrlCreateLabel($DC, 10, 170, 270, 380)
    GUICtrlSetBkColor(-1, 0xffffff)
    $htabGroups = GUICtrlCreateTabItem("Gruppen")
    GUICtrlCreateLabel("Gruppe:", 10, 40)
    $input_searchgroup = GUICtrlCreateInput("", 100, 40, 140, 20)
    $btn_searchgroup = GUICtrlCreateButton("Suchen", 270, 40, 60, 20)
    GUICtrlCreateTabItem("") ; Beendet die Tab Definition
    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $item_help_exit
    GUIDelete()
    Exit
    Case $msg = $item_dc_dcs
    _GUICtrlTab_SetCurFocus($hmainTab, 0)
    Case $msg = $item_group_search
    _GUICtrlTab_SetCurFocus($hmainTab, 1)
    EndSelect
    WEnd

    [/autoit]

    mfg (Auto)Bert

  • Hi,

    Tabs hatte ich zuerst gehabt, finde ich aber nicht so ansprechend.
    Schöner wäre es mit einer Menüleiste zu arbeiten und der untere Bereich wäre dann für das jeweilige Menü komplett separat gestaltbar.

    Grüße
    Guido

  • Hallo ThinkCross,

    dann hätte ich noch eine Lösung mit Child-Guis anzubieten:

    Spoiler anzeigen
    [autoit]

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

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

    ;Fenster erstellen

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

    Global $strDomaine = "TestDomäne", $strLogonServer = "TestServer", $DCS = "Test-DC"

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

    Global $hmainGui, $hguiDC, $hguiGroup, $DCS, $DC

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

    $hmainGui = GUICreate("AD-Funktionen", 600, 580)
    GUISetBkColor("0xFFFFCA")
    GUISetFont(9, 400, 0, "Arial")

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

    ;Menübar anzeigen
    $menu_dc = GUICtrlCreateMenu("&DC", -1, 1)
    $item_dc_dcs = GUICtrlCreateMenuItem("DC´s", $menu_dc)

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

    $menu_help = GUICtrlCreateMenu("?", -1, 1)
    $item_help_auto = GUICtrlCreateMenuItem("Autor", $menu_help)
    $item_help_exit = GUICtrlCreateMenuItem("Beenden", $menu_help)

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

    $menu_group = GUICtrlCreateMenu("&Gruppen", -1, 1)
    $item_group_search = GUICtrlCreateMenuItem("Mitgliedschaft", $menu_group)
    GUISetState()

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

    ;Hilfsgui für DC's
    $hguiDC = GUICreate("", 600, 556, 0, 0, BitOR($WS_CHILD, $WS_TABSTOP), -1, $hmainGui)
    GUISetBkColor("0xFFFFCA")
    GUICtrlCreateLabel("Domäne:", 10, 40)
    GUICtrlCreateLabel($strDomaine, 100, 40)
    GUICtrlCreateLabel("Logon-Server:", 10, 70)
    GUICtrlCreateLabel($strLogonServer, 100, 70)
    ;$DCS = _ADDCList()
    For $i = 1 To UBound($DCS, 1) - 1
    $DC = $DC & $DCS[$i] & @CRLF
    Next
    GUICtrlCreateLabel("Domänen-Controller", 10, 140, 140, 20)
    GUICtrlSetFont(-1, 10, 800)
    GUICtrlCreateLabel($DC, 10, 170, 270, 380)
    GUICtrlSetBkColor(-1, 0xffffff)
    GUISetState()

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

    ;Hilfsgui für Gruppen
    $hguiGroup = GUICreate("", 600, 556, 0, 0, BitOR($WS_CHILD, $WS_TABSTOP), -1, $hmainGui)
    GUISetBkColor("0xFFFFCA")
    GUICtrlCreateLabel("Gruppe:", 10, 40)
    $input_searchgroup = GUICtrlCreateInput("", 100, 40, 140, 20)
    $btn_searchgroup = GUICtrlCreateButton("Suchen", 270, 40, 60, 20)
    GUISetState(@SW_HIDE)

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $item_help_exit
    GUIDelete()
    Exit
    Case $msg = $item_dc_dcs
    GUISetState(@SW_SHOW, $hguiDC)
    GUISetState(@SW_HIDE, $hguiGroup)
    Case $msg = $item_group_search
    GUISetState(@SW_SHOW, $hguiGroup)
    GUISetState(@SW_HIDE, $hguiDC)
    EndSelect
    WEnd

    [/autoit]

    mfg (Auto)Bert

  • Hallo @eF_Hacks,

    das Beispiel ist im MsgLoop-Modus wie auch der Ursprung von ThinkCross. @GUI_CtrlId ist jedoch ausschliesslich im OnEvent-Modus verfügbar.

    mfg (Auto)Bert

    Ups stimmt, du hast recht. Sorry :thumbdown:

  • Ich brauche noch eine Kleinigkeit 8o

    Der Wechsel der Hilfsfenster klappt ja super, wenn ich allerdings zum vorherigen Hilfsfenster zurück gehe, sehe ich noch den alten Inhalt, da dieser noch in den Variablen steht.

    Gibt es einen Befehl um pauschal den Inhalt alle Variablen beim Aufruf eines neuen Hilfs-Fensters zu löschen?

    Danke.

    Grüße
    Guido