# `wxSlider` [🔗](https://github.com/garazdawi/otp/blob/lukas/shell_docs/fix-bugs/lib/wx/src/gen/wxSlider.erl#L58) A slider is a control with a handle which can be pulled back and forth to change the value. On Windows, the track bar control is used. On GTK+, tick marks are only available for version 2.16 and later. Slider generates the same events as `m:wxScrollBar` but in practice the most convenient way to process `m:wxSlider` updates is by handling the slider-specific `wxEVT_SLIDER` event which carries `m:wxCommandEvent` containing just the latest slider position. ## Styles This class supports the following styles: * wxSL_HORIZONTAL: Displays the slider horizontally (this is the default). * wxSL_VERTICAL: Displays the slider vertically. * wxSL_AUTOTICKS: Displays tick marks (Windows, GTK+ 2.16 and later). * wxSL_MIN_MAX_LABELS: Displays minimum, maximum labels (new since wxWidgets 2.9.1). * wxSL_VALUE_LABEL: Displays value label (new since wxWidgets 2.9.1). * wxSL_LABELS: Displays minimum, maximum and value labels (same as wxSL_VALUE_LABEL and wxSL_MIN_MAX_LABELS together). * wxSL_LEFT: Displays ticks on the left and forces the slider to be vertical (Windows and GTK+ 3 only). * wxSL_RIGHT: Displays ticks on the right and forces the slider to be vertical. * wxSL_TOP: Displays ticks on the top (Windows and GTK+ 3 only). * wxSL_BOTTOM: Displays ticks on the bottom (this is the default). * wxSL_BOTH: Displays ticks on both sides of the slider. Windows only. * wxSL_SELRANGE: Displays a highlighted selection range. Windows only. * wxSL_INVERSE: Inverses the minimum and maximum endpoints on the slider. Not compatible with wxSL_SELRANGE. Notice that `wxSL_LEFT`, `wxSL_TOP`, `wxSL_RIGHT` and `wxSL_BOTTOM` specify the position of the slider ticks and that the slider labels, if any, are positioned on the opposite side. So, to have a label on the left side of a vertical slider, `wxSL_RIGHT` must be used (or none of these styles at all should be specified as left and top are default positions for the vertical and horizontal sliders respectively). The difference between EVT_SCROLL_THUMBRELEASE and EVT_SCROLL_CHANGED The EVT_SCROLL_THUMBRELEASE event is only emitted when actually dragging the thumb using the mouse and releasing it (This EVT_SCROLL_THUMBRELEASE event is also followed by an EVT_SCROLL_CHANGED event). The EVT_SCROLL_CHANGED event also occurs when using the keyboard to change the thumb position, and when clicking next to the thumb (In all these cases the EVT_SCROLL_THUMBRELEASE event does not happen). In short, the EVT_SCROLL_CHANGED event is triggered when scrolling/ moving has finished independently of the way it had started. Please see the page_samples_widgets ("Slider" page) to see the difference between EVT_SCROLL_THUMBRELEASE and EVT_SCROLL_CHANGED in action. See: * [Overview events](https://docs.wxwidgets.org/3.2/overview_events.html#overview_events) * `m:wxScrollBar` This class is derived, and can use functions, from: * `m:wxControl` * `m:wxWindow` * `m:wxEvtHandler` wxWidgets docs: [wxSlider](https://docs.wxwidgets.org/3.2/classwx_slider.html) ## Events Event types emitted from this class: * [`scroll_top`](`m:wxScrollEvent`) * [`scroll_bottom`](`m:wxScrollEvent`) * [`scroll_lineup`](`m:wxScrollEvent`) * [`scroll_linedown`](`m:wxScrollEvent`) * [`scroll_pageup`](`m:wxScrollEvent`) * [`scroll_pagedown`](`m:wxScrollEvent`) * [`scroll_thumbtrack`](`m:wxScrollEvent`) * [`scroll_thumbrelease`](`m:wxScrollEvent`) * [`scroll_changed`](`m:wxScrollEvent`) * [`scroll_top`](`m:wxScrollEvent`) * [`scroll_bottom`](`m:wxScrollEvent`) * [`scroll_lineup`](`m:wxScrollEvent`) * [`scroll_linedown`](`m:wxScrollEvent`) * [`scroll_pageup`](`m:wxScrollEvent`) * [`scroll_pagedown`](`m:wxScrollEvent`) * [`scroll_thumbtrack`](`m:wxScrollEvent`) * [`scroll_thumbrelease`](`m:wxScrollEvent`) * [`scroll_changed`](`m:wxScrollEvent`) * [`command_slider_updated`](`m:wxCommandEvent`) # `wxSlider` ```erlang -type wxSlider() :: wx:wx_object(). ``` # `create` ```erlang -spec create(This, Parent, Id, Value, MinValue, MaxValue) -> boolean() when This :: wxSlider(), Parent :: wxWindow:wxWindow(), Id :: integer(), Value :: integer(), MinValue :: integer(), MaxValue :: integer(). ``` # `create` ```erlang -spec create(This, Parent, Id, Value, MinValue, MaxValue, [Option]) -> boolean() when This :: wxSlider(), Parent :: wxWindow:wxWindow(), Id :: integer(), Value :: integer(), MinValue :: integer(), MaxValue :: integer(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()} | {validator, wx:wx_object()}. ``` Used for two-step slider construction. See `new/6` for further details. # `destroy` ```erlang -spec destroy(This :: wxSlider()) -> ok. ``` Destroys the object # `getLineSize` ```erlang -spec getLineSize(This) -> integer() when This :: wxSlider(). ``` Returns the line size. See: `setLineSize/2` # `getMax` ```erlang -spec getMax(This) -> integer() when This :: wxSlider(). ``` Gets the maximum slider value. See: * `getMin/1` * `setRange/3` # `getMin` ```erlang -spec getMin(This) -> integer() when This :: wxSlider(). ``` Gets the minimum slider value. See: * `getMin/1` * `setRange/3` # `getPageSize` ```erlang -spec getPageSize(This) -> integer() when This :: wxSlider(). ``` Returns the page size. See: `setPageSize/2` # `getThumbLength` ```erlang -spec getThumbLength(This) -> integer() when This :: wxSlider(). ``` Returns the thumb length. Only for:wxmsw See: `setThumbLength/2` # `getValue` ```erlang -spec getValue(This) -> integer() when This :: wxSlider(). ``` Gets the current slider value. See: * `getMin/1` * `getMax/1` * `setValue/2` # `new` ```erlang -spec new() -> wxSlider(). ``` Default constructor. # `new` ```erlang -spec new(Parent, Id, Value, MinValue, MaxValue) -> wxSlider() when Parent :: wxWindow:wxWindow(), Id :: integer(), Value :: integer(), MinValue :: integer(), MaxValue :: integer(). ``` # `new` ```erlang -spec new(Parent, Id, Value, MinValue, MaxValue, [Option]) -> wxSlider() when Parent :: wxWindow:wxWindow(), Id :: integer(), Value :: integer(), MinValue :: integer(), MaxValue :: integer(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()} | {validator, wx:wx_object()}. ``` Constructor, creating and showing a slider. See: `create/7` # `setLineSize` ```erlang -spec setLineSize(This, LineSize) -> ok when This :: wxSlider(), LineSize :: integer(). ``` Sets the line size for the slider. See: `getLineSize/1` # `setPageSize` ```erlang -spec setPageSize(This, PageSize) -> ok when This :: wxSlider(), PageSize :: integer(). ``` Sets the page size for the slider. See: `getPageSize/1` # `setRange` ```erlang -spec setRange(This, MinValue, MaxValue) -> ok when This :: wxSlider(), MinValue :: integer(), MaxValue :: integer(). ``` Sets the minimum and maximum slider values. See: * `getMin/1` * `getMax/1` # `setThumbLength` ```erlang -spec setThumbLength(This, Len) -> ok when This :: wxSlider(), Len :: integer(). ``` Sets the slider thumb length. Only for:wxmsw See: `getThumbLength/1` # `setValue` ```erlang -spec setValue(This, Value) -> ok when This :: wxSlider(), Value :: integer(). ``` Sets the slider position. --- *Consult [api-reference.md](api-reference.md) for complete listing*