Rechentool GUI Fragen

  • Guten Tag,

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

    Wollte schon damals AutoIT lernen, habe es dann aber leider doch abgebrochen, weil ich nichts verstanden habe.

    Sehr gerne möchte ich es nun neu angehen, da ich mir doch immer mal wieder wünsche, programmieren zu können.

    Ich versuche mich gerade an einem Produktionrechner und bin bisher noch an der GUI-Erstellung, welche ich schon recht herausfordernd finde :saint: .

    Im Anhang findet ihr einen Screenshot, damit man sich besser vorstellen kann, was ich genau meine.

    Ich wollte sehr gerne, dass sich der Text in den gelben Labels zentriert, vertikal und horizontal.

    In der Hilfe, bin ich dann auf $$_CENTER gestoßen, was meinen Text horizontal zentriert hat.

    Vertikal habe ich dann durch $$_CENTERIMAGE geschafft, in der Hilfe steht dort unter anderem:

    Zitat

    GUI-Stile für Controls

    Der Stil kann mit static Controls verwendet werden, die nur eine Zeile Text enthalten. Der Text wird vertikal zentriert

    Trotzdem, würde ich gerne wissen, ob es da noch eine andere Möglichkeit gibt, weil es sich irgendwie als suboptimale Lösung anfühlt, oder ist das tatsächlich die richtige Vorgehensweise?

    Möchte es einfach richtig machen und ein Befehl, der allem Anschein nach für Bilder gemacht wurde, fühlt sich nach Zweckentfremdung an, auch wenn in der Hilfe steht, dass man es tun kann.

    Anbei noch mein bisheriger Code, falls jemand drüber schauen möchte:

    Spoiler anzeigen
    [autoit][/autoit] [autoit]

    ;*****************************************

    [/autoit] [autoit]

    ;Test.au3 by DS

    [/autoit] [autoit]

    ;Erstellt mit ISN AutoIt Studio v. 1.08

    [/autoit] [autoit]

    ;*****************************************

    [/autoit] [autoit][/autoit] [autoit]

    #include <StaticConstants.au3>

    [/autoit] [autoit]

    #include <GUIConstantsEx.au3>

    [/autoit] [autoit]

    #include <WindowsConstants.au3>

    [/autoit] [autoit]

    #Include <GuiButton.au3>

    [/autoit] [autoit]

    #include <EditConstants.au3>

    [/autoit] [autoit]

    #include <ComboConstants.au3>

    [/autoit] [autoit]

    #include <MsgBoxConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $hGUI = GUICreate("Infotool",520,650,-1,-1,-1,-1)

    [/autoit] [autoit]

    GUICtrlCreateGroup("Formnestzahl",20,70,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $iInfoButton = GUICtrlCreateButton("Info",20,20,480,30,-1,-1)

    [/autoit] [autoit]

    GUICtrlCreateCheckbox("Erweiterten Produktionrechner nutzen",20,150,211,30,-1,-1)

    [/autoit] [autoit]

    GUICtrlCreateDate("Samstag, 1. Januar 2011",270,150,230,30,-1,-1)

    [/autoit] [autoit]

    GUICtrlCreateGroup("Wirkungsgrad",20,200,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    GUICtrlCreateInput("0,8",45,225,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit]

    GUICtrlCreateGroup("Ausschuss (%)",270,200,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    GUICtrlCreateInput("2",295,225,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit]

    GUICtrlCreateButton("Werte berechnen",20,600,480,30,-1,-1)

    [/autoit] [autoit]

    GUICtrlCreateGroup("Produktionstage (Woche)",20,280,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    GUICtrlCreateGroup("Abrufe (Woche)",270,280,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    GUICtrlCreateInput("",295,305,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit]

    Local $iProduktionstageCombo = GUICtrlCreateCombo("",45,305,180,20,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetData($iProduktionstageCombo, '1 Tag|2 Tage|3 Tage|4 Tage|5 Tage|6 Tage|7 Tage','5 Tage')

    [/autoit] [autoit]

    GUICtrlCreateInput("",45,95,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit]

    GUICtrlCreateGroup("Tagesproduktion (24 Stunden)",20,360,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    GUICtrlCreateGroup("Wochenproduktion",270,360,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    GUICtrlCreateGroup("Zykluszeit",270,70,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    GUICtrlCreateGroup("Vorlauf pro Tag",20,440,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    GUICtrlCreateInput("",295,95,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit]

    GUICtrlCreateGroup("Vorlauf pro Woche",270,440,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    GUICtrlCreateGroup("Gewünschter Sicherheitsbestand (Wochen)",20,520,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    GUICtrlCreateGroup("Sicherheitsbestand erreicht in (Wochen)",270,520,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    GUICtrlCreateLabel("Erwarte Dateneingabe...",295,385,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit]

    GUICtrlCreateLabel("Erwarte Dateneingabe...",295,465,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit]

    GUICtrlCreateLabel("Erwarte Dateneingabe...",45,465,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit]

    GUICtrlCreateInput("2",45,545,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit]

    GUICtrlCreateLabel("Erwarte Dateneingabe...",295,545,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit]

    GUICtrlCreateLabel("Erwarte Dateneingabe...",45,385,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $hGUI)

    [/autoit] [autoit][/autoit] [autoit]

    Local $iMsg = 0

    [/autoit] [autoit]

    While 1

    [/autoit] [autoit]

    $iMsg = GUIGetMsg()

    [/autoit] [autoit]

    Switch $iMsg

    [/autoit] [autoit]

    Case $iInfoButton

    [/autoit] [autoit]

    MsgBox($MB_SYSTEMMODAL, "Info", "Daten des Infoportals...")

    [/autoit] [autoit][/autoit] [autoit]

    Case $GUI_EVENT_CLOSE

    [/autoit] [autoit]

    MsgBox($MB_SYSTEMMODAL, "GUI Event", "Du hast auf CLOSE geklickt. Programm wird beendet...")

    [/autoit] [autoit]

    ExitLoop

    [/autoit] [autoit]

    EndSwitch

    [/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    GUIDelete($hGUI)

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    Dann wollte ich noch gerne fragen, ob ihr mir sagen könnt, wie ich den Text in Inputfeldern etwas mehr nach rechts schieben kann, einfach etwas Abstand zum Rand.

    Ich finde Optionen für Linksbündig, Zentriert und Rechtsbündig :/

    Weiß leider noch nicht so richtig wonach ich suchen soll, gefühlt, erscheinen bei jeder Suche 100 Seiten 8|

    Eine weitere Frage wäre, wenn ich auf das Tutorial (mit den 2 Teilen) klicke, dann kommt bei mir ein Fehler beim anklicken von Tutorial 2.

    Habe mehrere Links getestet, die zum 2. Teil führen sollen, bei allen steht, die Seite ist leer.

    Dann wollte ich mich noch bei ISI360 bedanken, diese AutoIT Entwicklungsumgebung ist ja wirklich der Hammer!

    Kann bisher zwar nur ein Bruchteil nutzen aber ich bin mehr als nur begeistert! :klatschen:

  • Dann wollte ich noch gerne fragen, ob ihr mir sagen könnt, wie ich den Text in Inputfeldern etwas mehr nach rechts schieben kann, einfach etwas Abstand zum Rand.

    Die gibt es meines Wissens nach nicht. Linksbündig, Zentriet oder Rechtsbündig sind die möglichen Optionen.

    Du kannst aber (wenn du selber Werte reinschreibst) einfach ein paar Leerzeichen einfügen, dann schaut es so aus als ob dort ein Abstand wäre.

    Beim Auslesen der Daten aus dem Feld musst du aber aufpassen, dass du durch die Leerzeichen keine falschen Werte ausliest.

    Außerdem solltest du die Controls die du beschreiben und auslesen möchtest immer in Variablen speichern, du erzeugst so viele Inputboxen aber speicherst das Handle (den Rückgabewert um die Box zu identifizieren) nicht ab.

    Übrigens heißt es AutoIt, das It steht nicht für Informationstechnologie sondern für das englische "es".

    Peethebee hatte vor ein paar Jahren ein Buch zu AutoIt verfasst und es hier hochgeladen, du kannst es dir gerne durchlesen.

    Es sollte so gut wie alle Bereiche abdecken. Wenn etwas fehlt, dann sieht es sehr spezielle Sachen oder versionsspezifische Veränderungen.

    https://autoit.de/wcf/index.php?…ht-gemacht-pdf/

  • Zitat

    Die gibt es meines Wissens nach nicht. Linksbündig, Zentriet oder Rechtsbündig sind die möglichen Optionen.

    Du kannst aber (wenn du selber Werte reinschreibst) einfach ein paar Leerzeichen einfügen, dann schaut es so aus als ob dort ein Abstand wäre.

    Beim Auslesen der Daten aus dem Feld musst du aber aufpassen, dass du durch die Leerzeichen keine falschen Werte ausliest.

    Ok, vielen Dank! Dann kann ich aufhören zu suchen :thumbup:

    Das mit den Variablen habe ich mir heute auch schon gedacht, war mir allerdings nicht sicher.

    Muss das auch noch mit Kommentaren schön aufräumen, dann erledige ich das im selben Zug!

    Das Buch habe ich mir schon ausgedruckt, Danke!

  • Ok, vielen Dank! Dann kann ich aufhören zu suchen

    Dazu sei gesagt, dass es möglich ist eine fixe Anzahl an Leerzeichen in einer Inputbox festzulegen, allerdings dürfte das über deinem Kenntnisstand liegen.

    Wenn du AutoIt gut beherrscht kannst du dir ja mal Window Messages (GUIRegisterMsg, etc...) anschauen, da kannst du Funktionen registrieren die auslösen, sobald der Inhalt einer Inputbox verändert wurde.

    Fürs erste würde ich allerdings darauf verzichten.

    Du kannst die Inputboxen auch ohne Variablen auslesen, allerdings macht das niemand (ohne wirklich guten Grund), da es viel angenehmer ist sie über die Variablen anzusprechen.

  • allerdings dürfte das über deinem Kenntnisstand liegen.

    Hehe ja, weiß noch nicht mal, wie ich das alles rechnen lasse.

    Aber im meinem Kopf (Pseudocode) sehe ich es zumindest mittlerweile vor Augen.

    Die größten Sorgen macht mir der Haken "erweiterten Rechner benutzen".

    Wenn der nicht gesetzt ist, soll nur die Tagesproduktion anhand Formnestzahl und Zykluszeit errechnet werden.

    Sobald er gesetzt ist, sollen dann alle Felder gerechnet werden.

    Cool fände ich es, wenn die "erweiterten" Felder ausgegraut (inaktiv) sind, wenn der Haken nicht gesetzt ist und falls er gesetzt ist, soll es Fehlermeldungen geben, wenn ein Feld nicht ausgefüllt ist und jemand auf "berechnen" klickt.

    Dann muss noch geprüft werden, ob es sich auch um Zahlen handelt, falls jemand Buchstaben eintippt usw..

    Glaub das wird als erstes Projekt ziemlich heftig aber auch ein echter Traum das zu schaffen!

  • Cool fände ich es, wenn die "erweiterten" Felder ausgegraut (inaktiv) sind, wenn der Haken nicht gesetzt ist und falls er gesetzt ist, soll es Fehlermeldungen geben, wenn ein Feld nicht ausgefüllt ist und jemand auf "berechnen" klickt.

    Mit GUICtrlSetState und dem Status $GUI_DISABLE/$GUI_ENABLE kannst du genau das machen.

    Du musst diese States beim Klick auf die Checkbox setzen.

  • Mit GUICtrlSetState und dem Status $GUI_DISABLE/$GUI_ENABLE kannst du genau das machen.

    Du musst diese States beim Klick auf die Checkbox setzen.

    Dafür musst du deinen Labels etc. aber beim erstellen Namen zuweisen!

    Also z.B.: $NAME= GUICtrlCreateLabel("Erwarte Dateneingabe...",45,385,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1) damit du drauf zugreifen kannst.

    Und dann GUICtrlSetState($NAME, $GUI_DISABLE) bzw GUICtrlSetState($NAME, $GUI_ENABLE)

    Einmal editiert, zuletzt von Moombas (22. Januar 2019 um 15:43)

  • Dafür musst du deinen Labels etc. aber beim erstellen Namen zuweisen!

    Nicht zwangsweise, und das schrieb ich bereits ;)

    Außerdem solltest du die Controls die du beschreiben und auslesen möchtest immer in Variablen speichern, du erzeugst so viele Inputboxen aber speicherst das Handle (den Rückgabewert um die Box zu identifizieren) nicht ab.

  • Dann wollte ich noch gerne fragen, ob ihr mir sagen könnt, wie ich den Text in Inputfeldern etwas mehr nach rechts schieben kann, einfach etwas Abstand zum Rand.

    Ein Input-Control ist lediglich eine Sonderform (hat immer nur eine Zeile) des Edit-Controls, dass es nur in AutoIt gibt.

    Für Edit-Controls gibt es die Funktionen _GUICtrlEdit_GetRECT, _GUICtrlEdit_GetRECTEx, _GUICtrlEdit_SetRECT, _GUICtrlEdit_SetRECTEx, _GUICtrlEdit_GetMargins() und _GUICtrlEdit_SetMargins(), mit dem die Abstände abgefragt/geändert werden können.

    Das Schöne daran: Es steht zwar nicht in der AutoIt-Hilfe, aber zumindest _GUICtrlEdit_GetMargins() und _GUICtrlEdit_SetMargins() funktionieren auch mit einem Input-Control!

    Hier ein Bsp.:

  • Guten Morgen und vielen Dank an alle, für die Ratschläge und Hinweise!

    Ich habe meinen Code jetzt aufgeräumt und mit Variablennamen versehen:

    Spoiler anzeigen
    [autoit][/autoit] [autoit]

    ;*****************************************

    [/autoit] [autoit]

    ;Test.au3 by DS

    [/autoit] [autoit]

    ;Erstellt mit ISN AutoIt Studio v. 1.08

    [/autoit] [autoit]

    ;*****************************************

    [/autoit] [autoit][/autoit] [autoit]

    #include <StaticConstants.au3>

    [/autoit] [autoit]

    #include <GUIConstantsEx.au3>

    [/autoit] [autoit]

    #include <WindowsConstants.au3>

    [/autoit] [autoit]

    #Include <GuiButton.au3>

    [/autoit] [autoit]

    #include <EditConstants.au3>

    [/autoit] [autoit]

    #include <ComboConstants.au3>

    [/autoit] [autoit]

    #include <MsgBoxConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;Hauptfenster

    [/autoit] [autoit]

    Local $GUI = GUICreate("Infotool",520,650,-1,-1,-1,-1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Info Button

    [/autoit] [autoit]

    Local $InfoButton = GUICtrlCreateButton("Info",20,20,480,30,-1,-1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Formnestzahl mit Eingabefeld

    [/autoit] [autoit]

    GUICtrlCreateGroup("Formnestzahl",20,70,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Formnestzahl = GUICtrlCreateInput("",45,95,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Zykluszeit mit Eingabefeld

    [/autoit] [autoit]

    GUICtrlCreateGroup("Zykluszeit",270,70,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Zykluszeit = GUICtrlCreateInput("",295,95,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Checkbox für den erweiterten Produktionsrechner

    [/autoit] [autoit]

    Local $Erweitert = GUICtrlCreateCheckbox("Erweiterten Produktionrechner nutzen",20,150,211,30,-1,-1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Kalender

    [/autoit] [autoit]

    GUICtrlCreateDate("Samstag, 1. Januar 2011",270,150,230,30,-1,-1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Wirkungsgrad mit Eingabefeld

    [/autoit] [autoit]

    GUICtrlCreateGroup("Wirkungsgrad",20,200,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Wirkungsgrad = GUICtrlCreateInput("0,8",45,225,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Ausschuss mit Eingabefeld

    [/autoit] [autoit]

    GUICtrlCreateGroup("Ausschuss (%)",270,200,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Ausschuss = GUICtrlCreateInput("2",295,225,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Produktionstage mit Combo-Box

    [/autoit] [autoit]

    GUICtrlCreateGroup("Produktionstage (Woche)",20,280,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Produktionstage = GUICtrlCreateCombo("",45,305,180,20,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetData($Produktionstage, '1 Tag|2 Tage|3 Tage|4 Tage|5 Tage|6 Tage|7 Tage','5 Tage')

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Abrufe mit Eingabefeld

    [/autoit] [autoit]

    GUICtrlCreateGroup("Abrufe (Woche)",270,280,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Abrufe = GUICtrlCreateInput("",295,305,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Tagesproduktion mit Label

    [/autoit] [autoit]

    GUICtrlCreateGroup("Tagesproduktion (24 Stunden)",20,360,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Tagesproduktion = GUICtrlCreateLabel("Erwarte Dateneingabe...",45,385,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Wochenproduktion mit Label

    [/autoit] [autoit]

    GUICtrlCreateGroup("Wochenproduktion",270,360,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Wochenproduktion = GUICtrlCreateLabel("Erwarte Dateneingabe...",295,385,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Vorlauf pro Tag mit Label

    [/autoit] [autoit]

    GUICtrlCreateGroup("Vorlauf pro Tag",20,440,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $VorlaufTag = GUICtrlCreateLabel("Erwarte Dateneingabe...",45,465,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Vorlauf pro Woche mit Label

    [/autoit] [autoit]

    GUICtrlCreateGroup("Vorlauf pro Woche",270,440,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $VorlaufWoche = GUICtrlCreateLabel("Erwarte Dateneingabe...",295,465,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Gewünschter Sicherheitsbestand mit Label

    [/autoit] [autoit]

    GUICtrlCreateGroup("Gewünschter Sicherheitsbestand (Wochen)",20,520,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $WunschSicherheitsbestand = GUICtrlCreateInput("2",45,545,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Sicherheitsbestand erreicht mit Label

    [/autoit] [autoit]

    GUICtrlCreateGroup("Sicherheitsbestand erreicht in (Wochen)",270,520,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $SicherheitsbestandDauer = GUICtrlCreateLabel("Erwarte Dateneingabe...",295,545,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit][/autoit] [autoit]

    ;Werte berechnen Button

    [/autoit] [autoit]

    Local $BerechnenButton = GUICtrlCreateButton("Werte berechnen",20,600,480,30,-1,-1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Hauptfenster anzeigen

    [/autoit] [autoit]

    GUISetState(@SW_SHOW, $GUI)

    [/autoit] [autoit][/autoit] [autoit]

    ;Ereignisschleife

    [/autoit] [autoit]

    Local $Ereignis = 0

    [/autoit] [autoit]

    While 1

    [/autoit] [autoit]

    $Ereignis = GUIGetMsg()

    [/autoit] [autoit]

    Switch $Ereignis

    [/autoit] [autoit]

    Case $InfoButton

    [/autoit] [autoit]

    MsgBox($MB_SYSTEMMODAL, "Info", "Daten des Infoportals...")

    [/autoit] [autoit][/autoit] [autoit]

    Case $GUI_EVENT_CLOSE

    [/autoit] [autoit]

    MsgBox($MB_SYSTEMMODAL, "GUI Event", "Du hast auf CLOSE geklickt. Programm wird beendet...")

    [/autoit] [autoit]

    ExitLoop

    [/autoit] [autoit]

    EndSwitch

    [/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit]

    Die weiteren optischen Schönheitskorrekturen, werde ich jetzt mal nach hinten schieben, bis ich besser klar komme und wollte jetzt gerne mit dem "richtigen" programmieren beginnen.

    Würde hier gerne meine bisherigen Gedanken kurz aufschreiben, eventuell könnt ihr mir ja sagen ob das so passt oder ob es gar nicht funktionieren würde.

    Da mein Produktionsrechner auf Knopfdruck arbeiten soll, wollte ich in den Ereignisloop einen weiteren Case nehmen, für den Button "Werte berechnen".

    Außerhalb des Ereignisloops wollte ich 2 Funktionen schreiben, was gerechnet werden muss.

    Funktion 1 = Rechne Feld 1 und Feld 2 und schreibe das Ergebnis in Label 1

    Funktion 2 = Rechne Feld 1 2 3 usw. und schreibe in Label 1 2 3 usw.

    In den Case (wenn Button "Werte berechnen" geklickt wird) im Ereignisloop, wollte ich dann eine If Abfrage (hoffe das geht da) schreiben:

    Wenn die Checkbox (erweiterter Rechner) gesetzt/aktiv ist, führe Funktion 2 aus, ansonsten führe Funktion 1 aus.

    Für meine "Logik" müsste das ja so funktionieren :/

    Wenn das dann laufen sollte, würde ich weiter schauen wollen, wie man prüft ob auch nur Zahlen im Feld sind und ob alle benötigten Felder ausgefüllt sind etc..

    Macht auf jeden Fall bisher echt Spaß, hab sogar davon geträumt :saint:

  • Hallo Elysium,

    vielleicht schreibst du mal ein Paar Standard Werte für deine Felder und mit Welcher Rechenart diese berechnet werden sollen.

    Ich selbst kenne die Worte Formnestzahl und Zykluszeit nur aus dem Formenbau, habe damit aber noch nie gearbeitet.

    Gruß gmmg

  • Hallo gmmg,

    die Standardwerte habe ich, da wo es mir sinnvoll erschien, schon eingetragen.

    Formnestzahl und Zykluszeit sind selten gleich, daher lasse ich diese Felder standardmäßig leer.

    Die Formel für den "kleinen" Rechner wäre:

    24 x 3600 x Formnestzahl / Zykluszeit in Sekunden

    Das würde dann die Tagesproduktion in Stück ergeben.

    (Und ja, die Formnestzahl ist die Anzahl der Kavitäten in einer Spritzgußform)

    Anhand dieser Menge, lässt sich dann bequem der Rest errechnen.

    Wochenproduktion wäre Tagesproduktion x Produktionstage usw..

    Hab das auch alles im Excel, funktioniert dort perfekt :thumbup:

    Mir ging es auch weniger um die Formeln, als um meine geplante Vorgehensweise (welche ich oben grob beschrieb), ob das so passt oder ob ihr das anders umsetzten würdet.

  • Zur Abfrage der Buttons etc.: Schau mal hier: https://www.autoitscript.com/autoit3/docs/f…s/GUIGetMsg.htm

    5 Mal editiert, zuletzt von Moombas (23. Januar 2019 um 11:50)

  • Das er auf den Button reagiert habe ich schon, habe mit GUICtrlSetData auch geschafft, dass mein Label Tagesproduktion beschrieben wird.

    Habe dann eine Variable angelegt, welche einfach mal Formnestzahl + Zykluszeit berechnet und im Label Tagesproduktion anzeigt.

    Merkwürdigerweise, kommt da bisher immer eine 12 raus, auch 5+5 ergibt bei dem Tool gerade 12, einfach alles ^^

    Spoiler anzeigen
    [autoit][/autoit] [autoit]

    ;*****************************************

    [/autoit] [autoit]

    ;Test.au3 by DS

    [/autoit] [autoit]

    ;Erstellt mit ISN AutoIt Studio v. 1.08

    [/autoit] [autoit]

    ;*****************************************

    [/autoit] [autoit][/autoit] [autoit]

    #include <StaticConstants.au3>

    [/autoit] [autoit]

    #include <GUIConstantsEx.au3>

    [/autoit] [autoit]

    #include <WindowsConstants.au3>

    [/autoit] [autoit]

    #Include <GuiButton.au3>

    [/autoit] [autoit]

    #include <EditConstants.au3>

    [/autoit] [autoit]

    #include <ComboConstants.au3>

    [/autoit] [autoit]

    #include <MsgBoxConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;Hauptfenster

    [/autoit] [autoit]

    Local $GUI = GUICreate("Infotool",520,650,-1,-1,-1,-1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Info Button

    [/autoit] [autoit]

    Local $InfoButton = GUICtrlCreateButton("Info",20,20,480,30,-1,-1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Formnestzahl mit Eingabefeld

    [/autoit] [autoit]

    GUICtrlCreateGroup("Formnestzahl",20,70,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Formnestzahl = GUICtrlCreateInput("",45,95,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Zykluszeit mit Eingabefeld

    [/autoit] [autoit]

    GUICtrlCreateGroup("Zykluszeit (Sekunden)",270,70,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Zykluszeit = GUICtrlCreateInput("",295,95,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Checkbox für den erweiterten Produktionsrechner

    [/autoit] [autoit]

    Local $Erweitert = GUICtrlCreateCheckbox("Erweiterten Produktionsrechner nutzen",20,150,211,30,-1,-1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Kalender

    [/autoit] [autoit]

    GUICtrlCreateDate("Samstag, 1. Januar 2011",270,150,230,30,-1,-1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Wirkungsgrad mit Eingabefeld

    [/autoit] [autoit]

    GUICtrlCreateGroup("Wirkungsgrad",20,200,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Wirkungsgrad = GUICtrlCreateInput("0,8",45,225,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Ausschuss mit Eingabefeld

    [/autoit] [autoit]

    GUICtrlCreateGroup("Ausschuss (%)",270,200,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Ausschuss = GUICtrlCreateInput("2",295,225,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Produktionstage mit Combo-Box

    [/autoit] [autoit]

    GUICtrlCreateGroup("Produktionstage (Woche)",20,280,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Produktionstage = GUICtrlCreateCombo("",45,305,180,20,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetData($Produktionstage, '1 Tag|2 Tage|3 Tage|4 Tage|5 Tage|6 Tage|7 Tage','5 Tage')

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Abrufe mit Eingabefeld

    [/autoit] [autoit]

    GUICtrlCreateGroup("Abrufe (Woche)",270,280,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Abrufe = GUICtrlCreateInput("",295,305,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Tagesproduktion mit Label

    [/autoit] [autoit]

    GUICtrlCreateGroup("Tagesproduktion (24 Stunden)",20,360,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Tagesproduktion = GUICtrlCreateLabel("Erwarte Dateneingabe...",45,385,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Wochenproduktion mit Label

    [/autoit] [autoit]

    GUICtrlCreateGroup("Wochenproduktion",270,360,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $Wochenproduktion = GUICtrlCreateLabel("Erwarte Dateneingabe...",295,385,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Vorlauf pro Tag mit Label

    [/autoit] [autoit]

    GUICtrlCreateGroup("Vorlauf pro Tag",20,440,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $VorlaufTag = GUICtrlCreateLabel("Erwarte Dateneingabe...",45,465,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Vorlauf pro Woche mit Label

    [/autoit] [autoit]

    GUICtrlCreateGroup("Vorlauf pro Woche",270,440,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $VorlaufWoche = GUICtrlCreateLabel("Erwarte Dateneingabe...",295,465,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Gewünschter Sicherheitsbestand mit Label

    [/autoit] [autoit]

    GUICtrlCreateGroup("Gewünschter Sicherheitsbestand (Wochen)",20,520,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $WunschSicherheitsbestand = GUICtrlCreateInput("2",45,545,180,20,-1,$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    ;Gruppe Sicherheitsbestand erreicht mit Label

    [/autoit] [autoit]

    GUICtrlCreateGroup("Sicherheitsbestand erreicht in (Wochen)",270,520,230,60,-1,-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xF0F0F0")

    [/autoit] [autoit]

    Local $SicherheitsbestandDauer = GUICtrlCreateLabel("Erwarte Dateneingabe...",295,545,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)

    [/autoit] [autoit]

    GUICtrlSetBkColor(-1,"0xFFFF00")

    [/autoit] [autoit][/autoit] [autoit]

    ;Werte berechnen Button

    [/autoit] [autoit]

    Local $BerechnenButton = GUICtrlCreateButton("Werte berechnen",20,600,480,30,-1,-1)

    [/autoit] [autoit][/autoit] [autoit]

    ;Hauptfenster anzeigen

    [/autoit] [autoit]

    GUISetState(@SW_SHOW, $GUI)

    [/autoit] [autoit][/autoit] [autoit]

    Local $Berechnung = $Formnestzahl + $Zykluszeit

    [/autoit] [autoit][/autoit] [autoit]

    ;Ereignisschleife

    [/autoit] [autoit]

    Local $Ereignis = 0

    [/autoit] [autoit]

    While 1

    [/autoit] [autoit]

    $Ereignis = GUIGetMsg()

    [/autoit] [autoit]

    Switch $Ereignis

    [/autoit] [autoit]

    Case $InfoButton

    [/autoit] [autoit]

    MsgBox($MB_SYSTEMMODAL, "Info", "Daten des Infoportals...")

    [/autoit] [autoit][/autoit] [autoit]

    Case $BerechnenButton

    [/autoit] [autoit]

    GUICtrlSetData($Tagesproduktion, $Berechnung)

    [/autoit] [autoit][/autoit] [autoit]

    Case $GUI_EVENT_CLOSE

    [/autoit] [autoit]

    MsgBox($MB_SYSTEMMODAL, "GUI Event", "Du hast auf CLOSE geklickt. Programm wird beendet...")

    [/autoit] [autoit]

    ExitLoop

    [/autoit] [autoit]

    EndSwitch

    [/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ;Beendet Hauptfenster

    [/autoit] [autoit]

    GUIDelete($GUI)

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    Werde ich auch noch schaffen, bin ja schon froh das es überhaupt was tut 8)

    • Offizieller Beitrag

    Local $Berechnung = $Formnestzahl + $Zykluszeit

    Lerne draus, ist ein typischer Anfängerfehler:

    Die Variablen $Formnestzahl & $Zykluszeit speichern jeweils die ID des Inputs und NICHT dessen Inhalt.

    An den Inhalt gelangst du mit: GuiCtrlRead($ID). Aber erst abfragen, wenn auch der Inhalt geändert wurde.

    Etwas Anderes ist es, wenn du mit einer InputBox() arbeiten würdest. Die poppt auf und fordert eine Eingabe und gibt dann den eingegebenen Inhalt zurück.

  • @EL: Ich habe in meinem vorigen Post mal ein Beispiel angehängt. und ich (für meinen Teil) würde an deiner Stelle select Case nehmen anstatt switch.

    Warum:

    Select..Case:

    Zitat

    If the expression is true the following statements up to the next Case or EndSelect statement are executed. If more than one of the Case statements are true, only the first one is executed.

    Switch..Case

    Zitat
    An expression that returns a value. The value from the expression is then compared against the values of each case until a match is found. This expression is always evaluated exactly once each time through the structure.

    Bei Select wärst du damit aus meiner Sicht auf der sicheren Seite UND wenn er ein passendes Case gefunden hat, prüft er nicht weiter.

    Einmal editiert, zuletzt von Moombas (23. Januar 2019 um 11:55)

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

    • Offizieller Beitrag

    Bei Select wärst du damit aus meiner Sicht auf der sicheren Seite UND wenn er ein passendes Case gefunden hat, prüft er nicht weiter.

    Das ist etwas fehlinterpretiert und verwirrt den TE sicher mehr, als das es hilft.

    Der eigentliche Unterschied ist der:

    SELECT:

    - jedes Case hat irgendeinen oder eine Kombination von Werten die geprüft werden sollen (vergleichbar mit einer If..ElseIf..ElseIf..ElseIf-Struktur)

    SWITCH

    - EIN Wert wird mit verschiedenen Zuständen (in jeweils einem Case) abgeglichen.

    Da der User ausschliesslich den GuiGetMsg-Wert prüft, ist Switch durchaus angemessen.

    Möglich ist natürlich beides.

  • Die Control-ID ist derselbe Wert, den das AutoIt Window Info Tool anzeigt.

    Nein, die Control-ID ist autoitspezifisch und kommt bei anderen Windows Anwendungen nicht vor. Das Handle das AutoIt Window Info anzeigt (0x......) ist das tatsächliche Handle zu dem Control um es anzusteuern.

    Für AutoIt wurde aber eine einfache Zahl genommen die hochzählt. Das hat seine Gründe, denn man kann damit viel guten Unfug anstellen.

    Wir reden hier von der Zahl die AutoIt zurückgibt, wenn ein Control mit GUICtrlCreate erstellt wurde.

    Diese solltest du beim Erstellen immer Speichern z.B. $buttonOK um später in deiner GUIMessage-Verarbeitung zu prüfen ob $buttonOK geklickt wurde.

    Am besten du liest dir das Buch erstmal Schritt für Schritt durch (alles auf einmal wäre viel zu viel) und tastest dich einfach ran, das wird schon.