1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. gmmg

Beiträge von gmmg

  • GUI - dynamische Button mit Daten aus DB erstellen

    • gmmg
    • 17. Mai 2024 um 14:21

    OK, habe jetzt die folgende Func hinzugefügt und habe nach dem erstellen des Labels die Zeile GUICtrlSetOnEvent(-1, _admin_config) eingefügt.

    Wäre das so korrekt oder lässt sich das auch anders lösen?

    Func _admin_config()
    MsgBox(0,"","test")
    EndFunc


    AutoIt
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    
    ; zum leichteren Zugriff auf die Attribute im URL-Array
    Global Enum $eID, $eName, $eURL, $eGUI
    
    ; Das Eingabearray
    Global $aURLArray[][4] = [["ID", "Name", "URL", "GUI"], [1,"AutoIt","www.autoit.de", 0], [2,"Heise","www.heise.de", 1], [3,"Test1","www.test1.de", 0], [4,"Test2","www.test2.de", 0], [5,"Test3","www.test3.de", 0], [6,"Test4","www.test4.de", 0], [7,"Test5","www.test5.de", 1], [8,"Test6","www.test6.de", 0], [9,"Test7","www.test7.de", 0]]
    
    ; 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      = 30, _                          ; 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
    
    ; das GUI erstellen
    Opt("GUIOnEventMode", 1)
    $GUI = GUICreate("Website AutoLogin  " & FileGetVersion(@ScriptName), $iGUIWidth, $iGUIHeight)
    GUISetOnEvent($GUI_EVENT_CLOSE, _raus)
    
    $label = GUICtrlCreateLabel("admin config",55,8,100,25)
    GUICtrlSetFont($label, 8, 300, 0, "Arial")
    ;IF @UserName <> "userxyz" Then GUICtrlSetState($label, $GUI_Hide)
    GUICtrlSetOnEvent(-1, _admin_config)
    
    ; 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]
    
    	MsgBox(0,"Array Position", "Element: " & $sName & @CRLF & "Position: " & $iPos & @CRLF & "URL: " & $sURL)
    EndFunc
    
    ; Funktion zum Beenden des GUI
    Func _raus()
    	Exit
    EndFunc
    
    ; Funktion für den Admin Config Bereich
    Func _admin_config()
    	MsgBox(0,"","test")
    EndFunc
    Alles anzeigen

    Gruß Marcel

  • GUI - dynamische Button mit Daten aus DB erstellen

    • gmmg
    • 17. Mai 2024 um 14:18

    Hallo Zusammen,

    benötige nochmal eure Hilfe. Ich habe der GUI noch ein Label "admin config" hinzugefügt.

    Hier komme ich nun nicht weiter, wie ich den Aufruf starte, damit es klick bar ist. Bei einer Switch Endswitch würde ich das im Case zweig machen aber hier?


    C
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    
    ; zum leichteren Zugriff auf die Attribute im URL-Array
    Global Enum $eID, $eName, $eURL, $eGUI
    
    ; Das Eingabearray
    Global $aURLArray[][4] = [["ID", "Name", "URL", "GUI"], [1,"AutoIt","www.autoit.de", 0], [2,"Heise","www.heise.de", 1], [3,"Test1","www.test1.de", 0], [4,"Test2","www.test2.de", 0], [5,"Test3","www.test3.de", 0], [6,"Test4","www.test4.de", 0], [7,"Test5","www.test5.de", 1], [8,"Test6","www.test6.de", 0], [9,"Test7","www.test7.de", 0]]
    
    ; 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      = 30, _                          ; 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
    
    ; das GUI erstellen
    Opt("GUIOnEventMode", 1)
    $GUI = GUICreate("Website AutoLogin  " & FileGetVersion(@ScriptName), $iGUIWidth, $iGUIHeight)
    GUISetOnEvent($GUI_EVENT_CLOSE, _raus)
    
    $label = GUICtrlCreateLabel("admin config",55,8,100,25)
    GUICtrlSetFont($label, 8, 300, 0, "Arial")
    ;IF @UserName <> "userxyz" Then GUICtrlSetState($label, $GUI_Hide)
    
    ; 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]
    
    	MsgBox(0,"Array Position", "Element: " & $sName & @CRLF & "Position: " & $iPos & @CRLF & "URL: " & $sURL)
    EndFunc
    
    ; Funktion zum Beenden des GUI
    Func _raus()
    	Exit
    EndFunc
    Alles anzeigen

    Danke

    Gruß Marcel

  • MS Access UDF

    • gmmg
    • 17. Mai 2024 um 11:23

    Für mein Script habe ich jetzt in der Function _Start_Connection die folgende Anpassung vorgenommen.

    Die Zeile If $PassWord Then $Connection_String &= "Password=" & $PassWord & ";" in If $PassWord Then $Connection_String &= ";Jet OLEDB:Database Password=" & $PassWord & ";" geändert.

    AutoIt
    Func _Start_Connection($DBPath, $UserName = "", $PassWord = "")
    	If Not IsObj($objConnection) Then Return -1
    	$Connection_String = $sDataProvider & $DBPath & ";"
    	If $UserName Then $Connection_String &= "User ID=" & $UserName & ";"
        ;If $PassWord Then $Connection_String &= "Password=" & $PassWord & ";"
    	If $PassWord Then $Connection_String &= ";Jet OLEDB:Database Password=" & $PassWord & ";"
    
    	;$Connection_String = "Provider=Microsoft.ACE.OLEDB.12.0;Data source=" & $DBPath & ";Jet OLEDB:Database Password=123456789"
    	;$Connection_String = "Provider=Microsoft.ACE.OLEDB.12.0;Data source=" & $DBPath & ";Jet OLEDB:Database Password=" & $PassWord & ";"
    
    	$objConnection.Open($Connection_String)
    	If @error Then  $ConnStatus = "Failed " & @error
    	Return $ConnStatus
    EndFunc
    Alles anzeigen

    KR,

    Marcel

  • MS Access UDF

    • gmmg
    • 17. Mai 2024 um 11:05

    Bitte den Post in die Rubrik "Datenbanken" verschieben.

    Danke

  • MS Access UDF

    • gmmg
    • 17. Mai 2024 um 09:03

    Hallo Zusammen,

    Ich verwende Access UDF ( https://www.autoitscript.com/forum/topic/177556-yet-another-access-udf-but-different-accdb-only) und möchte eine passwortgeschützte „accdb“-Datenbank öffnen. Mit der benutzten Access UDF klappt das im Standard nicht, obwohl mit .

    Meine Lösung, ich habe den Connection_String in der Funktion angepasst.
    $Connection_String = "Provider=Microsoft.ACE.OLEDB.12.0;Data source=" & $DBPath & ";Jet OLEDB:Database Password=" & $PassWord

    Wie kann ich das nun sauber in die UDF integrieren? Habe im engl. Forum da auch bereits angefragt, da ja sicher andere auch das Problem haben.

    AutoIt
    Global $Connection = _Start_Connection($dbname, "", "password")  ; mein codeabschnitt im Script
    
    
    ; folgend die Funktion in der access.udf
    
    #Region - Function _Start_Connection
    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _Start_Connection
    ; Description ...: This function will start or open a new connection.
    ; Syntax ........: _Start_Connection($DBPath [, $UserName = ""[, $PassWord = ""]])
    ; Parameters ....: $DBPath              - Path of your Access database file.(with *.accdb extension and a ";" sign at the end")
    ;                  $UserName            - [optional] Username of your database . Default is "".
    ;                  $PassWord            - [optional] Password of your database. Default is "".
    ; Return values .: String. If connection is opneed then, it will be "OK". And if it is failed then, "Failed " & @error
    ; Author ........: spudw2k. I've made a little change to this function
    ; Modified ......: 2015 sep
    ; Remarks .......:
    ; Related .......:
    ; Link ..........:
    ; Example .......: _Start_Connection(@ScriptDir & "\TestDB.accdb;")
    ; ===============================================================================================================================
    Func _Start_Connection($DBPath, $UserName = "", $PassWord = "")
    	If Not IsObj($objConnection) Then Return -1
    	$Connection_String = $sDataProvider & $DBPath & ";"
    	If $UserName Then $Connection_String &= "User ID=" & $UserName & ";"
        If $PassWord Then $Connection_String &= "Password=" & $PassWord & ";"
    
    	; mit dem angepassten String funktioniert das öffnen
    	$Connection_String = "Provider=Microsoft.ACE.OLEDB.12.0;Data source=" & $DBPath & ";Jet OLEDB:Database Password=" & $PassWord
    
    	$objConnection.Open($Connection_String)
    	If @error Then  $ConnStatus = "Failed " & @error
    	Return $ConnStatus
    EndFunc
    #EndRegion
    Alles anzeigen

    Danke

    Gruß Marcel

  • Webdriver für Chrome

    • gmmg
    • 16. Mai 2024 um 14:18

    Hallo Sven,

    danke für die Hinweise. Ich schau mir das an und gebe zeitnah eine Rückmeldung.

    Danke

    Gruß Marcel

  • Webdriver für Chrome

    • gmmg
    • 16. Mai 2024 um 11:08

    Hallo Sven,

    ich habe nochmal eine Frage. Wenn ich das _WD_UpdateDriver nutze, dann dauert es immer einen Moment, bis danach der Browser öffnet.

    Hast du da bereits etwas umgesetzt, um den Status / Fortschritt des Updates anzuzeigen? Meine Idee war jetzt, vor und nach dem _WD_UpdateDriver einen TrayTip anzuzeigen, damit der User hier weiß, das noch was passiert.

    Danke

    Gruß Marcel

  • MSSQL.au3 => Frage zu _MSSQL_Con

    • gmmg
    • 14. Mai 2024 um 12:32

    Hi Code4Fun,

    hier mal ein Beispiel aus meinem SQL Script.

    AutoIt
    #include <MSSQL.au3>
    #include <Array.au3>
    #include <WindowsConstants.au3>
    
    local $oMyError
    
    $sserver = "servername"
    $susername = "user"
    $spassword = "pass"
    $sdatabase = "db"
    
    
    $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
    $sqlCon = _MSSQL_Con($sserver, $susername, $spassword, $sdatabase)
    
    $ergebnis = _MSSQL_Query($sqlCon, "SELECT id, name FROM teilprojekt where projektid = 110 and geloeschtam = 0;")
    
    $array = $ergebnis.GetRows
    If Not IsArray($array) Then
    	MsgBox(0, 'Array', 'kein Ergebnis')
    	Exit
    EndIf
    _ArraySort($array, 0, 0, 0, 0)
    _ArrayDisplay($array)
    
    For $i = 1 to UBound($array) -1
    	;MsgBox(0,"",$array[$i][0])
    	;_MSSQL_AddRecord($oConnectionObj, $sTable, $Values, $UNIQUE, $condition)
    	;-'Value1', 'Value2', 'Value3', 'Value4', 'Value5', 'Value n'
    	$values = "'26931'" & ",'"&$array[$i][0]&"',100"
    	;MsgBox(0,"",$values)
    	_MSSQL_AddRecord($sqlCon, "zustaendigkeit", $values)
    Next
    
    _MSSQL_End($sqlCon)
    
    
    Func MyErrFunc()
        Local $HexNumber
        $HexNumber = Hex($oMyError.number, 8)
        MsgBox(0, "COM Error Test", "We intercepted a COM Error !" & @CRLF & @CRLF & _
                "err.description is: " & @TAB & $oMyError.description & @CRLF & _
                "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
                "err.number is: " & @TAB & $HexNumber & @CRLF & _
                "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
                "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
                "err.source is: " & @TAB & $oMyError.source & @CRLF & _
                "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
                "err.helpcontext is: " & @TAB & $oMyError.helpcontext _
                )
        SetError(1); to check for after this function returns
    EndFunc   ;==>MyErrFunc
    Alles anzeigen

    Gruß Marcel

  • WebDriver Projekt "au3WebDriver": Umfrage welche Browser/Driver du automatisierst/steuerst/testest?

    • gmmg
    • 8. Mai 2024 um 12:13

    erledigt :)

  • Webdriver für Chrome

    • gmmg
    • 8. Mai 2024 um 07:57

    Guten Morgen Sven,

    habe es eben getestet, bringt aber den folgenden Fehler.

    __WD_Post ==> Javascript Exception [23] : HTTP status = 500
    _WD_ExecuteScript ==> Javascript Exception [23] : javascript error: Cannot read properties of null (reading 'shadowRoot')
    (Session info: chrome=124.0.6367.119)
    + @error = 0
    + @error = 0
    __WD_Post ==> Element interaction issue [14] : HTTP status = 400
    _WD_ElementAction ==> Element interaction issue [14] : Parameters: Command=click Option=Default

    Gruß Marcel

  • Webdriver für Chrome

    • gmmg
    • 7. Mai 2024 um 15:50

    Jetzt wo du das Shadow Root erwähnt hast, habe ich im engl. Forum mal nach Beispielen gesucht und habe das für mein Beispiel um setzten können.

    AutoIt
    		$sRoot = _WD_GetShadowRoot($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='usercentrics-root']")
    		$sElement_cookie = _WD_FindElement($sSession, $_WD_LOCATOR_ByCSSSelector, ".sc-dcJsrY.dWLoUN", $sRoot, "", True)
    
    		MsgBox(0,"", $sElement_cookie)
    
    		If @error = $_WD_ERROR_Success Then
    			ConsoleWrite("test")
    			_WD_ElementAction($sSession, $sElement_cookie, 'click')
    			Sleep(500)
    		EndIf


    Gruß Marcel

  • Webdriver für Chrome

    • gmmg
    • 7. Mai 2024 um 15:39

    Hallo Sven,

    ja, den xpath hab ich mir per Browser anzeigen lassen.

    Bei der ersten Seite würde ich den Cookie Button "Alles Akzeptieren" benötigen.

    Den Link schau ich mir mal an :)

    Danke für dein Unterstützung.

    Gruß Marcel

  • Webdriver für Chrome

    • gmmg
    • 7. Mai 2024 um 13:39

    Hallo SOLVE-SMART,

    bei einer Website "https://www.ftigroup-service.de/home" habe ich das Problem, dass ich das Cookie Consents Fenster nicht bestätigen kann.

    Hast du da eine Idee?

    Hier mal mein Beispiel Code:

    AutoIt
    	;accept cookie policy
    	
    	;Test1   //*[@id="uc-center-container"]/div[2]/div/div[1]/div/button[2]
    	;Test2   /div/div/div[2]/div/div[2]/div/div[2]/div/div[1]/div/button[2]
    
    	IF $iWD_Element_cookie <> Null Then ; wenn die variable iWD_Element_cookie einen Wert in der DB hat, führe Schleife aus
    		MsgBox(0,"", $iWD_Element_cookie)
    		Sleep(3000)
    
    		$sElement_cookie = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='uc-center-container']/div[2]/div/div[1]/div/button[2]")
            _WD_ElementAction($sSession, $sElement_cookie, "Click")
    
    		MsgBox(0,"", $sElement_cookie)
    
    	EndIf
    Alles anzeigen

    Bei der Lotto-Thüringen habe ich als Beispiel keine Probleme mit dem Cookie Fenster.

    AutoIt
    ;Scriptausschnitt:
    $url = "https://www.lotto-thueringen.de/"
    $sElement_cookie = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='ccm-widget']/div/div[2]/div[2]/button[2]")
    MsgBox(0,"", $sElement_cookie)
    
    If @error = $_WD_ERROR_Success Then
    	ConsoleWrite("test")
    	_WD_ElementAction($sSession, $sElement_cookie, 'click')
    	Sleep(500)
    EndIf


    Danke

    Gruß Marcel

  • GUI - dynamische Button mit Daten aus DB erstellen

    • gmmg
    • 3. Mai 2024 um 13:59

    Moombas im Script gibt es sicherlich einige Sachen die sich verbessern lassen.

    Der nächste Step im Script ist, die Übergabe der Daten an den Chrome Webdriver für den automatischen Login. Logindaten kommen aus der DB.

    Die entsprechenden WD_Elemente habe ich bereits in anderen Scripten die ja in diesem einen zusammengefasst werden sollen. Eventuell macht es Sinn die Elemente auch in der DB zu speichern und dann entsprechend auszulesen.

    Aber jetzt ist erst mal Wochenende :)

    Gruß Marcel

  • GUI - dynamische Button mit Daten aus DB erstellen

    • gmmg
    • 3. Mai 2024 um 12:50

    Moombas

    $sName wird in der search Funktion im Script Post #33 ersichtlich gefüllt.

    Global $sName = GUICtrlRead(@GUI_CtrlId)

    Die Zeile $String = $String, ist im Script auskommentiert. Da hatte ich verschiedenes getestet.

    Hab es oben mal angepasst.

  • GUI - dynamische Button mit Daten aus DB erstellen

    • gmmg
    • 3. Mai 2024 um 10:35

    Ich frage jetzt in der If Schleife den Button Name ab. Das sollte mir für den Zweck ausreichen.


    AutoIt
    Func _get_logins()
    
    	For $i = 1 to UBound($aDataArray) -1
    
    		If Not @error Then
    			;MsgBox(0,"",$sDisplayName)
    			IF $sName = "Button-xyz" Then
    				
    				$String &= $aDataArray[$i][1] & " *** " & $aDataArray[$i][2] & "|"  ;String 2 für combobox
    			Else
    				$String &= $aDataArray[$i][0] & "|"  ;String 1 für combobox
    			EndIf
    		EndIf
    	Next
    	;$String = $String
    	;MsgBox (0,"",$String)
    
    EndFunc
    Alles anzeigen
  • GUI - dynamische Button mit Daten aus DB erstellen

    • gmmg
    • 3. Mai 2024 um 09:45

    Hallo Zusammen,

    wie kann ich es am Besten lösen, dass wenn ich String 1 oder String 2 für eine Combobox in der Funktion benötige?

    Mein Gedanke war jetzt in der DB ein Feld hinzuzufügen und dann mit einen numerischen Wert zu füllen, den ich dann der Funktion übergebe und in einer IF Abfrage nutzen kann.

    AutoIt
    Func _get_logins()
    
    	For $i = 1 to UBound($aDataArray) -1
    
    		If Not @error Then
    			;MsgBox(0,"",$sDisplayName)
    			$String &= $aDataArray[$i][0] & "|"  ;String 1 für combobox
    			$String &= $aDataArray[$i][1] & " *** " & $aDataArray[$i][2] & "|"  ;String 2 für combobox
    		EndIf
    	Next
    	$String = $String
    	;MsgBox (0,"",$String)
    
    EndFunc
    Alles anzeigen

    Gruß Marcel

  • GUI - dynamische Button mit Daten aus DB erstellen

    • gmmg
    • 30. April 2024 um 14:54

    Moombas Danke für die Antwort. Schau ich mir auch an.

    Will aber vorher noch das Auslesen der Daten aus der DB für die zweite GUI einbauen.

    Allen schon mal einen schönen Feiertag :)

    Gruß Marcel

  • GUI - dynamische Button mit Daten aus DB erstellen

    • gmmg
    • 30. April 2024 um 12:24

    Danke :)

  • GUI - dynamische Button mit Daten aus DB erstellen

    • gmmg
    • 30. April 2024 um 10:36

    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

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™