Slider Werte beim Schieben direkt anzeigen

  • kann man bei einem Slider die Werte
    direkt beim verändern anzeigen lassen?

    Wenn man den Slider bewegt, daß die Werte sich sofort ändern...

    [autoit]


    #include <EditConstants.au3>
    GUICreate("...", 100, 70)
    $slider = GUICtrlCreateSlider(10, 10, 80, 20)
    $input = GUICtrlCreateInput("", 10, 40, 80, 200, $ES_NUMBER)
    GUISetState()
    While True
    $msg = GUIGetMsg()
    If $msg = -3 Then Exit
    If $msg = $slider Then GUICtrlSetData($input, GUICtrlRead($slider))
    If $msg = $input Then GUICtrlSetData($slider, GUICtrlRead($input))
    WEnd

    [/autoit]

    Grüße
    Ilse :(

    Einmal editiert, zuletzt von Ilse (3. November 2010 um 13:52)

  • [autoit]

    #include <EditConstants.au3>

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

    Local $oldSliderValue,$oldInputValue

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

    GUICreate("...", 100, 70)
    $slider = GUICtrlCreateSlider(10, 10, 80, 20)
    $input = GUICtrlCreateInput("", 10, 40, 80, 200, $ES_NUMBER)
    GUISetState()

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

    While True
    $msg = GUIGetMsg()
    If $msg = -3 Then Exit

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

    _setValues()
    WEnd

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

    Func _setValues()
    If $oldSliderValue <> GUICtrlRead($slider) Then
    GUICtrlSetData($input, GUICtrlRead($slider))
    $oldSliderValue = GUICtrlRead($slider)
    EndIf
    If $oldInputValue <> GUICtrlRead($input) Then
    GUICtrlSetData($slider,GUICtrlRead($input))
    $oldInputValue = GUICtrlRead($input)
    EndIf
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Milla (3. November 2010 um 13:36)

  • Hallo,

    die GuiMessage-Loop sollte man für solche Aufgaben nur heranziehen, wenn es keine andere Lösung gibt. Es gibt aber einerseits den zwar nicht in der Hilfe aber in SliderCostants.au3 dokumentierten Style TBS_TOOLTIPS, andererseits ist der Slider so freundlich, der GUI per WM_HCROLL mitzuteilen, dass gerade etwas passiert:

    Spoiler anzeigen
    [autoit]

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

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

    GUICreate("...", 150, 100)
    $Slider = GUICtrlCreateSlider(10, 10, 80, 20, $GUI_SS_DEFAULT_SLIDER + $TBS_TOOLTIPS)
    $hSlider = GUICtrlGetHandle(-1)
    $Input = GUICtrlCreateInput("", 10, 40, 80, 20, $ES_NUMBER)
    GUISetState()

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

    GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Slider
    GUICtrlSetData($Input, GUICtrlRead($Slider))
    Case $Input
    GuiCtrlSetData($Slider, GUICtrlRead($Input))
    GUICtrlSetData($Input, GUICtrlRead($Slider)) ; für ungültige Werte
    EndSwitch
    WEnd

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

    Func WM_HSCROLL($hWnd, $Msg, $wParam, $lParam)
    If $lParam = $hSlider Then
    GUICtrlSetData($Input, GUICtrlRead($Slider))
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]