Guten Morgen zusammen,
ich möchte gern eine zweite GUI einbinden. Das klappt auch soweit.
Nun zum Problem, wie bekomme ich das hin das ich die zweite GUI wieder schließen kann bzw. die Elemente der GUI reagieren.
AutoIt
#AutoIt3Wrapper_UseX64=y
#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>
#include <Array.au3>
#include <D:\Scripte\MS_AccessCom\Access UDF\Access_UDF.au3>
Global $dbname, $tblname001
; zum leichteren Zugriff auf die Attribute im URL-Array
Global Enum $eID, $eName, $eURL, $eGUI
;--------- MSAccess DB ------------
$dbname = @ScriptDir & "\Data.accdb"
$tblname001 = "Websites"
Global $Connection = _Start_Connection($dbname & ";")
Global $aURLArray = _Get_Records("SELECT * FROM " & $tblname001 & " Order By ID ASC " & ";"); ;Order By Sortierung ASC
_Close_Connection()
IF _ArrayMax($aURLArray, 0, 1) = "" Then
Exit
Else
;MsgBox(0,"1",$URL_Array[1][0])
EndIf
; aus dem Array abgeleitete Parameter
Global $nEntries = UBound($aURLArray, 1) - 1
; Layout-Parameter (Größen und Abstände der Buttons)
Global $iCols = 3, _ ; Anzahl der Spalten der Buttons
$iRows = Ceiling($nEntries / $iCols), _ ; Anzahl der Zeilen der Buttons
$iButtonWidth = 150, _ ; Breite eines Buttons
$iButtonHeight = 25, _ ; Höhe eines Buttons
$iButtonXStep = 15, _ ; horizontaler Abstand der Buttons
$iButtonYStep = 15, _ ; vertikaler Abstand der Buttons
$iMarginT = 35, _ ; Dicke des oberen Randes um die Button-Matrix
$iMarginB = 20, _ ; Dicke des unteren Randes um die Button-Matrix
$iMarginL = 20, _ ; Dicke des linken Randes um die Button-Matrix
$iMarginR = 20, _ ; Dicke des rechten Randes um die Button-Matrix
$iGUIWidth = $iMarginL + $iMarginR + $iCols * $iButtonWidth + ($iCols - 1) * $iButtonXStep, _ ; Breite des GUI
$iGUIHeight = $iMarginT + $iMarginB + $iRows * $iButtonHeight + ($iRows - 1) * $iButtonYStep ; Höhe des GUI
; GUI erstellen
Opt("GUIOnEventMode", 1)
$GUI = GUICreate("Website AutoLogin " & FileGetVersion(@ScriptName), $iGUIWidth, $iGUIHeight)
GUISetOnEvent($GUI_EVENT_CLOSE, _raus)
; Das Array durchgehen und die Buttons erstellen
Global $iPosX, $iPosY, $iButtonX, $iButtonY
For $i = 1 To $nEntries
; die Koordinaten des Buttons in der Button-Matrix
$iPosX = Mod($i - 1, $iCols)
$iPosY = Ceiling($i / $iCols) - 1
; die GUI-Koordinaten des Buttons
$iButtonX = $iMarginL + $iPosX * ($iButtonWidth + $iButtonXStep)
$iButtonY = $iMarginT + $iPosY * ($iButtonHeight + $iButtonYStep)
; Den Button selbst erstellen
GUICtrlCreateButton($aURLArray[$i][$eName], $iButtonX, $iButtonY, $iButtonWidth, $iButtonHeight)
; Verknüpfe Button mit Funktion _search
GUICtrlSetOnEvent(-1, _search)
Next
; GUI anzeigen
GUISetState(@SW_SHOW)
; Endlosschleife um GUI am Leben zu halten
Do
Sleep(100)
Until 0
; eigene Funktion, welche beim Klick auf einen Button ausgelöst wird
Func _search()
Local $sName = GUICtrlRead(@GUI_CtrlId)
Local $iPos = _ArraySearch($aURLArray, $sName, 1, 0, 1, 0, 0, $eName)
Local $sURL = $aURLArray[$iPos][$eURL]
Local $sGUI = $aURLArray[$iPos][$eGUI]
IF $sGUI = 1 Then ; Abfrage ob bei GUI 1 oder 0 Steht, bei 1 erzeuge zweite GUI
MsgBox(0,"info", "erzeuge Sub GUI")
_secGUI()
Else
MsgBox(0,"Array Position", "Element: " & $sName & @CRLF & "Position: " & $iPos & @CRLF & "URL: " & $sURL)
EndIf
EndFunc
; Funktion zum Beenden des GUI
Func _raus()
Exit
EndFunc
Func _secGUI()
$secGUI = GUICreate("Login", 200, 160)
GUISetBkColor(0xC0C0B2)
GUICtrlCreateLabel("Agenturnummer:", 15, 15, 80, 20)
;_get_logins()
$secCombo = GUICtrlCreateCombo("", 15, 35, 150, 20) ; create first item
;GUICtrlSetData($Combo, "|" & $String, "")
$secButton = GUICtrlCreateButton("Login", 50, 120, 73, 25)
GUISetState(@SW_SHOW)
While 1
;GUISetOnEvent($GUI_EVENT_CLOSE, _raus) ; fubnktioniert in der While Schleife auch nicht
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $secButton
MsgBox(0,"","Button Test")
EndSwitch
WEnd
EndFunc
Alles anzeigen
Danke
Gruß Marcel