Include von .au3 Dateien in das GUI

  • Hallo zusammen,

    ich habe vor einiger Zeit ein Portal für unsere Firma geschrieben, in welchem jede unserer Maschinen aufgelistet sind, mit einer Tabelle der Maschinendaten und pro Maschine zwischen 5-20 Buttons, welche jeweils mit einer PDF verknüpft ist, z.B. Betriebsanleitung, Ersatzteileliste etc..

    Dieses Portal wurde mit HTML / CSS und ein klein wenig JavaScript umgesetzt und ist komplett statisch.

    Mir fehlt hier auch die Möglichkeit an Funktionalität, da ich z.B. keinen PHP Interpreter installieren darf, weshalb ich gerne beginnen möchte das ganze mit AutoIt zu realisieren.

    Auch weil ich ein Projekt brauche, das mit der Zeit wächst und ich dadurch eventuell AutoIt lernen kann.

    Nun habe ich ein GUI gebaut, welches wie eine Website aufgebaut ist.

    Ich habe links eine Navigation mit 40 Buttons, je 1 Button für eine Maschine und habe dann rechts einen Inhaltsbereich in Form einer GroupBox.

    Für jede Maschine, möchte ich nun eine eigene .au3 Datei haben, welche beim klicken des jeweiligen Maschinenbuttons in den Inhaltsbereich geladen wird.

    Aktuell habe ich das auch schon mit 2 Buttons und 2 Tabellen umgesetzt.

    Wenn ich Button 1 klicke, lädt es die Tabelle, die Freude war groß, wenn ich dann Button 2 klicke, legt es die 2. Tabelle über die erste. :(

    Daher habe ich jetzt mal gestoppt, wenn ich so weiter mache, würden sich später alle Dateien übereinander legen.

    Ich möchte gerne, dass die alte Datei mit der neuen ersetzt wird, bzw. ich muss den Inhaltsbereich irgendwie wieder leeren, bevor ich eine neue Datei hinein lade.

    Könntet ihr mir eventuell sagen, wie ihr sowas generell angehen würdet?

    Mache mir bisschen Sorgen, das ich mich sonst total verbaue, weil man das so gar nicht tun würde.

    Weiß auch noch gar nicht, ob das mit dem kompilieren funktioniert, wie ich mir das vorstelle.

    Das wären dann ja die Haupt-GUI Datei und 42 einzelne .au3 Dateien, welche dann später auf einem Rechner laufen müssten, auf dem kein AutoIt installiert ist. :/

    Anbei noch mein bisheriges Werk:

    Haupt-GUI Datei
    Tabelle 1
    Tabelle 2
  • Ich kann da BugFix nur zustimmen. Ich würde auch ein komplett anderes Design vorschlagen. Wenn ich dein Vorhaben richtig verstanden habe, kommt du da mit deutlich weniger Arbeit weg als wie dir vielleicht bisher klar ist. Prinzipiell unterscheidest du erst einmal zwischen statischen und dynamischen Objekten in deiner Software. Die statischen Dinge werden programmiert, die dynamischen generiert.

    Ist in deinem Fall ziemlich einfach. Fangen wir mal mit den statischen Dingen an:

    Das GUI Layout. Wie soll die Anzeige aussehen und wo sollen die Hauptelemente platziert werden? Du brauchst etwas um die Maschinen anzuzeigen. Du brauchst etwas um einige Maschinendaten tabellarisch darzustellen und du brauchst etwas um verschiedene Dokumente zu diesen Maschinen zu öffnen. Das ist erst mal fix und bildet dein Grundgerüst. Ich würde dir folgendes empfehlen:

    - Eine Liste um die Maschinen aufzulisten: ComboBox oder ListBox

    - Eine Tabelle für deine Daten die du anzeigen möchtest: ListView

    - Eine Auswahl für das Dokument welches dazu geöffnet werden soll: ComboBox, ListBox oder ListView

    Für das Design kannst du dir alles mögliche ausdenken. ich würde einfach links eine ListBox hinklatschen für die Maschinen Auswahl, in die Mitte die ListView für die tabellarische Ansicht und rechts einfach noch ne ListBox für die Dokumente. Das Design programmierst du einfach ein und lädst die notwendigen Daten später dynamisch rein. Kannst ja noch ein bisschen verschönern indem du das Fenster vergrößerbar machst, sodass die Mitte (also die ListView) sich mit vergrößert. Die beiden Ränder (die ListBox) kannst du einfach statisch auf ne gewisse Breite setzen und alles in die Höhe mit vergrößern lassen. :P

    Dann brauchst du eine Datenbank in der du einfach hinterlegst, was du nun in die GUI laden möchtest. Das schöne daran ist dann später, du brauchst einfach nur deine Datenbank anpassen und brauchst dein programm nicht neu zu kompilieren wenn Anpassungen zu technischen Daten notwendig sind. Die einfachste Form ist einfach eine *.ini Datei. Dafür bietet dir AutoIt ja schon Funktionen an. Da auf der Seite sind genug verlinkungen zu den anderen notwendigen Funktionen - wird schon.

    Das Schwierigste ist, sich Gendanken zu machen wie diese *.ini Datei am besten aufgebaut sein sollte. Ich würde das Ganze einfach folgendermaßen machen:

    Irgendwie sowas in der Richtung. Kann man bestimmt auch noch geschickter machen. Dann brauchst du die Daten nur noch einlesen und abspeichern und schon kannst du alle Sachen geschickt in deiner GUI ausfüllen und die Dokumente per ShellExecute aufrufen und die Sache ist geritzt. Ist eigentlich prinzipiell ziemlich einfach zu realisieren. Aber da du das ja als Projekt machen möchtest um die Sprache zu erlernen, darfst du nun selber rausfinden wie alles geht. ;)

    Ich hoffe ich konnte dir einen Denkanstoß in die richtige Richtung geben. Bei unklarheiten, Problemen etc. darfst du gerne nachfragen. Wir beißen nicht, lecken aber mal ein wenig :P

  • Vielen Dank für die Denkanstöße, dann werde ich danach mal in der Hilfe suchen und das durchlesen.

    Das mit der editierbaren .ini finde ich schon sehr toll und werde das auf jeden Fall dann so versuchen zu lösen, Danke dafür!

    Mit der ListView bin ich gestern überhaupt nicht warm geworden, weshalb ich mich dann auch für die Table UDF entschieden habe.

    Das schiebe ich aber mal auf mein fehlendes Wissen bezüglich der Handhabung.

    Wenn ihr das alle empfehlt, sollte ich es mir wohl nochmal genauer ansehen.