Beiträge von elysium

    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.

    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:


    Ok, Sorry für den Doppelpost aber ich glaube, dass ich jetzt fertig wäre mit meinem kleinen Tool.


    Könntet ihr euch eventuell kurz anschauen ob ihr einen groben Fehler findet?

    Besonders würde mich interessieren, ob die Art und Weise, wie ich das Script stoppe, über den "Programm beenden" Button, so richtig ist.


    Habe da mehre Dinge versucht um die Hunting-Funktion zu stoppen, welche alle nicht richtig funktioniert haben.

    Die Lösung jetzt, stoppt zumindest die Screenshot-Erstellung, weiß nur nicht, ob der gewählte Weg auch "gut" ist.


    Hallo zusammen, vielen Dank und Sorry für die späte Antwort, hat etwas gedauert mit der Umsetzung.

    Ich habe jetzt alles wieder umgeschrieben, auf die ursprüngliche Variante, damit komme ich irgendwie besser klar und habe dann die Adlib-Lösung genommen.


    Soweit ich das bisher testen konnte, funktioniert alles wie gewünscht und ich bastel jetzt noch an Kleinigkeiten rum.

    Hab den Intervall nun über das GUI veränderbar gemacht und eine Programm-Status Anzeige mit rein gebaut.


    Nur eine Kleinigkeit stört mich noch :|


    Ich habe für das Input Control eine Abfrage drin, dass wenn der Wert kleiner 1 ist, eine MsgBox aufgeht, welche den User darauf hinweist, dass der Wert mindestens 1 Minute sein muss.


    Wie kann ich den Benutzer, wenn der Wert kleiner 1 ist, dann wieder aus der Funktion befördern, in welcher die Abfrage stattfindet?

    Aktuell mache ich das über ExitLoop, allerdings schließt sich dann das gesamte GUI.



    Edit:


    Ich glaub ich habe es geschafft, es tut zumindest das was ich möchte, ob es der richtige Weg ist, keine Ahnung :)


    Hallo alpines,


    vielen Dank für die Hilfe, habe das jetzt versucht so umzuschreiben, leider blockiert es mich immer noch, sobald ich die 5 Minuten-Schleife aufrufe.



    Könntest Du mich eventuell nochmals in die richtige Richtung schubsen?


    Edit: Gerade erst die Antwort von autoBert gesehen, das muss ich erst noch probieren, Danke

    Guten Tag zusammen,


    ich bin gerade dabei ein kleinen Tool zu bauen, welches alle 5 Minuten einen Screenshot macht und abspeichert.

    Das ganze funktioniert auch prächtig, vielen Dank an alle die an der deutschen Hilfedatei mithelfen <3


    Wenn ich nun aber das Programm über den Button "Programm starten" starte, reagiert er nicht mehr auf die anderen GUI Inhalte, z.B. zum beenden.

    Ich vermute, das hängt mit der Schleife oder eher dem Sleep zusammen.


    Habe dann auch mal versucht, in die Schleife eine Abfrage zu nehmen, ob einer der Buttons geklickt wurde, das hat auch nicht fuktioniert.

    Wie könnte ich das mit der 5 Minuten-Schleife den ohne das Sleep lösen?



    Hallo, ich bekomme nach der Installation diese Fehlermeldung.

    Ich kann eine solche Datei auch nirgends finden, habe dann die Compilled Version heruntergeladen und den Ordner mit der Windowssuche nach der Datei durchsucht aber das hat auch nichts gebracht.


    Wie soll ich den da jetzt weiter vorgehen?

    Hallo Musashi , ja, ich habe mir das angesehen aber ich tue mich gerade echt schwer damit, etwas zu ändern, weil eigentlich alles ganz gut läuft und ich, das bisherige, zum gröbsten Teil auch verstehe.


    Bei der Lösung oben, steht zum Beispiel bei $iIM_POSITIVE_INTEGER auch noch die 0 dabei, so das ich doch sowieso noch eine Abfrage bei der Formnestzahl benötige, da diese nicht 0 sein kann?!


    Mein normaler Rechner läuft ja jetzt ganz gut, bis auf das Problem mit dem Komma, diesen müsste ich in einen Punkt umwandeln zum rechnen.

    Wollte das jetzt so lösen, allerdings tut er nichts und ich brauch jetzt glaub auch mal eine Stunde Pause, seh den Wald vor lauter Bäumen nicht mehr.


    Code
    ElseIf StringInStr(GUICtrlRead($Zykluszeit), ",") Then
    StringReplace(GUICtrlRead($Zykluszeit), ",", ".")


    Meiner Logik nach, muss ich doch in dem Feld erst schauen, ob ein Komma vor kommt, falls ja, dann dieses Komma mit einem Punkt austauschen.

    Naja, jetzt erst mal ne Pause machen :part:

    Hallo alpines, aktuell sieht der normale Rechner gut aus, hab schon alles mögliche eingetippt und er hat alles abgefangen bisher, scheint so, als würde beides zusammen laufen.


    Anbei mal mein gesamter bisheriger Rechner, wollte mich jetzt gerade an den erweiterten Rechner setzen.

    Hab da schon mal den Wirkungsgrad zu einer ComboBox gemacht, um mir da die ganzen Abfragen zu sparen ^^


    Guten Morgen alle zusammen,


    vielen Dank alle, aber macht euch doch bitte nicht soviel Arbeit, wegen meinem Rechner :huh:


    Ich bin heute Morgen schon ganz gut dabei und habe auch meine gewünschten Abfragen mit den Werten hinbekommen.

    Da das ganze für mich jetzt schon recht überwältigend ist, würde ich es gerne so lassen, weil es funktioniert und recht viel Arbeit war.


    Mit jeder neuen Abfrage, fallen mir neue Sachen ein, die Formnestzahl kann ja nie kleiner als 1 sein und dabei ist mir auch noch aufgefallen, dass die Formnestzahl auch nie ein Komma enthalten darf, genau wie die wöchtenlichen Abrufe, wir produzieren ja keine halben Teile und der Kunde wird "hoffentlich" auch nie halbe Teile abrufen.


    Das könnte ich jetzt zwar über $ES_Number lösen bei den beiden Feldern aber dann habe ich verschiedene Fehlermeldungen in der selben GUI, würde mir nicht gefallen.


    So, 5. EDIT, jetzt habe ich es aber glaub geschafft:


    Code
    ElseIf StringInStr(GUICtrlRead($Formnestzahl), ",") Or StringInStr(GUICtrlRead($Formnestzahl), ".") Then
    GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
    MsgBox(16,"Fehler","Das Feld Formnestzahl, darf nur Ganzzahlen beinhalten!",0)


    Hoffe, dass ist jetzt auch eine optimale Lösung :/

    alpines Ganz extremes Dankeschön!


    Das hat ganz wunderbar funktioniert:


    Morgen, erweitere ich das ganze noch, dass der Wert auch größer als 0 sein muss, dann geht es an den erweiterten Rechner.

    Hoffe ich komm dann noch klar :/

    Ja, ich weiß, als nächstes, wollte ich das mit den Zahlen, anhand deiner geposteten Hilfe angehen.

    Wollte nur erst einmal für jedes Feld eine eigene Fehlerbeschreibung haben.

    Tuxedo , kann deinen Post zwar nicht mehr lesen aber trotzdem vielen Dank, anhand des Zitates konnte ich entnehmen das Du mir helfen wolltest.


    Bin gerade noch bei der Fehlerbehandlung von fehlenden Eingaben, beim einfachen Rechner, mir fällt immer mehr ein, was ich haben möchte :part:


    Hab jetzt für jedes Feld eine eigene Abfrage gemacht, damit die Fehlerbeschreibung eindeutig ist und das fehlerhafte Feld eingefärbt, nun musste man ja bedenken, das eventuell jemand das erste Feld leer lässt, das zweite ausfüllt, dann die Fehlermeldung bekommt das Feld 1 leer ist.

    Wenn derjenige dann auf Ok drückt und aus welchem Grund auch immer Feld 2 löscht und Feld 1 ausfüllt, darf das aber ja nicht mehr eingefärbt sein usw..


    Total verrückt, so verschachteltes Denken bin ich gar nicht gewohnt :Glaskugel:


    Macht echt mega Spaß das Programmieren lernen bisher!


    Hab das übrigends so umgesetzt:



    Hab noch sooo viele Ideen, für den Rechner!


    Ganz am Ende, möchte ein HTML Dokument erstellen, in welches ich die Formularergebnisse mit den Eingabewerten einlesen möchte, um es wie einen Report ausdrucken zu können :thumbup:


    Aber erst ganz zum Schluß, dauert noch paar Wochen :klatschen:

    Zitat

    Gemessen an deiner Selbsteinschätzung :


    Zitat von elysium ich bin hier zwar schon eine Weile angemeldet, habe allerdings keine Programmiererfahrung.

    sieht das ganze schon recht gut aus ;).

    Klar, einige Dinge wirst Du mit mehr Erfahrung zukünftig sicher etwas anders lösen, aber es läuft und erfüllt deine Anforderungen :thumbup:


    Da fällt mir direkt was ein, was ich gerne anders gemacht hätte, aber einfach nicht konnte.


    Ich setzte über meinen beiden Funktionen die Controls, für den erweiterten Rechner auf "deaktiviert" und schreibe dann in meine Funktionen jeweils nochmals diesen ganzen Textblock.


    Wollte gerne eine Variable machen, welche die Variablen der jeweiligen Controls enthält und dann einfach diese auf "deaktiviert" schalten, das hätte viel Code eingespart.


    Leider habe ich es nicht geschafft, glaub das muss ich mit diesen Arrays machen aber alles was ich versucht habe hat nicht zum Erfolg geführt, entweder ging gar nichts mehr oder nur das erste hat sich geändert.


    Jetzt lass ich es erst einmal so, muss ja weiter voran kommen und das größte Problem, mit der Überprüfung ob Zahlen in den Feldern sind, kommt ja auch noch :/


    Als nächstes, versuche ich mal die erweiterten Felder rechnen zu lassen, mal schauen wie lange das dauert :rofl:

    Guten Morgen,


    vermutlich interessiert es gar niemand, weiß aber einfach nicht wohin mit meiner Freude :party:

    Habe noch den Windows Rechner per Knopfdruck eingebaut, brav mit Abfrage, ob die Datei auch vorhanden ist und wenn nicht kommt eine Fehlermeldung.


    Dann habe ich es geschafft, dass die erweiterten Felder standardmäßig deaktiviert sind und bei der Aktivierung derCheckBox aktiviert werden und umgekehrt, sogar 2 Funktionen dafür geschrieben.


    Auch die jeweiligen Labels mit der Beschriftung "erwarte Eingabe" erscheinen jetzt erst wenn der Haken gesetzt ist, bis auf die Tagesproduktion, welche ja beim normalen Rechner bleiben müssen.


    Hach, da klopft das Herz :love:


    Aber, ich fand das jetzt auch echt schwer und hab stundelang rumversuchen müssen, unglaublich wie oft nichts geklappt hat!


    Ach herje =O , das hatte ich mir deutlich weniger kompliziert vorgestellt!

    Vielen Dank dafür, muss ich mir mal in Ruhe anschauen das ganze und testen, wird ja interessant.


    Edit: Wie machst Du den, dass dein Code so schön eingerückt ist im Forum?

    Habe hier in einem Sticky gelesen, dass ich es in die Autoit Klammern schreiben soll aber dann kommt es immer komplett linksbündig an.

    Mein Rechner wächst und gedeiht, der nicht erweiterte Rechner, rechnet schon ganz toll und eine Abfrage ob die Felder leer sind, mit entsprechender Fehlermeldung habe ich auch geschafft.


    Nun suche ich schon Stunden nach einer Lösung, wie ich die Felder jetzt noch auf Zahlen prüfen kann.


    Ich habe IsNumber() gefunden, was nicht funktioniert hat, wie ich es mir vorgestellt habe und $ES_Number, was wirklich genial ist aber mir leider auch das Komma blockiert, welches ich aber für die Zykluszeit und den Wirkungsgrad benötige.


    Mein bisheriger Rechner sieht so aus:


    Ich bräuchte, glaube ich, nur so ein Schubser in die richtige Richtung, bitte nicht für mich den Code schreiben.


    Hatte es auch mal so probiert:

    If GUICtrlRead($Erweitert) = $GUI_CHECKED Then

    MsgBox(64,"Erweiterter Rechner","Checkbox ist aktiv!",0)

    Else

    If GUICtrlRead($Formnestzahl) = "" Or GUICtrlRead($Zykluszeit) = "" Then

    MsgBox(16,"Fehler","Für diese Berechnung, werden Formnestzahl und Zykluszeit benötigt!",0)

    ElseIf Not IsNumber(GUICtrlRead($Formnestzahl)) Or Not IsNumber(GUICtrlRead($Zykluszeit)) Then

    MsgBox(16,"Fehler","Formnestzahl und Zykluszeit dürfen nur Zahlen beinhalten!",0)

    Else

    GUICtrlSetData($Tagesproduktion, 24 * 3600 * GUICtrlRead($Formnestzahl) / GUICtrlRead($Zykluszeit))

    EndIf

    EndIf


    Irgendwie glaube ich aber langsam, dass IsNumber() nicht dafür da ist, was ich mir darunter vorstelle :/


    Hatte es auch in den Varianten :

    ElseIf IsNumber(GUICtrlRead($Formnestzahl)) = False Or IsNumber(GUICtrlRead($Zykluszeit)) = False


    Glaub ich muss jetzt auch Pause machen, es mangelt an Aufnahmefähigkeit mittlerweile :saint:

    Oha, vielen Dank für eure Mühen, das muss ich erstmal lesen und versuchen zu verstehen 8|


    Ich dachte die Control-ID wäre die Variable, welche ich davor schreibe.


    Habe das jetzt in der Hilfe gefunden:

    • Die Control-ID ist eine positive Zahl (also eine Ganzzahl größer als 0)
    • Jede Control-ID wird nur einmal vergeben, selbst wenn es mehrere Fenster gibt.
    • Die Control-ID ist derselbe Wert, den das AutoIt Window Info Tool anzeigt.

    So wie ich das jetzt verstanden habe, steht die ID irgendwo im Hintergrund und steht nicht in den Control-Parametern?Muss ich die dann immer erst über das Info-Tool auslesen?

    Ich lese heute Abend glaub erst Mal das ausgedruckte Buch durch, bevor ich euch hier weiter mit Anfängerfragen belästige :rtfm:


    Vermutlich stehen da ja solche Fragen/Antworten drin :saint: