automatisches rechnen

  • Moin Moin.

    Ich habe drei Inputfelder und möchte, wenn ich in Input 1 eine Zahl schreibe, das die Inputfelder 2 und 3 automatisch eine Berechnung durchführen.

    Also die Formeln sind kein Problem. Mein Problem ist, wenn ich in Input 1 zum Beispiel 5 rein schreibe, das er in Input 2 die Berechnung ( 2.5 * $input1) und in Input 3 die Berechnung (input2 + 25.3718) nicht durch führt. Nur wenn ich das ganze über ein Button ("neu berechnen") anstupse, dann macht er es. Kann man das nicht so machen, das wenn sich der Wert in Input 1 ändert, das er dann sofort die Berechnungen startet?

    Habe jetzt das ganze erst einmal gelöscht. Wenn es dafür eine Lsg. gibt, dann fange ich da nochmals an. Möchte mich einfach bischen mit den Formeln und Funktionen beschäftigen im Bereich der Mathematik und das über GUI`s.

    Wenn jemand mein Problem verstanden hat und eine Lsg. hat, wäre es super.

    LG, Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Hi,
    da hatte grad letztens jemand für eine Widerstandsberechnung nach gefragt.
    Ich hoffe mein Bsp. funzt.
    Habbe jetzt nur Addition drin, kannst das ja abändern in den Rechenfunktionen.

    Edit:
    Die Clearbutton sind beabsichtigt, damit legst du fest welches Feld neu berechnet werden soll nach erfolgter erster Rechnung. Denn wenn alle Felder bereits gefüllt sind und du nur einen Wert überschreibst, kann das programm ja nicht ahnen, welchen der zwei anderen Werte du nun berechnen möchtest ;-).

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstants.au3>
    Opt('GUIOnEventMode', 1)

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

    Global $is1 = False, $is2 = False, $is3 = False

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

    GUICreate('Test')
    GUISetOnEvent($GUI_EVENT_CLOSE, 'ende')
    GUICtrlCreateLabel('1: ', 15, 15, 30)
    $1 = GUICtrlCreateInput('', 50, 15, 60, -1, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
    GUICtrlSetOnEvent(-1, '_1')
    GUICtrlCreateButton('clear', 120, 15, 40, 20)
    GUICtrlSetOnEvent(-1, '_c1')
    GUICtrlCreateLabel('2: ', 15, 45, 30)
    $2 = GUICtrlCreateInput('', 50, 45, 60, -1, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
    GUICtrlSetOnEvent(-1, '_2')
    GUICtrlCreateButton('clear', 120, 45, 40, 20)
    GUICtrlSetOnEvent(-1, '_c2')
    GUICtrlCreateLabel('3: ', 15, 75, 30)
    $3 = GUICtrlCreateInput('', 50, 75, 60, -1, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
    GUICtrlSetOnEvent(-1, '_3')
    GUICtrlCreateButton('clear', 120, 75, 40, 20)
    GUICtrlSetOnEvent(-1, '_c3')
    GUISetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func ende()
    Exit
    EndFunc

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

    Func _1()
    If GUICtrlRead($1) <> '' Then
    $is1 = True
    Else
    $is1 = False
    EndIf
    If $is1 And $is2 Then
    _calc3()
    ElseIf $is1 And $is3 Then
    _calc2()
    EndIf
    EndFunc

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

    Func _2()
    If GUICtrlRead($2) <> '' Then
    $is2 = True
    Else
    $is2 = False
    EndIf
    If $is2 And $is1 Then
    _calc3()
    ElseIf $is2 And $is3 Then
    _calc1()
    EndIf
    EndFunc

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

    Func _3()
    If GUICtrlRead($3) <> '' Then
    $is3 = True
    Else
    $is3 = False
    EndIf
    If $is3 And $is2 Then
    _calc1()
    ElseIf $is3 And $is1 Then
    _calc2()
    EndIf
    EndFunc

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

    Func _calc1()
    GUICtrlSetData($1, GUICtrlRead($2) + GUICtrlRead($3))
    EndFunc

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

    Func _calc2()
    GUICtrlSetData($2, GUICtrlRead($1) + GUICtrlRead($3))
    EndFunc

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

    Func _calc3()
    GUICtrlSetData($3, GUICtrlRead($2) + GUICtrlRead($1))
    EndFunc

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

    Func _c1()
    GUICtrlSetData($1, '')
    _clearCheck(1)
    EndFunc

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

    Func _c2()
    GUICtrlSetData($2, '')
    _clearCheck(2)
    EndFunc

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

    Func _c3()
    GUICtrlSetData($3, '')
    _clearCheck(3)
    EndFunc

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

    Func _clearCheck($N)
    Switch $N
    Case 1
    If (GUICtrlRead($2)<>'') And (GUICtrlRead($3)<>'') Then
    $is2 = True
    $is3 = True
    $is1 = False
    EndIf
    Case 2
    If (GUICtrlRead($1)<>'') And (GUICtrlRead($3)<>'') Then
    $is1 = True
    $is3 = True
    $is2 = False
    EndIf
    Case 3
    If (GUICtrlRead($2)<>'') And (GUICtrlRead($1)<>'') Then
    $is2 = True
    $is1 = True
    $is3 = False
    EndIf
    EndSwitch
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Ich habe Dir mal ein Beispiel erstellt:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    Global $oldData = -1
    GUICreate('', 120, 150)
    $Input1 = GUICtrlCreateInput('', 10, 10, 80, 25)
    $Input2 = GUICtrlCreateInput('', 10, 40, 80, 25)
    $Input3 = GUICtrlCreateInput('', 10, 70, 80, 25)
    GUISetState()

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

    Do
    $Data = GUICtrlRead($Input1)
    If $Data <> $oldData Then
    $oldData = $Data
    GUICtrlSetData($Input2, Round($Data * 2.5, 3))
    GUICtrlSetData($Input3, Round(GUICtrlRead($Input2) + 25.371, 3))
    EndIf
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit]

    Edit: Mist, Bugfix war schneller. :)

  • Meinst du soetwas?

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 451, 193, 115)
    $Input1 = GUICtrlCreateInput("5", 40, 32, 193, 21)
    $Input2 = GUICtrlCreateInput("2", 40, 64, 193, 21)
    $Input3 = GUICtrlCreateInput("Ergebnis", 40, 88, 193, 21)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $nMsg = $Input1
    GUICtrlSetData($Input3, GUICtrlRead($Input1) * GUICtrlRead($Input2))
    EndSwitch
    WEnd

    [/autoit]

    Edit: Mist ihr 2 wart schneller :P

    If not :?: then ?( else :thumbup:

  • DANKE !!!

    Wenn ich von jedem einwenig nehme, bekomme ich es evtl. hin. Ist ja auch derzeitig nur zum lernen.

    LG und noch einmal Danke.

    Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Moin Moin.

    Hierum geht es:

    Spoiler anzeigen
    [autoit]


    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    case $berechnen

    Global $1oldData = -1
    $1Data = GUICtrlRead($input3)
    If $1Data <> $1oldData Then
    $1oldData = $1Data
    GUICtrlSetData($input3, Round(GUICtrlRead($input1) * GUICtrlRead($input2),3))
    EndIf

    Global $2oldData = -1
    $2Data = GUICtrlRead($input4)
    If $2Data <> $2oldData Then
    $2oldData = $2Data
    GUICtrlSetData($input4, Round(GUICtrlRead($input3) / GUICtrlRead($min) * GUICtrlRead($max) + GUICtrlRead($durchschnitt),3))
    EndIf

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

    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]


    Also $input 3 wird richtig berechnet, aber bei $input4, geht das nicht. Bin seit cirka 3 Stunden dabei und drehe schon am Cappuccinobecher.

    Ich finde den Fehler nicht. Geschweige denn, das ich das für $input3 mit den 3-stelligen Pflichtnachkommastellen hinbekommen habe. Bei normalen rechnen gestern ging es, aber hier geht auch das nicht.

    So, erst einmal Frühstück machen. Brötchen kaufen, Kaffee aufsetzen und dann ganz in Ruhe Luft holen, den Magen füllen und dann ... ???

    LG,
    Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Hi,

    ich dachte du meinst sowas?

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $GUI = GUICreate("Lina Auto-Berechnung", 420, 220, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45, -1, 0x00000018)
    GUICtrlCreateLabel('Ausgangszahl : ', 10, 20, 80, 25)
    $ausgangszahl = GUICtrlCreateInput("", 80, 20, 300, 20)
    GUICtrlCreateLabel('Zahl 1 : ', 10, 50, 80, 25)
    $b1 = GUICtrlCreateInput("", 80, 50, 300, 20, $ES_Number)
    GUICtrlCreateLabel('Zahl 2 : ', 10, 80, 80, 25)
    $b2 = GUICtrlCreateInput("", 80, 80, 300, 20, $ES_Number)
    GUICtrlCreateLabel('Zahl 3 : ', 10, 110, 80, 25)
    $b3 = GUICtrlCreateInput("", 80, 110, 300, 20, $ES_Number)
    $btn = GUICtrlCreateButton("Ok", 10, 195, 160, 20)
    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $btn Or $msg = $GUI_EVENT_CLOSE Then Exit
    WEnd

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

    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $controlID = _WinAPI_LoWord($wParam), $nr
    If $controlID = $ausgangszahl And StringLen(GUICtrlRead($controlID)) <> 0 Then
    $nr = GUICtrlRead($controlID)
    GUICtrlSetData($b1, $nr + 1)
    GUICtrlSetData($b2, $nr + 2)
    GUICtrlSetData($b3 , $nr + 3)
    GUICtrlSetData($b3 , StringFormat("%5.3f", GUICtrlRead($b3)))
    Else
    GUICtrlSetData($b1, 0)
    GUICtrlSetData($b2, 0)
    GUICtrlSetData($b3, 0)
    EndIf
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]

    Mega

    P.S.: Berechnung einfach anpassen. Bisher wird eins addiert und bei Feld 3 werden 3 Pflichnachkommastellen angezeigt.

  • Hallo Mega.

    Bin jetzt nochmals angefangen. Jetzt schaut es so aus:

    Spoiler anzeigen
    [autoit]


    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    case $berechnen

    Global $1oldData = -1
    $1Data = GUICtrlRead($input3)
    If $1Data <> $1oldData Then
    $1oldData = $1Data

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

    ; BERECHNUNG FELD INPUT3
    GUICtrlSetData($input3, GUICtrlRead($input1) * GUICtrlRead($input2)) ; OK
    GUICtrlSetData($input3 , StringFormat("%5.3f", GUICtrlRead($input3))); OK

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

    ; BERECHNUNG FELD INPUT4
    GUICtrlSetData($input4, GUICtrlRead($input3) / GUICtrlRead($h)) ; FEHLER
    GUICtrlSetData($input4, GUICtrlRead($input3) * GUICtrlRead($p1)); FEHLER
    GUICtrlSetData($input4, GUICtrlRead($input3) + GUICtrlRead($p2)); OK
    GUICtrlSetData($input4 , StringFormat("%5.3f", GUICtrlRead($input4)));OK

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

    EndIf

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

    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Ist läuft, bis auf die Zwei Zeilen, wo ich in Script geschrieben habe, das sie fehlerhaft sind.
    Ich habe nun gestern und heute insgesamt 12 Stunden versucht den Fehler selber hin zu bekommen. Aber jetzt wieder mal alles gelöscht und Depri, das ich den Fehler nicht finde. Auch nicht mit der Hilfe und der SuFu.

    Aber ich gebe nicht auf, sondern bitte um Hilfe und ob jemand auch die Hilfe für Blondinen erklären könnte?

    LG, Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Versuch mal:

    [autoit]

    GUICtrlSetData($input4, (GUICtrlRead($input3) / GUICtrlRead($h))) ; FEHLER
    GUICtrlSetData($input4, (GUICtrlRead($input3) * GUICtrlRead($p1)));

    [/autoit]
    • Offizieller Beitrag

    Hallo Alina!

    Was genau meinst Du denn mit "Fehler"?

    In den Zeilen 16-18 schreibst Du drei verschiedene Werte nach $input4, die jeweils den vorherigen überschreiben ohne einen Bezug zu den vorherigen zu haben. Deshalb ist das so ziemlich sinnlos.
    Außerdem wäre es hilfreich zu wissen, um was für GUI-Elemente es sich bei $h, $p1 und $p2 handelt.
    Eine Division durch Null (bzw. ein leeres Inputfeld) ergibt immer "1.#INF". Sowas müßte man ggf. abfangen.

    Achja, und wenn Du die Berechnung doch erst nach Klick auf "Berechnen" durchführst, dann kann das mit $1oldData weg. Das sollte nur dazu dienen, das Flackern der Anzeige zu verhindern.

  • So, nun mal mit einem Bild, da ist alles erklärt.
    Ich weiß einfach nicht wie ich es sonst erklären soll.

    SOOOOOOOORRY

    LG, Crazy-A.

    Neuer Script:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 416, 376, 193, 125)
    $Label1 = GUICtrlCreateLabel("1. Menge", 328, 16, 57, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Input1 = GUICtrlCreateInput("Input1", 8, 16, 313, 21)
    $Label2 = GUICtrlCreateLabel("2. Menge", 328, 48, 57, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Input2 = GUICtrlCreateInput("Input2", 8, 48, 313, 21)
    $Label3 = GUICtrlCreateLabel("1. * 2. Menge", 328, 88, 68, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Input3 = GUICtrlCreateInput("Input3", 8, 88, 313, 21)
    $Label4 = GUICtrlCreateLabel("P1", 328, 120, 17, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Input4 = GUICtrlCreateInput("Input4", 8, 120, 313, 21)
    $Label5 = GUICtrlCreateLabel("P1 = 2.00 % bis 5.00 %", 112, 152, 134, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Input5 = GUICtrlCreateInput("Input5", 8, 152, 89, 21)
    $Label6 = GUICtrlCreateLabel("Wert zwischen 0.55 und 3.60", 112, 184, 170, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Input6 = GUICtrlCreateInput("Input6", 8, 184, 89, 21)
    $Label8 = GUICtrlCreateLabel("-----------------------------------------------------------------------------------------------------------------------------------", 0, 216, 397, 17)
    $Label9 = GUICtrlCreateLabel("Input 1 = Hier erfolg eine Eingabe", 8, 240, 162, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $Label10 = GUICtrlCreateLabel("Input 2 = Hier erfolgt auch eine Eingabe", 8, 256, 192, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $Label11 = GUICtrlCreateLabel("Input 3 = Berechnung: Input 1 * Input 2", 8, 272, 189, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Label12 = GUICtrlCreateLabel("Input 4 = Berechnung: Input 3 / 100 * Input 5 + Input 6", 8, 288, 263, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Label7 = GUICtrlCreateLabel("Input 5 und Input 6 sind veränderbar, aber nur direkt nach dem starten. ", 8, 328, 341, 17)
    $Label13 = GUICtrlCreateLabel("Input 1 und Input 2 ändern sich während damit gearbeitet wird.", 8, 344, 299, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    Eingaben sind Zahlen mit drei Stellen hinterm Punkt als Pflicht.
    FileZilla Server.txt

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Ist es das, was Du willst?

    Spoiler anzeigen
    [autoit]


    #include<GUIConstantsEx.au3>
    #include<WinAPI.au3>
    #include<WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 416, 376, 193, 125)
    $Label1 = GUICtrlCreateLabel("1. Menge", 328, 16, 57, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Input1 = GUICtrlCreateInput("", 8, 16, 313, 21)
    $Label2 = GUICtrlCreateLabel("2. Menge", 328, 48, 57, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Input2 = GUICtrlCreateInput("", 8, 48, 313, 21)
    $Label3 = GUICtrlCreateLabel("1. * 2. Menge", 328, 88, 68, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Input3 = GUICtrlCreateInput("", 8, 88, 313, 21)
    $Label4 = GUICtrlCreateLabel("P1", 328, 120, 17, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Input4 = GUICtrlCreateInput("", 8, 120, 313, 21)
    $Label5 = GUICtrlCreateLabel("P1 = 2.00 % bis 5.00 %", 112, 152, 134, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Input5 = GUICtrlCreateInput("", 8, 152, 89, 21)
    $Label6 = GUICtrlCreateLabel("Wert zwischen 0.55 und 3.60", 112, 184, 170, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Input6 = GUICtrlCreateInput("", 8, 184, 89, 21)
    $Label8 = GUICtrlCreateLabel("-----------------------------------------------------------------------------------------------------------------------------------", 0, 216, 397, 17)
    $Label9 = GUICtrlCreateLabel("Input 1 = Hier erfolg eine Eingabe", 8, 240, 162, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $Label10 = GUICtrlCreateLabel("Input 2 = Hier erfolgt auch eine Eingabe", 8, 256, 192, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $Label11 = GUICtrlCreateLabel("Input 3 = Berechnung: Input 1 * Input 2", 8, 272, 189, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Label12 = GUICtrlCreateLabel("Input 4 = Berechnung: Input 3 / 100 * Input 5 + Input 6", 8, 288, 263, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Label7 = GUICtrlCreateLabel("Input 5 und Input 6 sind veränderbar, aber nur direkt nach dem starten. ", 8, 328, 341, 17)
    $Label13 = GUICtrlCreateLabel("Input 1 und Input 2 ändern sich während damit gearbeitet wird.", 8, 344, 299, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $controlID = _WinAPI_LoWord($wParam)
    Switch $controlID
    Case $Input1, $Input2
    GUICtrlSetData($Input3, GUICtrlRead($Input1) * GUICtrlRead($Input2))
    GUICtrlSetData($Input4, StringFormat('%.3f', GUICtrlRead($Input3) / 100 * GUICtrlRead($Input5) + GUICtrlRead($Input6)))
    Case $Input5, $Input6
    GUICtrlSetData($Input5, StringFormat('%.3f', GUICtrlRead($Input5)))
    GUICtrlSetData($Input6, StringFormat('%.3f', GUICtrlRead($Input6)))
    EndSwitch
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]
  • Oscar

    Ich glaube das ich jetzt verstehen muß, was da genau passiert, aber das ganze entspricht nun das was ich versucht habe zu lösen.

    Nun kommen noch cirka 15 Rechenaufgaben, die ich mir zur Aufgabe gestellt habe und dann sollte auch ich es verstanden haben.

    Vielen lieben Dank !!!

    Crazy-A

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Ich habe das Script noch etwas verbessert, so dass man Input5 und 6 besser eingeben kann, bevor es auf drei Nachkommastellen gebracht wird:

    Spoiler anzeigen
    [autoit]


    #include<GUIConstantsEx.au3>
    #include<WinAPI.au3>
    #include<WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 416, 376, 193, 125)
    $Label1 = GUICtrlCreateLabel("1. Menge", 328, 16, 57, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Input1 = GUICtrlCreateInput("", 8, 16, 313, 21)
    $Label2 = GUICtrlCreateLabel("2. Menge", 328, 48, 57, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Input2 = GUICtrlCreateInput("", 8, 48, 313, 21)
    $Label3 = GUICtrlCreateLabel("1. * 2. Menge", 328, 88, 68, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Input3 = GUICtrlCreateInput("", 8, 88, 313, 21)
    $Label4 = GUICtrlCreateLabel("P1", 328, 120, 17, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Input4 = GUICtrlCreateInput("", 8, 120, 313, 21)
    $Label5 = GUICtrlCreateLabel("P1 = 2.00 % bis 5.00 %", 112, 152, 134, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Input5 = GUICtrlCreateInput("", 8, 152, 89, 21)
    $Label6 = GUICtrlCreateLabel("Wert zwischen 0.55 und 3.60", 112, 184, 170, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Input6 = GUICtrlCreateInput("", 8, 184, 89, 21)
    $Label8 = GUICtrlCreateLabel("-----------------------------------------------------------------------------------------------------------------------------------", 0, 216, 397, 17)
    $Label9 = GUICtrlCreateLabel("Input 1 = Hier erfolg eine Eingabe", 8, 240, 162, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $Label10 = GUICtrlCreateLabel("Input 2 = Hier erfolgt auch eine Eingabe", 8, 256, 192, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $Label11 = GUICtrlCreateLabel("Input 3 = Berechnung: Input 1 * Input 2", 8, 272, 189, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Label12 = GUICtrlCreateLabel("Input 4 = Berechnung: Input 3 / 100 * Input 5 + Input 6", 8, 288, 263, 17)
    GUICtrlSetColor(-1, 0x0000FF)
    $Label7 = GUICtrlCreateLabel("Input 5 und Input 6 sind veränderbar, aber nur direkt nach dem starten. ", 8, 328, 341, 17)
    $Label13 = GUICtrlCreateLabel("Input 1 und Input 2 ändern sich während damit gearbeitet wird.", 8, 344, 299, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    Global $Timer1, $Timer2, $Change1 = False, $Change2 = False
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    If (TimerDiff($Timer1) > 1000) And ($Change1 = True) Then
    $Change1 = False
    GUICtrlSetData($Input5, StringFormat('%.3f', GUICtrlRead($Input5)))
    GUICtrlSetState($Input5, $GUI_FOCUS)
    EndIf
    If (TimerDiff($Timer2) > 1000) And ($Change2 = True) Then
    $Change2 = False
    GUICtrlSetData($Input6, StringFormat('%.3f', GUICtrlRead($Input6)))
    GUICtrlSetState($Input6, $GUI_FOCUS)
    EndIf
    WEnd

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

    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $controlID = _WinAPI_LoWord($wParam)
    Switch $controlID
    Case $Input1, $Input2
    $Change1 = False
    $Change2 = False
    GUICtrlSetData($Input3, GUICtrlRead($Input1) * GUICtrlRead($Input2))
    GUICtrlSetData($Input4, StringFormat('%.3f', GUICtrlRead($Input3) / 100 * GUICtrlRead($Input5) + GUICtrlRead($Input6)))
    Case $Input5
    $Change1 = True
    $Change2 = False
    $Timer1 = TimerInit()
    Case $Input6
    $Change1 = False
    $Change2 = True
    $Timer2 = TimerInit()
    EndSwitch
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]
  • Oscar .

    DANKE DANKE.

    Ich habe das erste gerade mal verstanden udn cirka 15 Formeln nun damit getestet.
    Ich habe in der Zeit cirka 50.000 Hirnzellen verloren und 5 Liter Cappuccino vernichtet.
    :rofl:;):rofl:;):rofl:;):rofl:;):rofl:

    LG, Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl