Clase wxScrollBar
Una wxScrollBar es un control que representa una barra de desplazamiento horizontal o vertical.
Jerarquía:

Es distinto de las dos barras de desplazamiento que algunas ventanas proporcionan automáticamente, pero los dos tipos de barra de desplazamiento comparten la forma en que se reciben los eventos.
Observaciones
Una barra de desplazamiento tiene los siguientes atributos principales: rango, tamaño de pulgar, tamaño de página y posición. El rango es el número total de unidades asociadas a la vista representada por la barra de desplazamiento. Para una tabla con 15 columnas, el rango sería 15. El tamaño del pulgar es el número de unidades visibles en ese momento. Para el ejemplo de la tabla, la ventana puede tener un tamaño tal que sólo sean visibles 5 columnas, en cuyo caso la aplicación establecería el tamaño del pulgar en 5. Cuando el tamaño del pulgar sea igual o mayor que el rango, la barra de desplazamiento se ocultará automáticamente en la mayoría de las plataformas. El tamaño de página es el número de unidades en que debe desplazarse la barra de desplazamiento cuando se 'pagine' por los datos. Este valor es normalmente el mismo que la longitud del tamaño del pulgar, porque es natural asumir que el tamaño de la ventana visible define una página. La posición de la barra de desplazamiento es la posición actual del pulgar. La mayoría de las aplicaciones encontrarán conveniente proporcionar una función llamada AdjustScrollbars() que puede ser llamada inicialmente, desde un manejador de eventos OnSize, y siempre que los datos de la aplicación cambien de tamaño. Ajustará la vista, el objeto y el tamaño de la página de acuerdo con el tamaño de la ventana y el tamaño de los datos.
Estilos
Esta clase admite los siguientes estilos:
- wxSB_HORIZONTAL
- Especifica una barra de desplazamiento horizontal.
- wxSB_VERTICAL
- Especifica una barra de desplazamiento vertical.
Eventos emitidos por esta clase
Las siguientes macros manejadoras de eventos redirigen los eventos a manejadores de funciones miembro 'func' con prototipos como:
void handlerFuncName(wxScrollEvent& event)
Macros de eventos para eventos emitidos por esta clase:
Se pueden utilizar macros EVT_COMMAND_SCROLL... con IDs de ventana para cuando intercepte eventos de desplazamiento desde controles, o macros EVT_SCROLL... sin IDs de ventana para interceptar eventos de desplazamiento desde la ventana receptora - excepto por esto, las macros se comportan exactamente igual.
- EVT_SCROLL(func)
- Procesa todos los eventos de desplazamiento.
- EVT_SCROLL_TOP(func)
- Procesa los eventos wxEVT_SCROLL_TOP de desplazamiento hacia arriba o hacia la izquierda (mínimo).
- EVT_SCROLL_BOTTOM(func)
- Procesa los eventos wxEVT_SCROLL_BOTTOM de desplazamiento hacia abajo o hacia la derecha (posición máxima).
- EVT_SCROLL_LINEUP(func)
- Procesa los eventos wxEVT_SCROLL_LINEUP de desplazamiento hacia arriba o hacia la izquierda.
- EVT_SCROLL_LINEDOWN(func)
- Procesa los eventos wxEVT_SCROLL_LINEDOWN línea abajo o derecha.
- EVT_SCROLL_PAGEUP(func)
- Procesa los eventos wxEVT_SCROLL_PAGEUP página arriba o izquierda.
- EVT_SCROLL_PAGEDOWN(func)
- Procesa eventos wxEVT_SCROLL_PAGEDOWN de página abajo o derecha.
- EVT_SCROLL_THUMBTRACK(func)
- Procesa eventos wxEVT_SCROLL_THUMBTRACK thumbtrack (eventos frecuentes enviados cuando el usuario arrastra el thumbtrack).
- EVT_SCROLL_THUMBRELEASE(func)
- Procesa los eventos wxEVT_SCROLL_THUMBRELEASE de liberación del pulgar.
- EVT_SCROLL_CHANGED(func)
- Procesa los eventos wxEVT_SCROLL_CHANGED de fin de desplazamiento (sólo MSW).
- EVT_COMMAND_SCROLL(id, func)
- Procesa todos los eventos de desplazamiento.
- EVT_COMMAND_SCROLL_TOP(id, func)
- Procesa los eventos wxEVT_SCROLL_TOP de desplazamiento hacia arriba o hacia la izquierda (mínimo).
- EVT_COMMAND_SCROLL_BOTTOM(id, func)
- Procesa los eventos wxEVT_SCROLL_BOTTOM de desplazamiento hacia abajo o hacia la derecha (posición máxima).
- EVT_COMMAND_SCROLL_LINEUP(id, func)
- Procesa los eventos wxEVT_SCROLL_LINEUP de desplazamiento hacia arriba o hacia la izquierda.
- EVT_COMMAND_SCROLL_LINEDOWN(id, func)
- Procesa los eventos wxEVT_SCROLL_LINEDOWN línea abajo o derecha.
- EVT_COMMAND_SCROLL_PAGEUP(id, func)
- Procesa los eventos wxEVT_SCROLL_PAGEUP página arriba o izquierda.
- EVT_COMMAND_SCROLL_PAGEDOWN(id, func)
- Procesa los eventos wxEVT_SCROLL_PAGEDOWN page down o right.
- EVT_COMMAND_SCROLL_THUMBTRACK(id, func)
- Procesa eventos wxEVT_SCROLL_THUMBTRACK thumbtrack (eventos frecuentes enviados cuando el usuario arrastra el thumbtrack).
- EVT_COMMAND_SCROLL_THUMBRELEASE(func)
- Procesa los eventos wxEVT_SCROLL_THUMBRELEASE de liberación del pulgar.
- EVT_COMMAND_SCROLL_CHANGED(func)
- Procesa los eventos wxEVT_SCROLL_CHANGED de fin de desplazamiento (sólo MSW).
Diferencia entre EVT_SCROLL_THUMBRELEASE y EVT_SCROLL_CHANGED
El evento EVT_SCROLL_THUMBRELEASE sólo se emite cuando realmente se arrastra el pulgar usando el ratón y se suelta (Este evento EVT_SCROLL_THUMBRELEASE también es seguido por un evento EVT_SCROLL_CHANGED).
El evento EVT_SCROLL_CHANGED también ocurre cuando se usa el teclado para cambiar la posición del pulgar, y cuando se hace click al lado del pulgar (En todos estos casos el evento EVT_SCROLL_THUMBRELEASE no ocurre).
En resumen, el evento EVT_SCROLL_CHANGED se dispara cuando el desplazamiento/movimiento ha finalizado independientemente de la forma en que había comenzado. Por favor, ver el ejemplo de Widgets (página "Slider") para ver la diferencia entre EVT_SCROLL_THUMBRELEASE y EVT_SCROLL_CHANGED en acción.
Funciones miembro
wxScrollBar()
wxScrollBar::wxScrollBar()
Constructor por defecto.
wxScrollBar()
wxScrollBar::wxScrollBar( wxWindow * parent, wxWindowID id, const wxPoint & pos = wxDefaultPosition, const wxSize & size = wxDefaultSize, long style = wxSB_HORIZONTAL, const wxValidator & validator = wxDefaultValidator, const wxString & name = wxScrollBarNameStr )
Constructor que crea y muestra una barra de desplazamiento.
Parámetros
- parent
- Ventana padre. Debe ser no nulo.
- id
- Identificador de la ventana. El valor wxID_ANY indica un valor por defecto.
- pos
- Posición de la ventana. Si se especifica wxDefaultPosition se elige una posición por defecto.
- size
- Tamaño de la ventana. Si se especifica wxDefaultSize se elige un tamaño por defecto.
- style
- Estilo de la ventana.
- validator
- Validador de la ventana.
- name
- Nombre de la ventana.
~wxScrollBar()
virtual wxScrollBar::~wxScrollBar()
Destructor, destruye la barra de desplazamiento.
Create()
bool wxScrollBar::Create( wxWindow * parent, wxWindowID id, const wxPoint & pos = wxDefaultPosition, const wxSize & size = wxDefaultSize, long style = wxSB_HORIZONTAL, const wxValidator & validator = wxDefaultValidator, const wxString & name = wxScrollBarNameStr )
Función de creación de la barra de desplazamiento llamada por el constructor de la barra de desplazamiento.
GetPageSize()
virtual int wxScrollBar::GetPageSize() const
Devuelve el tamaño de página de la barra de desplazamiento.
Este es el número de unidades de desplazamiento que se desplazarán cuando el usuario pagine hacia arriba o hacia abajo. A menudo es el mismo que el tamaño del pulgar.
GetRange()
virtual int wxScrollBar::GetRange() const
Devuelve la longitud de la barra de desplazamiento.
GetThumbPosition()
virtual int wxScrollBar::GetThumbPosition() const
Devuelve la posición actual del pulgar de la barra de desplazamiento.
GetThumbSize()
virtual int wxScrollBar::GetThumbSize() const
Devuelve el tamaño del pulgar o 'vista'.
IsVertical()
bool wxScrollBar::IsVertical() const
Devuelve true para las barras de desplazamiento que tienen definido el estilo vertical.
SetScrollbar()
virtual void wxScrollBar::SetScrollbar( int position, int thumbSize, int range, int pageSize, bool refresh = true )
Establece las propiedades de la barra de desplazamiento.
Parámetros
- position
- La posición de la barra de desplazamiento en unidades de desplazamiento.
- thumbSize
- El tamaño del pulgar, o parte visible de la barra de desplazamiento, en unidades de desplazamiento.
- range
- La posición máxima de la barra de desplazamiento.
- pageSize
- El tamaño de la página en unidades de desplazamiento. Es el número de unidades que se desplazará la barra de desplazamiento cuando se pagine hacia arriba o hacia abajo. A menudo es el mismo que el tamaño del pulgar.
- refresh
- true para redibujar la barra de desplazamiento, false en caso contrario.
Observaciones
Supongamos que se desea mostrar 50 líneas de texto, utilizando la misma fuente. El tamaño de la ventana es tal que sólo se pueden ver 16 líneas a la vez. Se usaría
scrollbar->SetScrollbar(0, 16, 50, 15);
El tamaño de la página es 1 menos que el tamaño del pulgar para que la última línea de la página anterior sea visible en la página siguiente, para ayudar a orientar al usuario. Hay que tener en cuenta que con la ventana en este tamaño, la posición del pulgar nunca puede ir más allá de 50 menos 16, o 34. Se puede determinar cuántas líneas son visibles actualmente dividiendo el tamaño de la vista actual por la altura de los caracteres en píxeles. Cuando se defina un comportamiento propio de la barra de desplazamiento, siempre se tendrán que recalcular los ajustes de la barra de desplazamiento cuando cambie el tamaño de la ventana. Por lo tanto, se podría poner los cálculos de la barra de desplazamiento y la llamada a SetScrollbar() en una función llamada AdjustScrollbars, que puede ser llamada inicialmente y también desde una función manejadora de eventos wxSizeEvent.
Reimplementado de wxWindow.
SetThumbPosition()
virtual void wxScrollBar::SetThumbPosition(int viewStart)
Establece la posición de la barra de desplazamiento.
Parámetros
- viewStart
- La posición del pulgar de la barra de desplazamiento.
Métodos y datos heredados
Esta clase hereda los métodos y datos miembro públicos y protegidos de wxControl, wxWindow, wxEvtHandler y wxObject.