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. Moombas

Beiträge von Moombas

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 15:46

    gmmg Yepp, in Zeile 23 (bei meinem letzten Script) bitte ersetzen: Global $ButtonRows = Ceiling((Ubound($DBTESTARRAY) -1)/ $ButtonCols) .

    Wegen deiner Frage zu dem von AspirinJunkie: Gar nicht, zumindest nicht ohne gleichzeitig die Abstände aller Buttons zueinander zu ändern, da er das hier komplett auf Gleichmäßigkeit gelegt hat.

    Meine Aussage war falsch, Siehe Antwort von SolveSmart ;)

    Bei meinem Code kannst du bei folgendem Code:

    AutoIt
    Local Const $aCols = [2, 30, 140]
    Local Const $aRows = [2, 30,  40]

    Einfach die 30 durch was anderes ersetzen.

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 15:30

    Naja, wenn im Array aus der DB ein 10. Button dazu kommt. müsste eigentlich eine weitere Reihe erzeigt werden.

    Habe aber eben festgestellt, das das bei meinem Skript einen Fehler wirft.

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 15:14

    Alina : Wie gesagt das war ein bisschen QuD (Quick und Dirty). Sicherlich ginge das auch, genauso wie du bestimmt auch immer auf das Basis Array zurückgreifen könntest ohne das Zwischenarray. Ist halt die Frage was man machen will. Die Anzahl der Buttons etc. richtet sich ja danach wieviele Zeilen es gibt und wieviele Spalten man will, der Rest errechnet sich einfach.

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 15:07

    Im Prinzip müsstest du das so können (konzentriere mich nur auf den Search):

    AutoIt
    Case 1 To $Button1[$Button1[0]]
    			If _Search2($DBTESTARRAY, $msg, 3) = 1 then _Create_GUI_2()
    			Shellexecute(_Search($2DArrayWithButtonData, $msg))
    ;....
    Func _search2($aArray, $ID, $Col)
    Local Const $Row = _ArraySearch($aArray, GUICtrlRead($ID), 0, 0, 0, 1, 0, Default, False)
    	Return $aArray[$Row][$Col]
    EndFunc
  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 14:18

    Auch wenn AspirinJunkie hier die wohl bessere Variante gepostet hat, möchte ich meine angepasste (mit der Test DB als Array) hier nochmal kurz anbringen :D :

    AutoIt
    Opt('MustDeclareVars', 1)
    #AutoIt3Wrapper_UseX64=y
    
    
    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <Array.au3>
    ;~ #include <D:\Scripte\MS_AccessCom\Access UDF\Access_UDF.au3>
    
    Global $URL_Array_pos
    Global $msg, $GUI1, $Button1[1] = [0]
    Global Const $ButtonCols = 3
    Global $DBTESTARRAY[10][4] = [['ID',   'Name',           'URL', 'GUI'], _
    							  [   1, 'Autoit', 'www.Autoit.de',     0], _
    							  [	  2, 'Heise' , 'www.Heise.de' ,     1], _
    							  [	  3, 'Test 1', 'www.test1.de' ,     0], _
    							  [	  4, 'Test 2', 'www.test2.de' ,     0], _
    							  [	  5, 'Test 3', 'www.test3.de' ,     0], _
    							  [	  6, 'Test 4', 'www.test4.de' ,     0], _
    							  [	  7, 'Test 5', 'www.test5.de' ,     1], _
    							  [	  8, 'Test 6', 'www.test6.de' ,     0], _
    							  [	  9, 'Test 7', 'www.test7.de' ,     0]]
    Global $ButtonRows = Ceiling((Ubound($DBTESTARRAY) -1)/ $ButtonCols)
    Global $2DArrayWithButtonData[$ButtonRows][$ButtonCols] ;= [['www.AutoIt.de','www.Heise.de','www.test1.de'],['www.test2.de','www.test3.de','www.test4.de'], ['www.test5.de','www.test6.de','www.test7.de']] ; Texte
    
    _Data2Array($DBTESTARRAY)
    _GUI_1_Create()
    
    While 1
    	$msg = GUIGetMsg()
    	Switch $msg
    
    		Case $GUI_EVENT_MINIMIZE
    
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case 1 To $Button1[$Button1[0]]
    			Shellexecute(_Search($2DArrayWithButtonData, $msg))
    	EndSwitch
    WEnd
    
    
    Func _GUI_1_Create()
    Local $ID
    Local Const $BWidth  = 130
    Local Const $BHeight = 25
    Local Const $iCols = Ubound($2DArrayWithButtonData, $UBOUND_COLUMNS)
    Local Const $iRows = Ubound($2DArrayWithButtonData, $UBOUND_ROWS)
    Local Const $aCols = [2, 30, 140]
    Local Const $aRows = [2, 30,  40]
    	$GUI1 = GUICreate("Website AutoLogin  " & FileGetVersion(@ScriptName), 474, 257)
    	#Region ### Create Button dynamisch
    
    	For $Col = 1 to $iCols
    		For $Row = 1 to $iRows
    			If $2DArrayWithButtonData[$Row - 1][$Col - 1] <> '' then
    				$ID = GUICtrlCreateButton(StringSplit($2DArrayWithButtonData[$Row - 1][$Col - 1], '.')[2], $aCols[1] + (($Col-1)*$aCols[2]), $aRows[1] + (($Row-1)*$aRows[2]), $BWidth, $BHeight)
    				_ArrayAdd($Button1, $ID, $Button1[0])
    			EndIf
    		Next
    	Next
    	$Button1[0] = UBound($Button1) - 1
    ;~ 	_ArrayDisplay($Button1)
    ;~ 	_ArrayDisplay($2DArrayWithButtonLink)
    
    	#EndRegion ### Create Button
    	GUISetState(@SW_SHOW)
    EndFunc
    
    Func _Data2Array($aData)
    Local $Colcounter = 0, $RowCounter = 0
    Local Const $Col  = _ArraySearch($aData, 'URL', Default, Default, Default, Default, Default, Default, True)
    Local Const $Rows = Ubound($aData) - 1
    	_ArrayDisplay($aData)
    
    	For $Row = 1 to $Rows
    		$2DArrayWithButtonData[$RowCounter][$Colcounter] = $aData[$Row][$Col]
    		$Colcounter += 1
    		If $Colcounter >= $ButtonCols Then
    			$Colcounter = 0
    			$RowCounter += 1
    		Endif
    	Next
    EndFunc
    
    Func _search($aArray, $ID)
    Local Const $Col = _ArraySearch($aArray, GUICtrlRead($ID), 0, 0, 0, 1, 0, Default, True)
    Local Const $Row = _ArraySearch($aArray, GUICtrlRead($ID), 0, 0, 0, 1, 0, Default, False)
    	Return $aArray[$Row][$Col]
    EndFunc
    Alles anzeigen
  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 13:38

    Das Problem ist das du dein Array mit den Daten aus der DB erst in das andere Umschreiben musst und nicht direkt verwenden kannst.

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 13:28

    Das liegt daran, das dies nicht vorgesehen ist.

    Ich habe es so gemacht, das der erste Button auf 30, 30 gesetzt wird und dann immer 140 dazu addiert werden, halt dynamisch die Positionen gesetzt werden. Warum solltest du auf einmal bei 2 Anfangen?

    Wenn das so ist (also immer), muss ein Offset eingetragen werden.

    Also soll das immer bei 2 anfangen? oder gar variabel sein?
    Ich denke das das bei meiner Variant nicht möglich wäre.

    Ich denke eher das du dann die entsprechenden Daten im $2DArrayWithButtonData beim Befüllen behandeln musst.

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 13:23

    Im Prinzip könntest du sogar auf den Anzeige Text verzichten und nur den Link angeben in dem 2D Array.
    Den Anzeigetext, würde ich dann per StringSplit() extrahieren und somit nur 1 zu pflegendes Array ergeben:

    AutoIt
    Opt('MustDeclareVars', 1)
    #AutoIt3Wrapper_UseX64=y
    
    
    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <Array.au3>
    ;~ #include <D:\Scripte\MS_AccessCom\Access UDF\Access_UDF.au3>
    
    Global $URL_Array_pos
    Global $msg, $GUI1, $Button1[1] = [0]
    Global Const $2DArrayWithButtonData[3][3] = [['www.AutoIt.de','www.Heise.de','www.test1.de'],['www.test2.de','www.test3.de','www.test4.de'], ['www.test5.de','www.test6.de','www.test7.de']] ; Texte
    
    _GUI_1_Create()
    
    While 1
    	$msg = GUIGetMsg()
    	Switch $msg
    
    		Case $GUI_EVENT_MINIMIZE
    
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case 1 To $Button1[$Button1[0]]
    			Shellexecute(_Search($msg))
    	EndSwitch
    WEnd
    
    
    Func _GUI_1_Create()
    Local $ID
    Local Const $Offset = 0
    Local Const $BWidth  = 130
    Local Const $BHeight = 25
    Local Const $iCols = Ubound($2DArrayWithButtonData, $UBOUND_COLUMNS)
    Local Const $iRows = Ubound($2DArrayWithButtonData, $UBOUND_ROWS)
    Local Const $aCols = [2, 30, 140]
    Local Const $aRows = [2, 30,  40]
    	$GUI1 = GUICreate("Website AutoLogin  " & FileGetVersion(@ScriptName), 474, 257)
    	#Region ### Create Button dynamisch
    
    	For $Col = 1 to $iCols
    		For $Row = 1 to $iRows
    			If $2DArrayWithButtonData[$Row - 1][$Col - 1] <> '' then
    				$ID = GUICtrlCreateButton(StringSplit($2DArrayWithButtonData[$Row - 1][$Col - 1], '.')[2], $aCols[1] + (($Col-1)*$aCols[2]), $aRows[1] + (($Row-1)*$aRows[2]), $BWidth, $BHeight)
    				_ArrayAdd($Button1, $ID, $Button1[0])
    			EndIf
    		Next
    	Next
    	$Button1[0] = UBound($Button1) - 1
    ;~ 	_ArrayDisplay($Button1)
    ;~ 	_ArrayDisplay($2DArrayWithButtonLink)
    
    	#EndRegion ### Create Button
    	GUISetState(@SW_SHOW)
    EndFunc
    
    Func _search($ID)
    Local Const $Col = _ArraySearch($2DArrayWithButtonData, GUICtrlRead($msg), 0, 0, 0, 1, 0, Default, True)
    Local Const $Row = _ArraySearch($2DArrayWithButtonData, GUICtrlRead($msg), 0, 0, 0, 1, 0, Default, False)
    	Return $2DArrayWithButtonData[$Row][$Col]
    EndFunc
    Alles anzeigen
  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 13:01

    Das Shellexecute war nur zum Testen/veranschaulichen.

    Auch musst du eine Access DB wieder einbinden und entsprechend die beiden Arrays (für die Namen bzw. Links) damit erstellen.

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 12:35

    Hier nochmal eine leicht andere Variante um die Links zu speichern/erhalten:

    AutoIt
    Opt('MustDeclareVars', 1)
    #AutoIt3Wrapper_UseX64=y
    
    
    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <Array.au3>
    ;~ #include <D:\Scripte\MS_AccessCom\Access UDF\Access_UDF.au3>
    
    Global $URL_Array_pos
    Global $msg, $GUI1, $Button1[1] = [0]
    Global Const $2DArrayWithButtonData[3][3] = [['R1B1','R1B2','R1B3'],['R2B1','R2B2','R2B3'], ['R3B1','R3B2','R3B3']] ; Texte
    Global $2DArrayWithButtonLink[9][2]    = [['', 'www.autoit.de'], ['', 'www.heise.de'], ['', 'www.Google.de'], ['', 'www.Google.de'], ['', 'www.Google.de'], ['', 'www.Google.de'], ['', 'www.Google.de'], ['', 'www.Google.de'], ['', 'www.Google.de']]
    
    _GUI_1_Create()
    
    While 1
    	$msg = GUIGetMsg()
    	Switch $msg
    
    		Case $GUI_EVENT_MINIMIZE
    
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case 1 To $Button1[$Button1[0]]
    			Shellexecute($2DArrayWithButtonLink[_ArraySearch($2DArrayWithButtonLink, $msg)][1])
    	EndSwitch
    WEnd
    
    
    Func _GUI_1_Create()
    Local $ID, $Counter = 0
    Local Const $BWidth  = 130
    Local Const $BHeight = 25
    Local Const $iCols = Ubound($2DArrayWithButtonData, $UBOUND_COLUMNS)
    Local Const $iRows = Ubound($2DArrayWithButtonData, $UBOUND_ROWS)
    Local Const $aCols = [2, 30, 140]
    Local Const $aRows = [2, 30,  40]
    	$GUI1 = GUICreate("Website AutoLogin  " & FileGetVersion(@ScriptName), 474, 257)
    	#Region ### Create Button dynamisch
    
    	For $Col = 1 to $iCols
    		For $Row = 1 to $iRows
    			$ID = GUICtrlCreateButton($2DArrayWithButtonData[$Row - 1][$Col - 1], $aCols[1] + (($Col-1)*$aCols[2]), $aRows[1] + (($Row-1)*$aRows[2]), $BWidth, $BHeight)
    			_ArrayAdd($Button1, $ID, $Button1[0])
    			$2DArrayWithButtonLink[$Counter][0] = $ID
    			$Counter += 1
    		Next
    	Next
    	$Button1[0] = UBound($Button1) - 1
    ;~ 	_ArrayDisplay($Button1)
    ;~ 	_ArrayDisplay($2DArrayWithButtonLink)
    
    	#EndRegion ### Create Button
    	GUISetState(@SW_SHOW)
    EndFunc
    Alles anzeigen
  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 12:03

    Ich habe dir mal ein QuD Beispiel zusammengezimmert.

    Du musst "nur" die Daten für die Buttons entsprechend in den Arrays pflegen: 1 für den angezeigten Text, 1 für den Link

    AutoIt
    Opt('MustDeclareVars', 1)
    #AutoIt3Wrapper_UseX64=y
    
    
    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <Array.au3>
    ;~ #include <D:\Scripte\MS_AccessCom\Access UDF\Access_UDF.au3>
    
    Global $URL_Array_pos
    Global $msg, $GUI1, $Button1[1] = [0]
    Global Const $2DArrayWithButtonData[3][3] = [['R1B1','R1B2','R1B3'],['R2B1','R2B2','R2B3'], ['R3B1','R3B2','R3B3']] ; Texte
    Global Const $1DArrayWithButtonLink[9]    = ['www.autoit.de','www.heise.de','www.Google.de','www.Google.de','www.Google.de','www.Google.de', 'www.Google.de','www.Google.de','www.Google.de']
    
    _GUI_1_Create()
    
    While 1
    	$msg = GUIGetMsg()
    	Switch $msg
    
    		Case $GUI_EVENT_MINIMIZE
    
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case 1 To $Button1[$Button1[0]]
    			ShellExecute($1DArrayWithButtonLink[$msg + (1 - $Button1[1]) -1])
    	EndSwitch
    WEnd
    
    
    Func _GUI_1_Create()
    Local $ID
    Local Const $BWidth  = 130
    Local Const $BHeight = 25
    Local Const $iCols = Ubound($2DArrayWithButtonData, $UBOUND_COLUMNS)
    Local Const $iRows = Ubound($2DArrayWithButtonData, $UBOUND_ROWS)
    Local Const $aCols = [2, 30, 140]
    Local Const $aRows = [2, 30,  40]
    	$GUI1 = GUICreate("Website AutoLogin  " & FileGetVersion(@ScriptName), 474, 257)
    	#Region ### Create Button dynamisch
    
    	For $Col = 1 to $iCols
    		For $Row = 1 to $iRows
    			$ID = GUICtrlCreateButton($2DArrayWithButtonData[$Row - 1][$Col - 1], $aCols[1] + (($Col-1)*$aCols[2]), $aRows[1] + (($Row-1)*$aRows[2]), $BWidth, $BHeight)
    			_ArrayAdd($Button1, $ID, $Button1[0])
    		Next
    	Next
    	$Button1[0] = UBound($Button1) - 1
    	_ArrayDisplay($Button1)
    
    	#EndRegion ### Create Button
    	GUISetState(@SW_SHOW)
    EndFunc
    Alles anzeigen
  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 11:27

    Naja, du könntest mit Arrays arbeiten, das ist zwar Anfangs etwas Aufwändiger, final aber etwas schöner.

  • Mit Autoit eine BIOS Option ändern?

    • Moombas
    • 26. April 2024 um 09:35

    Ohne es je genutzt zu haben aber vielleicht findest du hier was nützliches: https://woshub.com/powershell-view-change-bios-settings/

    Auch wenn es ggf. bedeutet den Umweg über PS zu gehen aber die könntest du über AutoIt ja triggern.

  • Mit Autoit eine BIOS Option ändern?

    • Moombas
    • 25. April 2024 um 08:04

    Ich denke das hängt auch stark vom BIOS ab.
    Bei meinem alten Mainboard gab es extra eine Anwendung mit der ich aus Windows heraus ins BIOS Menü gekommen bin (oder diese zumindestr "emuliert hat") und somit entsprechende Änderungen vornehmen konnte.
    Beim jetzigen kann ich es nicht mehr (gleicher Hersteller).

  • Automatisierung von Lieferplananpassungen: Einsatz von AutoIT zur Effizienzsteigerung

    • Moombas
    • 22. April 2024 um 08:45

    Leider hängt das oft nicht nur stark von den Mitarbeitern, sondern auch oft am Vorgesetzten... will der partou gewisse Sachen nicht (egal wie Sinnvoll sie sind), werden sie abgelehnt.

    Diese Erfahrung mache ich als IT'ler auch immer wieder bzgl. anderen IT-Abteilungen aber auch anderen nicht-IT-Abteilungen.

    Das Problem liegt oft eher an der Denkweise: das kommt nicht von der entsprechenden Abteilung = schlecht/abgelehnt... oder: oh nein das wäre eine Veränderung: bloß nicht!

  • Holen Sie sich aus den Ressourcen der ausführbaren Dateien Daten in Form einer Zeile ab

    • Moombas
    • 15. April 2024 um 08:04

    And he was already discussing this a lot in the russian autoit forum...

  • SAP (Gesucht wird ein deutschsprachiges Tutorial für AutoIt mit SAP)

    • Moombas
    • 8. April 2024 um 14:53

    Und dann gibts da noch die MS Variante (direkt in Outlook und Office integriert), auch mal so mal so aber generell schon wesentlich besser geworden wenn man so oder so im Programm ist.

  • SAP (Gesucht wird ein deutschsprachiges Tutorial für AutoIt mit SAP)

    • Moombas
    • 8. April 2024 um 10:02

    Nicht immer ;) Hatte auch da schon bescheuerte Ergebnisse :D

  • Mit Shellexecute neue Programminstanz öffnen

    • Moombas
    • 27. März 2024 um 15:09

    oops ;) copy paste Fehler ;)

    Korrigiert. Damit bekommst du auf jedenfall den Default Browser (sofern gesetzt) und den Pfad zur exe.

  • Mit Shellexecute neue Programminstanz öffnen

    • Moombas
    • 27. März 2024 um 14:50

    Deswegen ja das mit dem run.

    Ein Beispiel (kann ich nichtzu 100% testen):

    AutoIt
    Opt('MustDeclareVars', 1)
    Global Const $Homepage = '"http://google.de"'
    Global $DB = RegRead("HKEY_CURRENT_USER\Software\Clients\StartMenuInternet", "")
    $DB = RegRead("HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\" & $DB & '\shell\open\command', "")
    run($DB & ' -new-window ' & $Homepage)

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™