Felder füllung

  • Moin Moin,

    ich möchte in meinem Gui den Prozentualen Anteil von automatisch berechnen lassen, nachdem Felder gefüllt worden sind.

    Die Summe Berechne ich hiermit

    [autoit]

    Func Siebanalyse_Rechnung($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndEdit
    Local $hIstrahlmittel_siebanalyse_gewicht_1 = GUICtrlGetHandle($strahlmittel_siebanalyse_gewicht_1), _
    $hIstrahlmittel_siebanalyse_gewicht_2 = GUICtrlGetHandle($strahlmittel_siebanalyse_gewicht_2), _
    $hIstrahlmittel_siebanalyse_gewicht_3 = GUICtrlGetHandle($strahlmittel_siebanalyse_gewicht_3), _
    $hIstrahlmittel_siebanalyse_gewicht_4 = GUICtrlGetHandle($strahlmittel_siebanalyse_gewicht_4), _
    $hIstrahlmittel_siebanalyse_gewicht_5 = GUICtrlGetHandle($strahlmittel_siebanalyse_gewicht_5), _
    $hIstrahlmittel_siebanalyse_gewicht_6 = GUICtrlGetHandle($strahlmittel_siebanalyse_gewicht_6), _
    $hIstrahlmittel_siebanalyse_gewicht_7 = GUICtrlGetHandle($strahlmittel_siebanalyse_gewicht_7), _
    $hIstrahlmittel_siebanalyse_gewicht_8 = GUICtrlGetHandle($strahlmittel_siebanalyse_gewicht_8), _
    $hIstrahlmittel_siebanalyse_gewicht_boden = GUICtrlGetHandle($strahlmittel_siebanalyse_gewicht_boden), _
    $hIstrahlmittel_siebanalyse_gewicht_summe = GUICtrlGetHandle($strahlmittel_siebanalyse_gewicht_summe)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF)
    $iCode = BitShift($iwParam, 16)
    Switch $hWndFrom
    Case $hIstrahlmittel_siebanalyse_gewicht_1, $hIstrahlmittel_siebanalyse_gewicht_2, $hIstrahlmittel_siebanalyse_gewicht_3, _
    $hIstrahlmittel_siebanalyse_gewicht_4, $hIstrahlmittel_siebanalyse_gewicht_5, $hIstrahlmittel_siebanalyse_gewicht_6, _
    $hIstrahlmittel_siebanalyse_gewicht_7, $hIstrahlmittel_siebanalyse_gewicht_8, $hIstrahlmittel_siebanalyse_gewicht_boden, _
    $hIstrahlmittel_siebanalyse_gewicht_summe
    Switch $iCode
    Case $EN_KILLFOCUS
    GUICtrlSetData($strahlmittel_siebanalyse_gewicht_summe, GUICtrlRead($strahlmittel_siebanalyse_gewicht_1) + _
    GUICtrlRead($strahlmittel_siebanalyse_gewicht_2) + GUICtrlRead($strahlmittel_siebanalyse_gewicht_3) + _
    GUICtrlRead($strahlmittel_siebanalyse_gewicht_4) + GUICtrlRead($strahlmittel_siebanalyse_gewicht_5) + _
    GUICtrlRead($strahlmittel_siebanalyse_gewicht_6) + GUICtrlRead($strahlmittel_siebanalyse_gewicht_7) + _
    GUICtrlRead($strahlmittel_siebanalyse_gewicht_8) + GUICtrlRead($strahlmittel_siebanalyse_gewicht_boden) _
    )
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]

    Die Felder der späteren Ausgabe für den Prozentualen Anteil haben folgenden namen.. (den gleichen wie oben nur anstelle gewicht steht anzahl)

    z.B. $strahlmittel_siebanalyse_gewicht_1

    Es handelt sich hierbei um Input Boxen

    Einmal editiert, zuletzt von eketrix (8. Juni 2010 um 12:58)

  • Hallo eketrix,

    das komplette Skript wäre hilfreich. Das sollte aber klappen (vorausgesetzt Summe = 100%):

    [autoit]

    GUICtrlSetData($strahlmittel_siebanalyse_Anzahl_1, Round(GUICtrlRead($strahlmittel_siebanalyse_gewicht_1) / _
    GUICtrlRead($strahlmittel_siebanalyse_gewicht_summe) *100,2)

    [/autoit]

    mfg (Auto)Bert

  • Es geht mir um die Füllung der Felder.

    Sprich ich habe 2 Felder schreibn in eins was rein und das andere füllt sich, da hängt es bei meinem Script.

    Ich habe es schon so probiert, aber kein Erfolg:

    [autoit]

    $test = GUICtrlRead($strahlmittel_siebanalyse_gewicht_1)
    If $test = "" Then
    Exit
    Else
    $strahlmittel_siebanalyse_anteil_1_prozent = $strahlmittel_siebanalyse_gewicht_1 * 100 / $strahlmittel_siebanalyse_gewicht_summe
    GUICtrlSetData($strahlmittel_siebanalyse_anteil_1,$strahlmittel_siebanalyse_anteil_1_prozent)

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

    EndIf

    [/autoit]
  • Ich hatte dir doch folgendes Beispiel geschickt...

    Spoiler anzeigen
    [autoit]

    Dim $controlnr_inhalt[10]
    Dim $controlnr_label[10]
    Dim $inhalt[10]
    Dim $inhalt_old[10]
    Local $summe = 0

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

    $gui = GUICreate("Zahlen eintragen:")
    For $i = 1 To 8
    $controlnr_inhalt[$i] = GUICtrlCreateInput("", 20, $i * 25, 100)
    $controlnr_label[$i] = GUICtrlCreateLabel("0 %", 200, $i * 25, 50)
    $inhalt[$i]=0
    $inhalt_old[$i]=0
    Next

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

    GUISetState()

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

    While 1
    For $i = 1 To 8
    $inhalt[$i] = Number(GUICtrlRead($controlnr_inhalt[$i]))
    If $inhalt[$i] <> $inhalt_old[$i] Then
    $summe = $summe - $inhalt_old[$i] + $inhalt[$i]
    $inhalt_old[$i] = $inhalt[$i]
    For $i = 1 To 8
    If $inhalt[$i] <> 0 Then
    $prozent = Int(100 * $inhalt[$i] / $summe)
    Else
    $prozent = 0
    EndIf
    GUICtrlSetData($controlnr_label[$i], $prozent & " %")
    Next
    EndIf
    Next
    WEnd

    [/autoit]

    du musst doch nur noch die variablen übertragen....

  • Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 272, 47, 254, 124)
    $Input1 = GUICtrlCreateInput("", 8, 8, 121, 21)
    $Input2 = GUICtrlCreateInput("", 136, 8, 121, 21)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg#include <EditConstants.au3>
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Input1
    GUICtrlSetData($Input2, GUICtrlRead($Input1) * 2)
    EndSwitch
    WEnd

    [/autoit]
    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Form1", 272, 44, 254, 124)
    $Input1 = GUICtrlCreateInput("Input1", 8, 8, 121, 21)
    GUICtrlSetOnEvent(-1, "_fuellen")
    $Input2 = GUICtrlCreateInput("Input2", 136, 8, 121, 21)
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _fuellen()
    GUICtrlSetData($Input2, GUICtrlRead($Input1) * 2)
    EndFunc ;==>_fuellen

    [/autoit]
    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 268, 41, 254, 124)
    $Input1 = GUICtrlCreateInput("", 8, 8, 121, 21)
    $Input2 = GUICtrlCreateInput("", 136, 8, 121, 21)
    GUISetState(@SW_SHOW)

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

    AdlibRegister("_fuellen")

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

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

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

    EndSwitch
    WEnd

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

    Func _fuellen()
    GUICtrlSetData($input2, GUICtrlRead($input1)*10)
    Sleep(100)
    EndFunc

    [/autoit]

    Sowas in die Richtung? Die Eingaben müssten natürlih noch geprüft werden.