Slider Problem

  • Hallo,

    ich habe ein Problem mit dem Slider. Ich habe überall im Internet nach einer Lösung gesucht, jedoch habe ich nichts passendes gefunden oder es war mir zu kompliziert.

    Also mein Slider hat 11 kleine Linien unten, wo ich es verstellen kann, also habe ich es so ähnlich wie bei der Checkbox gemacht und es funktioniert nicht.

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("", 350, 300, 198, 236)
    $Input1 = GUICtrlCreateInput("", 176, 48, 161, 21)
    $Input2 = GUICtrlCreateInput("", 120, 104, 209, 21)
    $Slider1 = GUICtrlCreateSlider(80, 200, 198, 29)
    $Test1 = GUICtrlCreateButton("Test1", 8, 264, 83, 25, $WS_GROUP)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Test2 = GUICtrlCreateButton("Test2", 136, 264, 83, 25, $WS_GROUP)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Beenden = GUICtrlCreateButton("Beenden", 272, 264, 67, 25, $WS_GROUP)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Beenden
    Exit
    Case $Test2
    If (GUICtrlRead($Slider)) = 1 Then
    MsgBox(64, "Slider", "Slider ist auf 1")
    EndIf
    If (GUICtrlRead($Slider)) = 2 Then
    MsgBox(64, "Slider", "Slider ist auf 2")
    EndIf
    If (GUICtrlRead($Slider)) = 3 Then
    MsgBox(64, "Slider", "Slider ist auf 3")
    EndIf
    If (GUICtrlRead($Slider)) = 4 Then
    MsgBox(64, "Slider", "Slider ist auf 4")
    EndIf
    If (GUICtrlRead($Slider)) = 5 Then
    MsgBox(64, "Slider", "Slider ist auf 5")
    EndIF
    If (GUICtrlRead($Slider)) = 6 Then
    MsgBox(64, "Slider", "Slider ist auf 6")
    EndIF
    If (GUICtrlRead($Slider)) = 7 Then
    MsgBox(64, "Slider", "Slider ist auf 7")
    EndIF
    If (GUICtrlRead($Slider)) = 8 Then
    MsgBox(64, "Slider", "Slider ist auf 8")
    EndIF
    If (GUICtrlRead($Slider)) = 9 Then
    MsgBox(64, "Slider", "Slider ist auf 9")
    EndIF
    If (GUICtrlRead($Slider)) = 10 Then
    MsgBox(64, "Slider", "Slider ist auf 10")
    EndIF
    If (GUICtrlRead($Slider)) = 11 Then
    MsgBox(64, "Slider", "Slider ist auf 11")
    EndIF
    EndSwitch
    WEnd

    [/autoit]

    Kann mir das mal bitte jemand machen, sodass er einen anderen Befehl ausführt, wenn der Slider verstellt wurde?

    Mit freundlichen Grüßen,

    White

    Einmal editiert, zuletzt von White (10. Juni 2011 um 12:30)

  • Zunächstmal erhält man bei deinem Script Warnmeldungen wenn man es ausführt. Du hast die Variable $slider nicht deklariert, denn oben bei der Slider Erstellung verwendest du die Variable $slider1 anstatt $slider.
    Wenn du dich da mal auf eine von beiden Variablen festlegen würdest wäre schonmal ein Problem erledigt. Das zweite Problem tritt auf weil du kein Limit für den Slider definiert hast, deswegen reicht die Sliderskala standardmässig von 0 bis 100. Dadurch ist es recht unwahrscheinlich, dass eine deiner if Bedingungen erfüllt wird. Wenn du wirklich willst, dass der Slider nur die Werte 1-11 haben kann musst du das mit dieser Zeile festlegen:

    [autoit]


    GUICtrlSetLimit($Slider, 11, 1)

    [/autoit]

    Danach funktioniert dann auch alles wie es soll. Du schreibst aber eigentlich, dass bereits etwas passieren soll wenn du den Slider nur bewegst, also ohne den Button zu drücken. Wenn du das so haben willst musst du eben "case $slider" anstelle von "case $Test2" in deiner while Schleife abfragen.

  • schön, dann ist dein Problem ja gelöst, schön wäre es allerdings auch wenn du den Thread auf gelöst setzt. Einfach 1. Beitrag bearbeiten, Präfix (nähe Überschrift) ändern und speichern (absenden)

    mfg autoBert