2te Gui reagiert nicht auf Mausbefehle

  • Hallo zusammen,

    ich habe bisher die Suchfunktion genutzt, leider klappt es nicht so wie ich will.

    Problem ist folgendes:
    Ich habe eine Hauptgui, dort ein Treeview hinterlegt.
    Der Treeview wird automatisch über INI Dateien erzeugt.
    auf den verschiedenen Treeviews habe ich ein Contexmenü/MenuItems gelegt.
    Nun mein Problem:

    Ich befinde mich in der Schleife wo GUI1, die Hauptgui, abgefragt wird.

    wenn nun das Ereignis Dropdownfeld "neu" gedrückt wird, wird daraufhin eine GUI erstellt.

    Die GUI wird aber spezifisch auf den Dropdown Wert erstellt, ich kann sie also nicht zuvor erstellen.

    Die Gui geht dann auch auf, die Felder kann ich aber nicht anklicken. Buttons funktionieren nicht.
    Mit TAB kann ich zumindest mal in die Inputfelder reinspringen, Maus funktioniert nicht..


    Beispiel siehe unten!


    Vielleicht weiß einer warum das so nicht funktioniert.... danke

    2 Mal editiert, zuletzt von Flitzer (5. August 2009 um 07:40)

  • das Script ist auch gekürzt. Gesamt sind es ca. 800 zeilen, das kann ich hier leider nicht posten,
    es geht nur um das verständnis zwischen den beiden GUI´s.
    Hat keiner eine Idee?

  • also ob es so funktioniert weis ich nicht aber so sollte es eigentlich gehen.

    Spoiler anzeigen
    [autoit]

    $guihaupt= GUICreate("HAUPTFENSTER", 817, 657, 193, 125)
    .....................
    .....................

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

    .....................
    .....................

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

    While 1
    $msg = GUIGetMsg()
    .....................
    .....................
    $msg = $dropdownfeld Then

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

    $guicontextmenu1 = GUICreate($server[$line][0], 279, 124, 193, 125)
    GUICtrlCreateLabel("Neuer Prozess - " & $server[$line][0] , 64, 8, 220, 115)
    GUICtrlCreateLabel("Prozessname:", 16, 32, 70, 17)
    $processname = GUICtrlCreateInput("Beispiel: explorer.exe", 88, 32, 121, 21)
    $description = GUICtrlCreateInput("Beispiel: Windows Explorer", 88, 64, 121, 21)
    GUICtrlCreateLabel("Bezeichnung", 16, 64, 66, 17)
    $ok = GUICtrlCreateButton("Ok", 88, 96, 75, 25, 0)
    GUISetState($guicontextmenu1, @SW_SHOW) ; erst das Handle dan den state

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    GUIDelete($guicontextmenu1)
    ExitLoop
    EndIf
    If $msg = $ok Then
    ............
    GUIDelete($guicontextmenu1)
    ExitLoop
    EndIf
    WEnd ; nicht vergessen
    Wend

    [/autoit]
  • Hallo zusammen,


    Eistee: es muss erst das FLAG, dann das HANDLE
    Meins war also richtig :)

    Siehe:
    Changes the state of a GUI window.
    GUISetState ( [flag [, winhandle]] )


    nuts:
    Hab mich vllt etwas falsch ausgedrückt. das Hauptfenster funktioniert ohne Probleme, auch wenn das zweite Fenster geschlossen wird.
    Wenn aber das zweite Fenster aufgeht reagiert es auf Maus etc nicht. Also das 2te Fenster ist betroffen.

    und ja er befindet sich in der 2ten Schleife, er reagiert aber auf nix :(

  • Ich hab jetzt mal alles weggelassen was unwichtig ist....
    hoffe es klappt so, hab viele zeilen rausgeschmissen


    [autoit]


    #include <GUIConstants.au3>
    #include <array.au3>
    #include <TreeviewConstants.au3>

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

    ;~ $oMyError = ObjEvent("AutoIt.Error", "_ADDoError"); Install a custom error handler
    ;~ opt("guioneventmode",1)

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

    Global $item[999][999], $processname, $contextmenueitem1[999], $contextmenueitem2[999], $contextmenueitem4[999], $contextmenueitem5[999], $server[999][999]

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

    ;~ Hauptgui
    $guihaupt= GUICreate("Server Überwachung", 817, 657, 193, 125)
    $Label1 = GUICtrlCreateLabel("Server Überwachung", 280, 8, 265, 25)
    $refreshbutton = GUICtrlCreateButton("Refresh",390, 620)
    $tree = GUICtrlCreateTreeView(40, 64, 329, 497)
    $refresh = 0

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

    GUISetState(@SW_SHOW, $guihaupt)

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    Exit
    EndIf
    If $msg = $refreshbutton Then
    $refresh = 1
    GUICtrlDelete($tree)
    $tree = GUICtrlCreateTreeView(40, 64, 329, 497)
    _serverread()
    EndIf
    If $refresh = 0 Then
    GUICtrlDelete($tree)
    $tree = GUICtrlCreateTreeView(40, 64, 329, 497)
    _serverread()
    ElseIf $refresh = 30000 Then
    GUICtrlDelete($tree)
    $tree = GUICtrlCreateTreeView(40, 64, 329, 497)
    _serverread()
    $refresh = 1
    EndIf
    $line = 1
    While 1
    ;~ zweite Gui
    If $msg = $contextmenueitem1[$line] Then

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

    $guicontextmenu1 = GUICreate($server, 279, 124, 193, 125)
    $Label3 = GUICtrlCreateLabel("Neuer Prozess - " & $server , 64, 8, 220, 115)
    $Label1 = GUICtrlCreateLabel("Prozessname:", 16, 32, 70, 17)
    $processname = GUICtrlCreateInput("Beispiel: explorer.exe", 88, 32, 121, 21)
    $description = GUICtrlCreateInput("Beispiel: Windows Explorer", 88, 64, 121, 21)
    $Label2 = GUICtrlCreateLabel("Bezeichnung", 16, 64, 66, 17)
    $ok = GUICtrlCreateButton("Ok", 88, 96, 75, 25, 0)
    GUISetState(@SW_SHOW, $guicontextmenu1)
    While 1
    $msg1 = GUIGetMsg()
    If $msg1 = $GUI_EVENT_CLOSE Then
    GUIDelete($guicontextmenu1)
    ExitLoop
    EndIf
    If $msg1 = $ok Then
    GUIDelete($guicontextmenu1)
    ExitLoop
    EndIf
    WEnd
    EndIf
    $line = $line + 1

    ;~ dritte gui etc.....


    If $line > 1 Then ExitLoop
    WEnd
    $refresh = $refresh + 1
    WEnd

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

    Func _serverread()
    ;~ Server auslesen aus systems.ini
    $server = "ForumTest"
    $server = GUICtrlCreateTreeViewItem($server, $tree)
    $contextmenue = GUICtrlCreateContextMenu($server)
    $contextmenueitem1[1] = GUICtrlCreateMenuItem("Neuer Prozess",$contextmenue)
    $contextmenueitem2[1] = GUICtrlCreateMenuItem("Server löschen",$contextmenue)
    GUICtrlCreateMenuItem("",$contextmenue)
    $contextmenueitem4[1] = GUICtrlCreateMenuItem("Neuer Server",$contextmenue)

    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • Hallo,
    in Zeile 50 definierst du ein label, daß "über" dem Button liegt. wenn du die msg1 mal in die console schreibst, siehst du das....warum das label aber "über" dem nachher erstellten Button liegt, weiß ich nicht^^

    [autoit]

    $Label3 = GUICtrlCreateLabel("Neuer Prozess - " & $server , 64, 8, 220, 20)

    [/autoit]

    so funktionierts...
    ciao
    Andy