schliessen neues Fenster -> Fokus

  • Hallo, ich öffne aus meinem Hauptfenster ein neues Kind-Fenster, hierzu habe ich der Übersichthaber eine Funktion daraus gemacht:

    [autoit]


    func guiChildWindow()
    $guiChild = GuiCreate()
    do
    .
    .
    .
    until $msg = $GUI_EVENT_CLOSEGUI
    Delete($guiChild)
    endFunc

    [/autoit]

    schließe ich das Kind-Fenster muss ich im Hauptfenster zuerst auf das "rote X" klicken, damit ich im Hauptfenster eine Aktion durchführen kann (Button klicken) wie übergebe ich nach dem Schließen des Kind-Fensters den Fokus zurück an das Hauptfenster?

  • nehmt ihr auch Rücksicht auf einen Anfänger wie mich????
    der code ist bestimmt total schlecht sortiert, vom Stil er mies, usw *schäm*

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

    Func startGui()
    global $mainGui = GUIcreate("myGUI", 600, 600)

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

    $tab = GUICtrlCreateTab(-1,-1,600,600)
    $tabHavester = GUICtrlCreateTabItem("Havester")

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

    $labelSearchString = GUICtrlCreateLabel("Search String:",10,40,100,30)
    $textboxSearchString = GUICtrlCreateInput ("",120,40,300,20)

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

    $labelDelay = GUICtrlCreateLabel("Delay:",10,70,100,30)

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

    $textboxDelay = GUICtrlCreateInput ("2000",120,70,60,20)
    Global $checkboxStripToDomain = GUICtrlCreateCheckbox("strip to
    domain?",220,70)
    $checkboxBlacklist = GUICtrlCreateCheckbox("blacklist",20,100)
    $checkboxTldCom = GUICtrlCreateCheckbox(".com",90,100)
    $checkboxTldEdu = GUICtrlCreateCheckbox(".edu",140,100)
    $checkboxTldGov = GUICtrlCreateCheckbox(".gov",190,100)

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

    _GUICtrlComboBox_Create($tabHavester, "001,002,003", 200, 100,50,30)

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

    $buttonStartHarvest = GUIctrlcreatebutton("start", 440, 40,60,20)
    $buttonStopHarvest = GUIctrlcreatebutton("stop", 440, 65,60,20)
    $buttonSaveHarvest = GUIctrlcreatebutton("save", 520, 40,60,20)
    $buttonLoadHarvest = GUIctrlcreatebutton("load", 520, 65,60,20)
    $buttonExportHarvestCsv = GUIctrlcreatebutton("csv", 520, 330,60,30)
    $buttonExportHarvestDb = GUIctrlcreatebutton("project", 520, 365,60,30)

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

    $buttonBlacklistAdd = GUIctrlcreatebutton("add", 520, 425,60,20)
    $buttonBlacklistImport = GUIctrlcreatebutton("import", 520, 450,60,20)
    $buttonBlacklistRemove= GUIctrlcreatebutton("remove", 520, 475,60,20)
    $buttonBlacklistSelectAll= GUIctrlcreatebutton("all", 520, 510,60,20)
    $buttonBlacklistRemoveAll= GUIctrlcreatebutton("none", 520, 535,60,20)
    $buttonBlacklistReverseSelection= GUIctrlcreatebutton("invert",
    520, 560,60,20)

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

    Global $lietviewDbREcords = GUICtrlCreateListView
    ("#|url|TLD|PageRank|Date",15,145,490,250,$LVS_EX_CHECKBOXES)

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

    Global $lietviewHarvestBlacklist = GUICtrlCreateListView
    ("||url",15,425,490,160,-1,$LVS_EX_CHECKBOXES)
    getBlacklistRecords()
    ConsoleWrite (@CRLF & "Spaltenbreite::" & GUICtrlSendMsg
    ($lietviewHarvestBlacklist,$LVM_SETCOLUMNWIDTH,1,0) & @CRLF)

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

    GUICtrlCreateGroup ( "Harvest Url", 10,130,580,270)
    GUICtrlCreateGroup ( "Filter", 10,85,580,40)
    GUICtrlCreateGroup ( "Blacklist", 10, 410 ,580,180)

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

    $tabNing = GUICtrlCreateTabItem("Ning (beta)")
    $buttonStart = GUIctrlcreatebutton("start", 10, 30,120,30)
    $tabWebs = GUICtrlCreateTabItem("Webs (beta)")
    $tabGeneral = GUICtrlCreateTabItem("General")
    $labelSqlStatus = GUICtrlCreateLabel("no DB connection", 10, 30, 120,30)
    $lietviewDbREcords = GUICtrlCreateListView ("element|count",10,110,200,150)
    setDatabaseRecords($lietviewDbREcords)

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

    GUIsetstate(@sw_show)

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

    $msg = GUIgetmsg()

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

    $msg = GUIgetmsg()
    Switch $msg
    Case $buttonStart
    ConsoleWrite("start()")
    Case $GUI_EVENT_CLOSE
    ConsoleWrite("exit" & @CRLF)
    Exit
    Case $buttonStartHarvest
    ConsoleWrite("StartHarvest" & @CRLF)
    StartHarvest($textboxSearchString)
    Case $buttonSaveHarvest
    ConsoleWrite("saveGQuery()" & @CRLF)
    guiSaveGQuery(GUICtrlRead($textboxSearchString))
    Case $buttonLoadHarvest
    ConsoleWrite("$buttonLoadHarvest" & @CRLF)
    guiLoadGQuery($textboxSearchString)
    Case $buttonExportHarvestCsv
    ConsoleWrite("$buttonExportHarvestCsv" & @CRLF)
    Case $buttonExportHarvestDb
    ConsoleWrite("$buttonExportHarvestDb" & @CRLF)
    Case $buttonBlacklistAdd
    ConsoleWrite("$buttonBlacklistAdd" & @CRLF)
    guiAddBlacklist($lietviewHarvestBlacklist)
    Case $buttonBlacklistImport
    ConsoleWrite("$buttonBlacklistImport" & @CRLF)
    guiImportBlacklist($lietviewHarvestBlacklist)
    Case $buttonBlacklistRemove
    ConsoleWrite("$buttonBlacklistRemove" & @CRLF)
    deleteBlacklist($lietviewHarvestBlacklist)
    Case $buttonBlacklistSelectAll
    ConsoleWrite("$buttonBlacklistSelectAll" & @CRLF)
    selectAllListview($lietviewHarvestBlacklist)
    Case $buttonBlacklistRemoveAll
    ConsoleWrite("$buttonBlacklistRemoveAll" & @CRLF)
    selectNoneListview($lietviewHarvestBlacklist)
    Case $buttonBlacklistReverseSelection
    ConsoleWrite("$buttonBlacklistReverseSelection" & @CRLF)
    selectReverseListview($lietviewHarvestBlacklist)
    Endswitch
    WEnd
    EndFunc ; ==> startGui

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

    Func guiAddBlacklist($lietviewHarvestBlacklist)

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

    $guiAddBlacklist = GUIcreate("add blacklist", 300, 80)
    $labelAddBlacklist = GUICtrlCreateInput("",10,10,285,20)
    $buttonAddBlacklist = GUIctrlcreatebutton("add", 10, 40,60,30)
    $buttonCancelBlacklist= GUIctrlcreatebutton("cancel", 235, 40,60,30)

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

    GUIsetstate(@sw_show)

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

    Do
    $msg = GUIgetmsg($guiAddBlacklist)
    Switch $msg
    Case $labelAddblacklist
    ConsoleWrite("$buttonLoadGQuery" & @crlf)
    $query = "INSERT INTO blacklist (id,url) VALUES(NULL,'" &
    GUICtrlRead($labelAddBlacklist) & "')"
    ConsoleWrite($query & @crlf)
    xQuery($query)
    getBlacklistRecords()
    GUICtrlSetData($labelAddBlacklist,"")
    Case $buttonCancelBlacklist
    GUIDelete($guiAddBlacklist)
    Case $GUI_EVENT_CLOSE
    GUIDelete($guiAddBlacklist)
    Endswitch
    Until $msg = $GUI_EVENT_CLOSE
    getBlacklistRecords()
    GUIDelete($guiAddBlacklist)
    EndFunc; ==> guiAddBlacklist($textboxSearchString)

    [/autoit][autoit][/autoit][autoit][/autoit]
  • geht der Fokus nicht automatisch an das nächste "aktive" Fenster, wenn ich das Kind-Fenster zerstöre?
    Oder anders gefragt, muss ich in diesen Fällen immer mit ExitLoop aussteigen?

    ich habs noch nicht, die Schleife in guiAddBlacklist sollte doch mit betätigen des X eh beendet sein?!

  • Es geht nicht um den Fokus! Dein Script hängt in einer Schleife fest (oder in mehreren).

    (Da das ja immer noch nicht der komplette Code ist, koinnte ich es auch nicht testen).

    Allein schon diese Stelle:

    [autoit]


    Do
    ;...
    Swtich $msg
    ;...
    Case $buttonCancelBlacklist
    GUIDelete($guiAddBlacklist)
    Case $GUI_EVENT_CLOSE
    GUIDelete($guiAddBlacklist)
    Endswitch
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit]

    Lässt mich folgendes Vermuten:
    $GUI_EVENT_CLOSE wird ausgelöst. GUI wird gelöscht. Schleife wird aber nicht verlassen. es muss erst nochmal $GUI_EVENT_CLOSE ausgelöst werden, damit die Schleife verlassen wird ( Until $msg = $GUI_EVENT_CLOSE ). Erst dann reagiert das andere GUI erst, weil es wieder zu "seiner" Schleife zurückgekehrt ist.

    Lösungsvorschläge:
    1. Advanced Mode von GUIGetMsg (Guck in die Hilfe Datei ^^)
    2. OnEvent Mode statt GUIGetMsg
    3. Schleifen so verlassen:

    [autoit]

    Case $buttonCancelBlacklist, $GUI_EVENT_CLOSE
    GUIDelete($guiAddBlacklist)
    ExitLoop

    [/autoit]
  • Wenn ich mir die Scriptausschnitte anschaue, vermute ich auch einen Bedarf am OnEventmodus^^
    Weiterhin würde ich empfehlen, sämtliche Fenster beim Programmstart zu erstellen und dann nur noch bei Bedarf mittels

    [autoit]

    GuiSetState()

    [/autoit]

    ein- bzw. auszublenden @SW_ENABLE bzw SW_DISABLE.