GUI - dynamische Button mit Daten aus DB erstellen

  • Hallo Zusammen,

    ich sitze aktuell an einem Projekt, in dem es darum geht, unsere einzelnen Autologin Scripte (per Webdriver) in eine GUI zu bündeln.

    Nun habe ich aus vorherigen Scripten folgenden Quellcode erstellt. Die Daten dazu kommen aktuell aus einer DB, im Beispiel mal eine MS Access.

    Lässt sich der Bereich der Erstellung der dyn. Button schöner umsetzen?

    Ein Besonderheit gibt es noch, wenn in Col3 (GUI) = 1 steht, soll vorher noch eine zweite GUI erstellt werden mit einem Dropdown Menü, da es bei verschiedenen Webseiten mehr wie 1 Zugang, also pro Agenturnummer gibt, aber das wäre erst der nächste Schritt.




    Danke und viele Grüße

    Marcel

    3 Mal editiert, zuletzt von gmmg (29. April 2024 um 11:01)

  • 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

    3 Mal editiert, zuletzt von Moombas (29. April 2024 um 12:37)

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

  • Moombas sieht nicht schlecht aus, die Links sollen nicht direkt geöffnet werden, sondern an den Webdriver für einen Autologin übergeben werden.

    Die Texte und URL + Zugangsdaten sollen aus einer DB kommen. Das sollte sich aber dementsprechend anpassen lassen.

    Danke

    Gruß Marcel

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

  • Hab noch das Problem, dass das Script mit Row 0 anfängt die Button zu erzeugen und auch mit der Spalte ID, die ich nicht möchte.

    Danke

    Gruß Marcel

  • wenn ich col und row bei 2 beginnen lasse stimmt in der GUI die xy Einteilung der Button nicht mehr. Sollte man eventuell die Daten aus dem Array in ein zweites schreiben, was dann nur die Spalte Name enthält?


  • 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:

    2 Mal editiert, zuletzt von Moombas (29. April 2024 um 13:39)

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

    Einmal editiert, zuletzt von Moombas (29. April 2024 um 13:35)

  • schau mal bitte den Screenshot vom Array #Post8 an.

    Die Werte stehen da aus der DB im Array drin.

    Hier möchte ich bei Col1 und Row 1 beginnen.

    Da ich anhand der ID dann weitere Werte aus einer 2 Tabelle benötige, wäre die Frage ob man für die Buttons einfach ein bereinigtes Array erstellt.

    2 Mal editiert, zuletzt von gmmg (29. April 2024 um 13:42)

  • Moombas ich war zu langsam, hatte meinen obigen Post nochmal editiert.

    Also eigentlich müsste ich einmal das $URL_Array in ein zweites mit den Feldern bereinigt wegschreiben und dieses dann für die Button nutzen.

  • Lässt sich der Bereich der Erstellung der dyn. Button schöner umsetzen?

    Du kannst dir ja die Positionen und Größen des GUI anhand der Indizes der Elemente im Array berechnen:

    Einmal editiert, zuletzt von AspirinJunkie (29. April 2024 um 14:02)

  • 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 :

    2 Mal editiert, zuletzt von Moombas (29. April 2024 um 15:41)

  • AspirinJunkie und Moombas ,

    danke für eure Beispiele. Beide Versionen gefallen mir gut.

    Praktisch muss ich mich jetzt entscheiden :)

    Mir fehlt jetzt noch die Umsetzung, wenn ich auf den Button drücke, soll abgefragt werden, ob bei GUI ein 0 oder 1 steht.

    Wenn 1 dann soll eine 2 Gui erstellt werden mit einem Dropdown und weiteren Daten aus der DB.

    Das erstellen der 2. GUI sollte aber nicht das Problem sein, das habe ich ja in den bestehen Scripten.

    Beispiel:

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

  • Moombas
    Ich sage "Sorry". Ich hatte das Script noch nicht ganz verstanden. Man kann halt nicht einfach ein Button hinzufügen, sondern muss man wohl immer eine Buttonanzahl nehmen, die ohne Rest durch die Variable $ButtonCols (hier die 3) zu teilen ist. Oder sehe ich dieses falsch? Stören würde es mich nicht, aber es geht gerade um mein Verständnis. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl