Gui Problem

  • Hallo,

    ich verbringe nun schon etliche Zeit damit
    dieses Problem zu lösen...

    Also:
    1. Gui wird leer gestartet
    2. Combo erstellt Controls
    3. Gui wird gelöscht

    4. Ab dann funktioniert die Combo nicht mehr!

    Mein Code

    [autoit]


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

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

    Global $Form1,$Auswahl,$Start

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

    Opt("GUIOnEventMode", 1)

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

    _HauptGui() ; Gui wird gestartet

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

    #Region Gui

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

    ;Funktionen----->

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

    func _HauptGui()
    $Form1 = GUICreate("Form1", 662, 439, 277, 207)
    $Auswahl = GUICtrlCreateCombo("Auswahl", 472, 44, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Daten")
    GUICtrlSetOnEvent(-1, "_Daten")
    GUISetState(@SW_SHOW)
    $Start = GUICtrlCreateButton("Löschen", 400, 100, 131, 25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetOnEvent(-1, "_Neu")

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

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

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

    EndSwitch
    WEnd

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

    endfunc
    #endregion Gui

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

    Func _Neu()
    GUIDelete($Form1)
    ;MsgBox(0,"","Form gelöscht und neu erzeugt...")
    _HauptGui()

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

    Endfunc

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

    func _Daten()
    GUICtrlSetState($Start,$GUI_ENABLE)

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

    Dim $Links = 50
    Dim $oben = 50

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

    For $i = 0 To 10
    $checkCN = GUICtrlCreateCheckbox("CHECKBOX 1", $Links, $oben + $i*30, 120, 20)

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

    next
    endfunc

    [/autoit]

    Am besten wäre es, wenn man den Button nicht braucht!
    Ich meine sobal die Combo etwas wählt die Form gelöscht wird und einfach die Elemente
    angelegt werden.


    Liebe Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (22. Juli 2011 um 15:38)

  • meinst du so?

    Spoiler anzeigen
    [autoit]

    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Dim $checkCN[11]
    $Form = GUICreate("Form", 662, 439, -1, -1)
    $Auswahl = GUICtrlCreateCombo("Auswahl", 472, 44, 145, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Daten")
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Auswahl
    $read = GUICtrlRead($Auswahl)

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

    If $read = "Daten" Then
    _Daten()
    ElseIf $read = "Auswahl" Then
    _Auswahl()
    EndIf
    EndSwitch
    WEnd
    Func _Daten()
    Dim $Links = 50
    Dim $oben = 50

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

    For $i = 0 To 10
    $checkCN[$i] = GUICtrlCreateCheckbox("CHECKBOX 1", $Links, $oben + $i * 30, 120, 20)
    Next
    EndFunc ;==>_Daten
    Func _Auswahl()
    For $i = 0 To 10
    GUICtrlDelete($checkCN[$i])
    Next
    EndFunc ;==>_Auswahl

    [/autoit]
  • Guten Morgen Gem,

    merci für deine Hilfe.
    In deinem Script werden einzelne Controls gelöscht!
    Ich brauche aber eine Lösung die die kpl. Gui löscht
    da die Anzahl der Controls unterschiedlich ist!

    Deswegen ist auch meine Gui in einer Funktion!

    Ich muß alles (auch Guis) mit Funktionen und OnEventMode handeln
    da es etwas komplex ist!

    Mein Code mit Funktionen

    Spoiler anzeigen
    [autoit]


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

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

    Global $Form1,$Auswahl,$Start,$Links,$oben

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

    Opt("GUIOnEventMode", 1)

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

    _HauptGui() ; Gui wird gestartet

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

    ;Funktionen----->

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

    func _HauptGui()
    $Form1 = GUICreate("Form1", 1024, 768, -1,-1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_End")
    $Auswahl = GUICtrlCreateCombo("Auswahl", 472, 44, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Daten")
    GUICtrlSetOnEvent(-1, "_Daten")
    GUISetState(@SW_SHOW)
    $Start = GUICtrlCreateButton("Löschen", 400, 100, 131, 25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetOnEvent(-1, "_Neu")

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

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

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

    EndSwitch
    WEnd

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

    endfunc

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

    Func _Neu()
    GUIDelete($Form1)
    ;MsgBox(0,"","Form gelöscht und neu erzeugt...")
    _HauptGui()

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

    Endfunc

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

    func _Daten()
    ;Opt("GUIOnEventMode", 1)
    GUICtrlSetState($Start,$GUI_ENABLE)

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

    Dim $Links = 50
    Dim $oben = 50

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

    For $i = 0 To 10
    $checkCN = GUICtrlCreateCheckbox("CHECKBOX 1", $Links, $oben + $i*30, 120, 20)

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

    next
    endfunc
    func _End()
    Opt("GUIOnEventMode", 1)
    exit
    EndFunc

    [/autoit]

    Hast du vielleicht noch ein Beispiel
    das die kpl. Gui löscht?

    Liebe Grüße
    Ilse ;)

    PS:
    Ich muß die kpl Gui löschen da die Anzahl der Elemente
    und die Elemente unterschiedlich sind. Die werden mit der Combo per Funktion erzeugt!
    Das Startformular sollte alles nur die Combo enthalten. Sobald eine AUswahl erfolgt
    wird die Gui gelöscht und die neue Gui mit Elementen erzeugt!

    2 Mal editiert, zuletzt von Ilse (22. Juli 2011 um 10:26)

  • Wirklich sinn macht das für mich zwar nicht, aber hier eine gefixte Version die das macht was du willst. Du kannst nicht einfach msgloop und oneventmode mischen, hatte ich dir aber bereits geschrieben, dass dein Script nicht in einer Funktion festhängen darf wenn du den OnEventMode verwendest. Ausserdem habe ich dir beim Dropdown / Checkbox erstellen mal einen kleinen random Faktor eingebaut damit du siehst dass bei jedem Dropdownklick die Controls neu erstellt werden, was wohl ein Problem sein dürfte...

    Spoiler anzeigen
    [autoit]


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

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

    Global $Form1,$Auswahl,$Start,$Links,$oben

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

    Opt("GUIOnEventMode", 1)

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

    _HauptGui() ; Gui wird gestartet

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

    While 1
    Sleep(10)
    WEnd

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

    ;Funktionen----->

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

    func _HauptGui()
    $Form1 = GUICreate("Form1", 1024, 768, -1,-1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_End")
    $Auswahl = GUICtrlCreateCombo("Auswahl", 472, 44, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Daten")
    GUICtrlSetOnEvent(-1, "_Daten")
    GUISetState(@SW_SHOW)
    $Start = GUICtrlCreateButton("Löschen", 400, 100, 131, 25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetOnEvent(-1, "_Neu")
    endfunc

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

    Func _Neu()
    GUIDelete($Form1)
    ;MsgBox(0,"","Form gelöscht und neu erzeugt...")
    _HauptGui()

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

    Endfunc

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

    func _Daten()
    ;Opt("GUIOnEventMode", 1)
    GUICtrlSetState($Start,$GUI_ENABLE)

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

    Dim $Links = 50
    Dim $oben = Random(10,50,1)

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

    For $i = 0 To 10
    $checkCN = GUICtrlCreateCheckbox("CHECKBOX 1", $Links, $oben + $i*30, 120, 20)

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

    next
    endfunc
    func _End()
    Opt("GUIOnEventMode", 1)
    exit
    EndFunc

    [/autoit]
  • Hallo Misterspeed,

    ich hoffe du hast erbarmen mit mir.
    Ist manchmal alles etwas heftig.

    Ich hab das jetzt soweit am laufen.
    aber dafür schon wieder ein anderes Problem
    mit einem simplen Scrollbalken.
    Damit kämpfe ich nun schon seit 1 Stunde rum,

    Hab nen neuen Thread gemacht.

    Nochmals
    vielen vielen Dank

    Liebe Grüße
    Ilse ;)