Autoit - Mehrere Checkboxen auslesen und status in variable/array packen

    • Offizieller Beitrag

    Wenn man wirklich eine größere Anzahl Checkboxen verwalten möchte, bietet sich zum Bsp. solche Lösung an:

    Spoiler anzeigen
    [autoit]

    ; Muster Checkbox-Bearbeitung
    ; Ziel: einfache Abfrage, welche CB aktiviert sind

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

    #include <GUIConstants.au3>
    Opt('GUIOnEventMode', 1)
    Opt("MustDeclareVars", 1)
    Global $bCheckAll, $bUnCheckAll, $GUI, $i, $str
    Global $arCB[20][2] ; Array für Handle und Dual-Wert der CB
    For $i = 0 To UBound($arCB) -1
    $arCB[$i][1] = 2^$i ; Zuweisung eindeutiger Wert
    Next
    Global $Checked = 0 ; Variable nimmt Status ALLER Checkboxen in einem Wert auf,
    ; Startstatus für alle: UNCHECKED
    Global $w = 500, $h = 20*30+40, $l = (@DesktopWidth-$w)/2, $t = (@DesktopHeight-$h)/2
    Global $top = -10
    $GUI = GUICreate('Test Checkbox', $w, $h, $l, $t)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Ende')
    For $i = 0 To UBound($arCB) -1
    $top += 30
    $arCB[$i][0] = GUICtrlCreateCheckbox('CheckBox_' & $i+1, 40, $top, 120)
    GUICtrlSetOnEvent(-1, '_ClickCB')
    Next
    $bCheckAll = GUICtrlCreateButton('Alle markieren', 250, 20, 150, 21)
    GUICtrlSetOnEvent(-1, '_CheckAll')
    $bUnCheckAll = GUICtrlCreateButton('Markierung aufheben', 250, 50, 150, 21)
    GUICtrlSetOnEvent(-1, '_UnCheckAll')
    GUISetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Ende()
    Exit
    EndFunc

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

    Func _ClickCB()
    For $i = 0 To UBound($arCB) -1
    If $arCB[$i][0] = @GUI_CtrlId Then
    $Checked = BitXOR($Checked, $arCB[$i][1])
    _ReadCB()
    ExitLoop
    EndIf
    Next
    EndFunc

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

    Func _CheckAll()
    For $i = 0 To UBound($arCB) -1
    If Not BitAND($Checked, $arCB[$i][1]) Then
    GUICtrlSetState($arCB[$i][0], $GUI_CHECKED)
    $Checked = BitXOR($Checked, $arCB[$i][1])
    EndIf
    Next
    _ReadCB()
    EndFunc

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

    Func _UnCheckAll()
    For $i = 0 To UBound($arCB) -1
    If BitAND($Checked, $arCB[$i][1]) Then
    GUICtrlSetState($arCB[$i][0], $GUI_UNCHECKED)
    $Checked = BitXOR($Checked, $arCB[$i][1])
    EndIf
    Next
    _ReadCB()
    EndFunc

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

    Func _ReadCB() ; Fkt. dient nur zur Ausgabe, welche CB markiert sind
    Local $str = 'Markiert: '
    For $i = 0 To UBound($arCB) -1
    If BitAND($Checked, $arCB[$i][1]) Then $str &= $i+1 & ', '
    Next
    WinSetTitle($GUI, '', StringTrimRight($str, 2))
    EndFunc

    [/autoit]
  • also ich hab das ganze jetzt so gelöst:
    (ist zwar vllt nicht die einfachste methode aber es scheint zu funktioniern :)

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEX.au3>
    #include <Constants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <GuiToolTip.au3>
    #include <GuiEdit.au3>
    #include <GUIConstants.au3>
    #include <ListboxConstants.au3>
    #include <ButtonConstants.au3>
    #include <StaticConstants.au3>
    #include <MathEx.au3>
    #include <Array.au3>
    #include <GDIPlus.au3>

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

    ;----------------------- Kosten Keule -------------------------------------------------------------------

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

    Dim $holz_keule = 95
    Dim $lehm_keule = 75
    Dim $eisen_keule = 40
    Dim $g3de_keule = 40

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

    ;----------------------- Kosten Axt -------------------------------------------------------------------

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

    Dim $holz_axt = 130
    Dim $lehm_axt = 120
    Dim $eisen_axt = 170
    Dim $g3de_axt = 70

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

    ;----------------------- Kosten Teuto -------------------------------------------------------------------

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

    Dim $holz_teuto = 450
    Dim $lehm_teuto = 515
    Dim $eisen_teuto = 480
    Dim $g3de_teuto = 80

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

    ;----------------------- Kosten Speer -------------------------------------------------------------------

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

    Dim $holz_speer = 145
    Dim $lehm_speer = 70
    Dim $eisen_speer = 85
    Dim $g3de_speer = 40

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

    ;----------------------- Kosten Pala -------------------------------------------------------------------

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

    Dim $holz_pala = 370
    Dim $lehm_pala = 270
    Dim $eisen_pala = 290
    Dim $g3de_pala = 75

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

    ;----------------------- Kosten Kundi -------------------------------------------------------------------

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

    Dim $holz_kundi = 160
    Dim $lehm_kundi = 100
    Dim $eisen_kundi = 50
    Dim $g3de_kundi = 50

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

    ;----------------------- Kosten Ramme -------------------------------------------------------------------

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

    Dim $holz_ramme = 1000
    Dim $lehm_ramme = 300
    Dim $eisen_ramme = 350
    Dim $g3de_ramme = 70

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

    ;----------------------- Kosten Kata -------------------------------------------------------------------

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

    Dim $holz_kata = 900
    Dim $lehm_kata = 1200
    Dim $eisen_kata = 600
    Dim $g3de_kata = 60

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

    ;--------------------

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

    dim $prozent_keule, $prozent_axt, $prozent_teuto, $prozent_speer, $prozent_pala, $prozent_kundi, $prozent_ramme, $prozent_kata

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

    ;----------------------- Menü -------------------------------------------------------------------

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

    $Main = GUICreate("Travian ResourceManager V0.12.9.2 beta - [Germane]", 445, 380)
    $MenuItem1 = GUICtrlCreateMenu("Über")
    $about = GUICtrlCreateMenuItem("Informationen", $MenuItem1)

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

    $Form1 = GUICreate("Informationen", 320, 153, 552, 264)
    $Label = GUICtrlCreateLabel("Travian ResourceManager V0.8.9.3 beta - [Germane]", 16, 20, 196, 17)
    $Labe2 = GUICtrlCreateLabel("Made bye Infected", 16, 40, 196, 17)
    $Labe3 = GUICtrlCreateLabel("http://infected.bplaced.net/", 16, 100, 196, 17)

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

    GUISetState(@SW_SHOW, $Main)

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

    ;------------------------ Oberfläche / text -------------------------------------------------------------------

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

    GUICtrlCreateLabel("Bitte Rohstoffmengen eingeben die zur Verfügung stehen:", 20, 25, 380, 20)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    GUICtrlCreateLabel("Wählen Sie Truppen aus, die in die Berechnung einfließen:", 20, 120, 380, 40)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")

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

    GUICtrlCreateLabel("Prozent:", 108, 150, 130, 15)
    GUICtrlCreateLabel("Prozent:", 248, 150, 270, 15)
    GUICtrlCreateLabel("Prozent:", 388, 150, 410, 15)
    GUICtrlCreateLabel("___________________________________________________________________________", 0, 290, 470, 15)
    GUICtrlSetColor(-1, 0xbebebe)
    GUICtrlCreateLabel("___________________________________________________________________________", 0, 90, 470, 15)
    GUICtrlSetColor(-1, 0xbebebe)
    GUICtrlCreateLabel("___________________________________________________________________________", 0, 0, 470, 15)
    GUICtrlSetColor(-1, 0xbebebe)

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

    ;------------------------ Rohstofficons -------------------------------------------------------------------

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

    GUICtrlCreatePic("Icons\h.gif", 27, 62, 16, 16)
    GUICtrlCreatePic("Icons\l.gif", 127, 62, 16, 16)
    GUICtrlCreatePic("Icons\e.gif", 227, 62, 16, 16)
    GUICtrlCreatePic("Icons\g.gif", 327, 62, 16, 16)

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

    ;------------------------ Rohstoffinputs -------------------------------------------------------------------

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

    $holz = GUICtrlCreateInput("", 45, 60, 70, 20, $ES_NUMBER)
    $lehm = GUICtrlCreateInput("", 145, 60, 70, 20, $ES_NUMBER)
    $eisen = GUICtrlCreateInput("", 245, 60, 70, 20, $ES_NUMBER)
    $g3de = GUICtrlCreateInput("", 345, 60, 70, 20, $ES_NUMBER)

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

    ;------------------------ Truppenicons -------------------------------------------------------------------

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

    GUICtrlCreatePic("Icons\1.gif", 20, 166, 16, 16)
    GUICtrlCreatePic("Icons\3.gif", 20, 202, 16, 16)
    GUICtrlCreatePic("Icons\6.gif", 20, 238, 16, 16)

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

    GUICtrlCreatePic("Icons\2.gif", 162, 166, 16, 16)
    GUICtrlCreatePic("Icons\5.gif", 162, 202, 16, 16)
    GUICtrlCreatePic("Icons\4.gif", 162, 238, 16, 16)

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

    GUICtrlCreatePic("Icons\7.gif", 298, 166, 16, 16)
    GUICtrlCreatePic("Icons\8.gif", 298, 202, 16, 16)

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

    ;------------------------ OK-Button -------------------------------------------------------------------

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

    $ok = GUICtrlCreateButton("Berechnen", 165, 320, 110, 30, 0)
    GUISetState(@SW_SHOW)

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

    ;------------------------ Toleranz -------------------------------------------------------------------

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

    Toleranz()

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

    Func Toleranz()

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

    GUICtrlCreateLabel("Toleranz:", 325, 323)
    GUICtrlCreateCombo("", 385, 320, 45, 20) ; create first item
    GUICtrlSetData(-1, " 0%| 5%|10%|25%|50%", "25%") ; add other item snd set a new default

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

    GUISetState()

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

    ; Run the GUI until the dialog is closed
    ;While 1
    ;$msg = GUIGetMsg()

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

    ;If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    ;WEnd
    EndFunc ;==>Toleranz

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

    ;------------------------ Prozent je Truppeneinheit -------------------------------------------------------------------

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

    Prozent()

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

    Func Prozent()

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

    dim $prozent_ges, $prozent_keule, $prozent_axt, $prozent_teuto, $prozent_speer, $prozent_pala, $prozent_kundi, $prozent_ramme, $prozent_kata

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

    $prozent_keule = GUICtrlCreateInput("0", 110, 165, 35, 20, $ES_NUMBER)
    $updown1 = GUICtrlCreateUpdown($prozent_keule)
    GUICtrlSetLimit(-1, 100, 0)

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

    $prozent_axt = GUICtrlCreateInput("0", 110, 200, 35, 20, $ES_NUMBER)
    $updown2 = GUICtrlCreateUpdown($prozent_axt)
    GUICtrlSetLimit(-1, 100, 0)

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

    $prozent_teuto = GUICtrlCreateInput("0", 110, 235, 35, 20, $ES_NUMBER)
    $updown3 = GUICtrlCreateUpdown($prozent_teuto)
    GUICtrlSetLimit(-1, 100, 0)

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

    $prozent_speer = GUICtrlCreateInput("0", 250, 165, 35, 20, $ES_NUMBER)
    $updown4 = GUICtrlCreateUpdown($prozent_speer)
    GUICtrlSetLimit(-1, 100, 0)

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

    $prozent_pala = GUICtrlCreateInput("0", 250, 200, 35, 20, $ES_NUMBER)
    $updown5 = GUICtrlCreateUpdown($prozent_pala)
    GUICtrlSetLimit(-1, 100, 0)

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

    $prozent_kundi = GUICtrlCreateInput("0", 250, 235, 35, 20, $ES_NUMBER)
    $updown7 = GUICtrlCreateUpdown($prozent_kundi)
    GUICtrlSetLimit(-1, 100, 0)

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

    $prozent_ramme = GUICtrlCreateInput("0", 390, 165, 35, 20, $ES_NUMBER)
    $updown6 = GUICtrlCreateUpdown($prozent_ramme)
    GUICtrlSetLimit(-1, 100, 0)

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

    $prozent_kata = GUICtrlCreateInput("0", 390, 200, 35, 20, $ES_NUMBER)
    $updown7 = GUICtrlCreateUpdown($prozent_kata)
    GUICtrlSetLimit(-1, 100, 0)

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

    GUISetState()
    EndFunc ;==>Prozent

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

    ;------------------------ Checkboxen für Truppen -------------------------------------------------------------------

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

    $keule = GUICtrlCreateCheckbox("Keulen", 40, 165)
    $axt = GUICtrlCreateCheckbox("Äxte", 40, 200)
    $teuto = GUICtrlCreateCheckbox("Teutonen", 40, 235)

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

    $speer = GUICtrlCreateCheckbox("Speere", 182, 165)
    $pala = GUICtrlCreateCheckbox("Paladine", 182, 200)
    $kundi = GUICtrlCreateCheckbox("Kundi's", 182, 235)

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

    $ramme = GUICtrlCreateCheckbox("Rammen", 318, 165)
    $kata = GUICtrlCreateCheckbox("Katapulte", 318, 200)

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

    ;------------------------ Auswahl Truppen -------------------------------------------------------------------
    ; Berechnung Keulen

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

    Truppenauswahl()

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

    Func Truppenauswahl()

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

    $holz = GUICtrlRead($holz)
    $lehm = GUICtrlRead($lehm)
    $eisen = GUICtrlRead($eisen)
    $g3de = GUICtrlRead($g3de)

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

    if GUICtrlRead($keule) = $GUI_CHECKED Then
    $holz_keule_ges = Floor($holz / $holz_keule)
    $lehm_keule_ges = Floor($lehm / $lehm_keule)
    $eisen_keule_ges = Floor($eisen / $eisen_keule)
    $g3de_keule_ges = Floor($g3de / $g3de_keule)

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

    $stringload_keule = StringSplit($holz_keule_ges & "," & $lehm_keule_ges & "," & $eisen_keule_ges & "," & $g3de_keule_ges, ",", 2)
    dim $nummberMin_keule = _MathEx_Min($stringload_keule)

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

    MsgBox(0, "Keulen", "Maximale Keulen: " & $nummberMin_keule)
    Else
    endif

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

    ;------------------------ Berechnung Äxte -------------------------------------------------------------------

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

    if GUICtrlRead($axt) = $GUI_CHECKED Then
    $holz_axt_ges = Floor($holz / $holz_axt)
    $lehm_axt_ges = Floor($lehm / $lehm_axt)
    $eisen_axt_ges = Floor($eisen / $eisen_axt)
    $g3de_axt_ges = Floor($g3de / $g3de_axt)

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

    $stringload_axt = StringSplit($holz_axt_ges & "," & $lehm_axt_ges & "," & $eisen_axt_ges & "," & $g3de_axt_ges, ",", 2)
    dim $nummberMin_axt = _MathEx_Min($stringload_axt)

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

    MsgBox(0, "Äxte", "Maximale Äxte: " & $nummberMin_axt)
    Else
    endif

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

    ;------------------------ Berechnung Teutonen -------------------------------------------------------------------

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

    if GUICtrlRead($teuto) = $GUI_CHECKED Then
    $holz_teuto_ges = Floor($holz / $holz_teuto)
    $lehm_teuto_ges = Floor($lehm / $lehm_teuto)
    $eisen_teuto_ges = Floor($eisen / $eisen_teuto)
    $g3de_teuto_ges = Floor($g3de / $g3de_teuto)

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

    $stringload_teuto = StringSplit($holz_teuto_ges & "," & $lehm_teuto_ges & "," & $eisen_teuto_ges & "," & $g3de_teuto_ges, ",", 2)
    dim $nummberMin_teuto = _MathEx_Min($stringload_teuto)

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

    MsgBox(0, "Teutonen", "Maximale Teutonen: " & $nummberMin_teuto)
    Else
    endif

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

    ;------------------------ Berechnung Speere -------------------------------------------------------------------

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

    if GUICtrlRead($speer) = $GUI_CHECKED Then
    $holz_speer_ges = Floor($holz / $holz_speer)
    $lehm_speer_ges = Floor($lehm / $lehm_speer)
    $eisen_speer_ges = Floor($eisen / $eisen_speer)
    $g3de_speer_ges = Floor($g3de / $g3de_speer)

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

    $stringload_speer = StringSplit($holz_speer_ges & "," & $lehm_speer_ges & "," & $eisen_speer_ges & "," & $g3de_speer_ges, ",", 2)
    dim $nummberMin_speer = _MathEx_Min($stringload_speer)

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

    MsgBox(0, "Speere", "Maximale Speere: " & $nummberMin_speer)
    Else
    endif

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

    ;------------------------ Berechnung Paladine -------------------------------------------------------------------

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

    if GUICtrlRead($pala) = $GUI_CHECKED Then
    $holz_pala_ges = Floor($holz / $holz_pala)
    $lehm_pala_ges = Floor($lehm / $lehm_pala)
    $eisen_pala_ges = Floor($eisen / $eisen_pala)
    $g3de_pala_ges = Floor($g3de / $g3de_pala)

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

    $stringload_pala = StringSplit($holz_pala_ges & "," & $lehm_pala_ges & "," & $eisen_pala_ges & "," & $g3de_pala_ges, ",", 2)
    dim $nummberMin_pala = _MathEx_Min($stringload_pala)

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

    MsgBox(0, "Paladine", "Maximale Paladine: " & $nummberMin_pala)
    Else
    endif

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

    ;------------------------ Berechnung Kundschafter -------------------------------------------------------------------

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

    if GUICtrlRead($kundi) = $GUI_CHECKED Then
    $holz_kundi_ges = Floor($holz / $holz_kundi)
    $lehm_kundi_ges = Floor($lehm / $lehm_kundi)
    $eisen_kundi_ges = Floor($eisen / $eisen_kundi)
    $g3de_kundi_ges = Floor($g3de / $g3de_kundi)

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

    $stringload_kundi = StringSplit($holz_kundi_ges & "," & $lehm_kundi_ges & "," & $eisen_kundi_ges & "," & $g3de_kundi_ges, ",", 2)
    dim $nummberMin_kundi = _MathEx_Min($stringload_kundi)

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

    MsgBox(0, "Kundschafter", "Maximale Kundschafter: " & $nummberMin_kundi)
    Else
    endif

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

    ;------------------------ Berechnung Rammen -------------------------------------------------------------------

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

    if GUICtrlRead($ramme) = $GUI_CHECKED Then
    $holz_ramme_ges = Floor($holz / $holz_ramme)
    $lehm_ramme_ges = Floor($lehm / $lehm_ramme)
    $eisen_ramme_ges = Floor($eisen / $eisen_ramme)
    $g3de_ramme_ges = Floor($g3de / $g3de_ramme)

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

    $stringload_ramme = StringSplit($holz_ramme_ges & "," & $lehm_ramme_ges & "," & $eisen_ramme_ges & "," & $g3de_ramme_ges, ",", 2)
    dim $nummberMin_ramme = _MathEx_Min($stringload_ramme)

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

    MsgBox(0, "Rammen", "Maximale Rammen: " & $nummberMin_ramme)
    Else
    endif

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

    ;------------------------ Berechnung Katapulte -------------------------------------------------------------------

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

    if GUICtrlRead($kata) = $GUI_CHECKED Then
    $holz_kata_ges = Floor($holz / $holz_kata)
    $lehm_kata_ges = Floor($lehm / $lehm_kata)
    $eisen_kata_ges = Floor($eisen / $eisen_kata)
    $g3de_kata_ges = Floor($g3de / $g3de_kata)

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

    $stringload_kata = StringSplit($holz_kata_ges & "," & $lehm_kata_ges & "," & $eisen_kata_ges & "," & $g3de_kata_ges, ",", 2)
    dim $nummberMin_kata = _MathEx_Min($stringload_kata)

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

    MsgBox(0, "Kattapulte", "Maximale Kattapulte: " & $nummberMin_kata)
    Else
    endif
    EndFunc

    [/autoit]

    mein problem ist es, ich möchte in den inputboxen mit der updown funktion bestimmen, ob alle prozentangaben zusammen genau 100 ergeben
    falls zu viele prozent vergeben worden sind, gibt er eine fehlermeldung
    bei zu wenigen prozent ebenfalls nur wenn es genau 100 prozent, verteilt auf die in dem fall 8 eingabefelder, sind
    soll er fort fahren.. hab da mal so angesetzt:


    Spoiler anzeigen
    [autoit]

    Prozent_100()
    Prozent_100()

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

    Func Prozent_100()

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

    While 1

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

    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    case $ok

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

    $keule = GUICtrlCreateCheckbox("Keulen", 40, 165)
    $axt = GUICtrlCreateCheckbox("Äxte", 40, 200)
    $teuto = GUICtrlCreateCheckbox("Teutonen", 40, 235)

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

    $speer = GUICtrlCreateCheckbox("Speere", 182, 165)
    $pala = GUICtrlCreateCheckbox("Paladine", 182, 200)
    $kundi = GUICtrlCreateCheckbox("Kundi's", 182, 235)

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

    $ramme = GUICtrlCreateCheckbox("Rammen", 318, 165)
    $kata = GUICtrlCreateCheckbox("Katapulte", 318, 200)

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

    $prozent_keule = GUICtrlRead($prozent_keule)
    $prozent_axt = GUICtrlRead($prozent_axt)
    $prozent_teuto = GUICtrlRead($prozent_teuto)

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

    $prozent_speer = GUICtrlRead($prozent_speer)
    $prozent_pala = GUICtrlRead($prozent_pala)
    $prozent_kundi = GUICtrlRead($prozent_kundi)

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

    $prozent_ramme = GUICtrlRead($prozent_ramme)
    $prozent_kata = GUICtrlRead($prozent_kata)
    $prozent_ges = $prozent_keule+$prozent_axt+$prozent_teuto+$prozent_speer+$prozent_pala+$prozent_kundi+$prozent_ramme+$prozent_kata
    switch $msg
    case $prozent_ges < 100
    msgbox(0, "", "es wurden noch nicht alle prozente verteilt!")
    Case $prozent_ges > 100
    msgbox(0, "", "es wurden zu viele prozente verteilt!")
    Case $prozent_ges = 100
    msgbox(0, "", "passt")
    ExitLoop
    EndSwitch
    EndSwitch
    wend
    EndFunc

    [/autoit]

    problem ist, wenn ich genau 100% verteile bringt er auch die messagebox "passt" aber er rechnet nicht die werte aus bei denen ein zuvor der haken gesetzt wurde, sondern beendet das programm einfach
    bei einer zu hohen %-verteilung bringt er mir richtigkeitshalber "es wurden zu viele prozent verteilt" jedoch kann ich dann beim korrigieren eingeben was ich möchte, er bringt dann nur noch das zu wenig vergeben wurde (unabhängig davon das ich wohlmöglich beim 2 mal genau 100 prozent verteilt hab oder wieder zu viel)

    ich denke es liegt an der Aktualisierung. er frägt nicht mehr nach was letztendlich von user verändert worden ist...
    aber wenn ich jetzt die checkboxeingabe mit in diese while schleife pack dann aktuallisiert er diese ständig und dann funktioniert so ziemlich gar nichts mehr :(

    WAS MACH ICH FALSCH? ?( ?( ?(

    Einmal editiert, zuletzt von Inferior (20. Juni 2010 um 15:11)