Rechentool GUI Fragen

    • Offizieller Beitrag

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

    Ja, völlig richtig. Aber die hat natürlich nur einen Wert während das Skript läuft - den von der Erstellung.

    Mit dieser ID hast Zugriff auf das Control selbst und kannst dessen Inhalt auslesen, indem du die ID als Parameter an die Auslesefunktion übergibst (GuiCtrlRead($ID)).

    Mit der ID hast du auch die Möglichkeit den Status (show, hide, enabled, disabled) zu ändern, oder Farbe, font etc. pp.

    Viel Erfolg beim Lesen.

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

    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]

    ;Ereignisschleife

    [/autoit] [autoit]

    Local $Ereignis = 0

    [/autoit] [autoit]

    While 1

    [/autoit] [autoit]

    $Ereignis = GUIGetMsg()

    [/autoit] [autoit]

    Switch $Ereignis

    [/autoit] [autoit]

    ;MsgBox für Daten des Infotools

    [/autoit] [autoit]

    Case $InfoButton

    [/autoit] [autoit]

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

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

    ;Berechnungen und Abfragen durch Button: Werte berechnen

    [/autoit] [autoit]

    Case $BerechnenButton

    [/autoit] [autoit]

    If GUICtrlRead($Erweitert) = $GUI_CHECKED Then

    [/autoit] [autoit]

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

    [/autoit] [autoit]

    Else

    [/autoit] [autoit]

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

    [/autoit] [autoit]

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

    [/autoit] [autoit]

    Else

    [/autoit] [autoit]

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

    [/autoit] [autoit]

    EndIf

    [/autoit] [autoit]

    EndIf

    [/autoit] [autoit]

    ;Event zum schließen des Hauptfensters

    [/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]

    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:

    [autoit][/autoit][autoit]

    If GUICtrlRead($Erweitert) = $GUI_CHECKED Then

    [/autoit][autoit]

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

    [/autoit][autoit]

    Else

    [/autoit][autoit]

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

    [/autoit][autoit]

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

    [/autoit][autoit]

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

    [/autoit][autoit]

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

    [/autoit][autoit]

    Else

    [/autoit][autoit]

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

    [/autoit][autoit]

    EndIf

    [/autoit][autoit]

    EndIf

    [/autoit][autoit][/autoit]

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

    Hatte es auch in den Varianten :

    [autoit]

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

    [/autoit]

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

  • Ich habe IsNumber() gefunden, was nicht funktioniert hat, wie ich es mir vorgestellt habe

    Das liegt daran, dass IsNumber Stringzahlen nicht als Zahlen anerkennt.

    Eine gute Lösung wäre es wohl RegEx zu nehmen, dies würde aber vermutlich deinen Kenntnisstand sprengen.

    RegEx oder auch reguläre Ausdrücke sind Filter die du auf Eingaben legen kannst wo nur Eingaben durchlaufen die dem Filter entsprechen.

    Hier ein kleines Online-Beispiel zu deinem Problem: https://regex101.com/r/XaQ6PO/4

    Es werden nur Zahlen angekommen die entweder Ganzzahlig sind, oder mit einem Punkt oder Komma als Dezimalkomma da stehen.

    Ungültige Zahlen nicht.

    Es gibt sicherlich schönere Patterns (Filter / Muster) aber das konnte ich auf die schnelle basteln:

    Im Grunde steht da ^\d+(\.|,)\d*$.

    ^ = Anfang des Strings

    $ = Ende des Strings

    D.h. alle anderen Bezeichner (dazwischen) sagen treffen auf die gesamte Zeile zu.

    \d+ = Eine oder mehrere Ziffern hintereinander

    (\.|,)? = Entweder ein Punkt oder Komma als Separator

    \d* = Keine oder mehrere Ziffern hintereinander

    Damit erlaubt man 1 - 2 - 1.2 - 1,3 - 12.2 - 1.33 aber nicht 1..2 - ,2 - .2 - 1,,3 etc.

    Code
    If Not StringRegExp(GUICtrlRead($inputBox), "^\d+(\.|,)?\d*$") Then
        ;Eingabe ist ungültig
    Else
        ;Eingabe ist gültig
    EndIf

    Du musst beachten, dass wenn du Kommas als Trenner nimmst, du sie später mit StringSplit (oder ähnlichem) in einen Punkt umwandeln musst, da AutoIt intern Kommazahlen mit einem Punkt kennzeichnet.

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

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

    Es fehlt momentan ein korrekter Syntaxhighlighter für WBB.

    Du kannst aber einfach die Code-Tags nehmen und dort deinen Code eintragen, den Code oben habe ich aus dem Kopf heraus geschrieben und selber mit Tabs eingerückt.

    Bei den Code-Tags kannst du oben auf "Quellcode" klicken und die Sprache wählen, leider fehlt dort momentan AutoIt.

  • Bei den Code-Tags kannst du oben auf "Quellcode" klicken und die Sprache wählen, leider fehlt dort momentan AutoIt.

    elysium (kleine grafische Erweiterung zu alpines Tipp) :

    Immer wenn Du einen neuen Beitrag erstellst (oder deine bestehenden Beiträge bearbeitest), hast Du im Beitragsheader folgende Symbolleiste :

    Möchtest Du z.B. einen Code einfügen, dann klickst Du auf das 'Code'-Tag (hier rot umrandet).

    Es öffnet sich dann ein Bereich mit der Bezeichnung 'Quellcode'. Dort kannst Du einen vorher markierten Code einfügen - also Copy&Paste - z.B. aus dem SciTE Editor. Selbst schreiben geht auch.

    Code
    Global $sString = 'Hallo Welt'

    Klickst Du auf Quellcode , dann läßt sich eine Syntax-Hervorhebung für verschiedene Sprachen wählen. Leider fehlt momentan noch, wie alpines bereits geschrieben hat, ein Syntaxhighlighter für AutoIt.

    Du kannst über die Symbolleiste aber auch viele andere nützliche Dinge tun, z.B. :

    - Schriftgrößen, Schriftarten, Schriftfarben etc. ändern

    - Links einfügen : https://autoit.de/wcf/

    - Bilder einfügen

    usw. Wenn Du mit der Maus über diese Tags fährst, erscheint eine entsprechende Info.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

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

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

    Warum sollte es niemanden interessieren ?

    Es ist doch auch für die Helfer erfreulich, wenn der Fragesteller erfolgreich zum Ziel kommt :P.

    Gemessen an deiner Selbsteinschätzung :

    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:

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

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

  • Ich hatte gestern schon damit rumexperimentiert, habe aber erst heute eine Lösung gefunden die für dich passen sollte.

    Du musst dich nicht mit den REgex herumplagen, da du ja laut deinem Script zum Rechnen Formnestzahl und zyklyszeit

    grösser 0 brauchst kannst du es wie folgt lösen.

    Ich kann in die Inputbox "2@3" eingeben oder "2,,3.2.3,2,222,,,,,.3" und er rechnet mit einer 2 weiter. Das nennst du eine Zahl "größer 0"?

    Der RegEx ist ein Einzeiler und lässt wirklich nur Zahlen durch, meiner Meinung nach ist das die bessere Variante da sie den User direkt warnt wenn die Eingabe ungültig ist.

    Number versucht irgendwie eine Zahl aus der Eingabe zu extrahieren und fängt von links an bis es ungültig wird - rechnet aber damit weiter obwohl das nicht so sein sollte.

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

    Spoiler anzeigen

    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:

  • Ja tut mir leid, ich habe den Post gelöscht um dich nicht zusätzlich zu verwirren.

    Ich habe nach Alpines Post nochmal nachgetestet und es war so, daß es eben doch wie alpines schon schrieb per Befehl number()

    einen String in eine Zahl umzuwandeln versucht und das eben nicht wie erwartet.

    Bitte nochmal um Entschuldigung

    Tuxedo

  • Hab das übrigends so umgesetzt:

    So prüfst du nur ob die Felder leer sind oder nicht. Wenn ich in ein Feld "blablubb123@bla" eingebe, wird er versuchen damit zu "rechnen".

    Vergiss das bitte nicht. Du kannst statt dem GUICtrlRead = "" auch den RegEx nehmen den ich gepostet habe, der prüft ob da eine gültige Zahl enthalten ist oder nicht.

    Letzendlich musst du entscheiden welches du nimmst, aber so lässt du mehr Spielraum für Bugs drinne wenn du auch Buchstaben etc akzeptierst.

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

  • alpines Ganz extremes Dankeschön!

    Das hat ganz wunderbar funktioniert:

    Spoiler anzeigen

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

  • Hi elysium

    Neben der nachträglichen Prüfung der Inputfelder mittels RegEx, gibt es auch noch andere Varianten.

    Dbzgl. hat der User GreenCan eine schöne UDF erstellt, die bereits während der Eingabe nur gewünschte Zeichen erlaubt. Name der UDF : _inputmask.au3

    https://www.autoitscript.com/forum/topic/15…put-validation/

    In seiner Version wird aber noch eine mittlerweile veraltete Funktion verwendet !

    Ich habe sie aktualisiert, siehe Anhang : _inputmask.au3

    Hier ein kleines Testprogramm, um die Funktionsweise zu verdeutlichen :

    (auch als Anhang : Beispiel-InputNumber.au3)

    Lade Dir beide Dateien aus dem Anhang herunter, und speichere sie in einem Verzeichnis.

    Dann starte das Beispiel. Wenn bei Dir alles klappt, können wir das später in dein Skript einbauen.

    Gruß Musashi

  • Dbzgl. hat der User GreenCan eine schöne UDF erstellt, die bereits während der Eingabe nur gewünschte Zeichen erlaubt. Name der UDF : _inputmask.au3

    Für eine UDF aber nicht wirklich fein, es mit $WM_COMMAND zu machen...

    InputFilter.au3 von chesstiger kennst du auch? Da wird es mit WinProc gemacht. Im Anhang ist eine Version, bei der ich ein paar Fehler behoben und schlagmichtotichnixmehrwissen geändert habe.

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

    5 Mal editiert, zuletzt von elysium (26. Januar 2019 um 11:02)