Wert in einem Input mit UpDown-Arrows verändern

  • Hallo,

    ich hatte schon versucht durch BugFix's Hilfe zu lösen, was aber dann doch nicht richtig geglückt ist.

    So ähnlich hat mir BugFix geholfen:

    [autoit]

    Global $aLabel[10] = ['Schwarz','Braun','Rot','Orange','Gelb','Grün','Blau','Violett','Grau','Weiß']
    Global $index = 0

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

    $gui = GUICreate('test')
    $Input = GUICtrlCreateInput("", 40, 120, 97, 21)
    $Updown1 = GUICtrlCreateUpdown($Input)
    GUISetState()

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

    GUICtrlSetData($Input, $aLabel[0])

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

    While 1
    Switch GUIGetMsg()
    Case $Updown1
    If $index < 10 Then
    $index += 1
    GUICtrlSetData($Input, $aLabel[$index])
    EndIf
    Case -3
    Exit
    EndSwitch
    WEnd

    [/autoit]


    Es soll am Ende ein Programm werden, dass die Farbcodierung von Widerständen ausrechnet, falls einer die Frage hat, was es mit den Farben auf sich hat.
    Das 1. Problem ist, wenn ich bei den UpDown Arrows, nach unten drücke, fährt er trotzdem normal fort. Also wenn ich bei Orange bin und nach unten drücke, müsste eigentlich Rot kommen, aber es kommt Gelb.

    Das 2. Problem ist, nach Weiß, wenn ich da Up drücke, macht der ein Error in Zeile 16

    Ich hoffe ihr könnt ihr helfen, ich hab selber schon probiert eine If Abfrage zu machen, dass wenn $index = 11 ist, dass er dann wieder von vorn startet, aber das ist mir nicht gelungen.


    MfG

  • Lässt sich das aber auch mit Texten verwirklichen?

    EDIT: Das ist mein jetziger Fortschritt und da will ich halt die Farben einstellen und mit Buttons ist das recht kompliziert, da es sosnt mit dem Platz dumm wird und ich möchte auch nicht alles umstrukturieren, da es bis hier shcon Zeit gekostet hat, es ist nur ein Teil des Scripts.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <GDIPlus.au3>
    #include <EditConstants.au3>
    #include <ComboConstants.au3>
    Global $aLabel[10] = ['Schwarz','Braun','Rot','Orange','Gelb','Grün','Blau','Violett','Grau','Weiß']
    Global $index = 0
    ;------------------------------------------------------------------------------------------------------------
    ; _intro()
    _gui()
    ;------------------------------------------------------------------------------------------------------------
    Func _gui()
    #Region ### START Koda GUI section ### Form=c:\users\rouven\desktop\form1.kxf
    $Form1 = GUICreate("Widerstandberechner", 611, 304, -1, -1,-1)
    GUISetBkColor(0xFDFDFD)
    $Button1 = GUICtrlCreateButton("Schließen", 480, 256, 121, 41, 0)
    $Ringanzahl = GUICtrlCreateLabel("Ringanzahl:", 416, 48, 89, 23)
    GUICtrlSetFont(-1, 13, 400, 0, "Arial")
    GUICtrlCreateCombo("", 504, 45, 49, 5, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL,$WS_VSCROLL))
    GUICtrlSetFont(-1, 10, 400, 0, "arial")
    GUICtrlSetData(-1, " 4| 5", " 4")
    $Input3 = GUICtrlCreateInput("", 40, 120, 97, 21, $ES_READONLY)
    $Updown1 = GUICtrlCreateUpdown($Input3)
    $Input4 = GUICtrlCreateInput("", 152, 120, 97, 21, $ES_READONLY)
    $Updown2 = GUICtrlCreateUpdown($Input4)
    $Input5 = GUICtrlCreateInput("", 264, 120, 97, 21, $ES_READONLY)
    $Updown3 = GUICtrlCreateUpdown($Input5)
    $Input6 = GUICtrlCreateInput("", 376, 120, 97, 21, $ES_READONLY)
    $Updown4 = GUICtrlCreateUpdown($Input6)
    $Input7 = GUICtrlCreateInput("", 488, 120, 97, 21, $ES_READONLY)
    $Updown5 = GUICtrlCreateUpdown($Input7)
    $Label1 = GUICtrlCreateLabel("Toleranz", 488, 96, 66, 23)
    GUICtrlSetFont(-1, 13, 400, 0, "Arial")
    $Label2 = GUICtrlCreateLabel("2. Ziffer", 152, 96, 61, 23)
    GUICtrlSetFont(-1, 13, 400, 0, "Arial")
    $Label3 = GUICtrlCreateLabel("3. Ziffer", 264, 96, 61, 23)
    GUICtrlSetFont(-1, 13, 400, 0, "Arial")
    $Label4 = GUICtrlCreateLabel("Multiplikator", 376, 96, 89, 23)
    GUICtrlSetFont(-1, 13, 400, 0, "Arial")
    $Ziffer = GUICtrlCreateLabel("1. Ziffer", 40, 96, 61, 23)
    GUICtrlSetFont(-1, 13, 400, 0, "Arial")
    $Button2 = GUICtrlCreateButton("Copyright", 8, 272, 89, 25, 0)
    $Label5 = GUICtrlCreateLabel("Widerstandsberechner", 80, 24, 280, 36)
    GUICtrlSetFont(-1, 20, 400, 0, "Arial")
    $Input1 = GUICtrlCreateInput("", 376, 168, 81, 21, $ES_READONLY)
    $Input2 = GUICtrlCreateInput("", 264, 168, 81, 21, $ES_READONLY)
    $Input3 = GUICtrlCreateInput("", 152, 168, 81, 21, $ES_READONLY)
    $Input4 = GUICtrlCreateInput("", 488, 168, 81, 21, $ES_READONLY)
    $Input5 = GUICtrlCreateInput("", 40, 168, 81, 21, $ES_READONLY)
    $Button3 = GUICtrlCreateButton("Rechnung (mit Toleranz)", 280, 224, 129, 41, 0)
    $Button4 = GUICtrlCreateButton("Rechnung (ohne Toleranz)", 120, 224, 137, 41, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Exit
    Case $Button2
    ;_credits()
    EndSwitch
    WEnd
    EndFunc
    #cs;------------------------------------------------------------------------------------------------------------
    Func _intro ()
    #Region ### START Koda GUI section ### Form=
    $intro = GUICreate("Spotlight", 465, 303, -1, -1) ; 369,209
    GUICtrlCreatePic(@Scriptdir & "\Images\logo.jpg",-1,-1,465,303)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Sleep(2000)
    GUIDelete()
    EndFunc
    #ce;------------------------------------------------------------------------------------------------------------

    [/autoit]
    • Offizieller Beitrag

    Ich hab mal mit 'nem Blind-Input getrickst ;)

    [autoit]

    Global $aLabel[10] = ['Schwarz','Braun','Rot','Orange','Gelb','Grün','Blau','Violett','Grau','Weiß']

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

    $gui = GUICreate('test')
    $Input = GUICtrlCreateInput("", 40, 120, 97, 21)
    $Input_blind = GUICtrlCreateInput('', 150, 120, 1, 21)
    $Updown1 = GUICtrlCreateUpdown($Input_blind)
    GUICtrlSetLimit(-1, 9, 0)
    GUISetState()

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

    GUICtrlSetData($Input, $aLabel[0])

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

    While 1
    Switch GUIGetMsg()
    Case $Updown1
    GUICtrlSetData($Input, $aLabel[GUICtrlRead($Input_blind)])
    Case -3
    Exit
    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Das erste Input dient zur Anzeige deiner Farbwerte.
    Das zweite Input ist nur 1 Pixel breit und innerhalb des ersten positioniert. Wenn UpDown geklickt wird, wird im (nicht sichtbaren) Input der Zahlenwert verändert. Die Werte sind mit GUIctrlSetLimit festgelegt auf 0 bis 9 (unsere Array-Indexe).
    Bei Klick auf UpDown wird der nun geänderte Index aus dem BlindInput gelesen und der Farbwert aus dem Array mit diesem Index in das Input 1 eingetragen. - Ist doch einfach, oder? ;)