Clase wxSizerFlags
Contenedor para las banderas de los elementos del visualizador que proporciona nombres legibles para ellos.
Normalmente, cuando se añade un elemento a un visualizador a través de wxSizer::Add, hay que especificar un montón de banderas y parámetros que pueden ser difíciles de manejar. Aquí es donde entra wxSizerFlags: permite especificar todos los parámetros utilizando los métodos con nombre. Por ejemplo, en lugar de
sizer->Add(ctrl, 0, wxEXPAND | wxALL, 10);
Se puede escribir
sizer->Add(ctrl, wxSizerFlags().Expand().Border(wxALL, 10));
Esto es más legible y también le permite crear objetos wxSizerFlags que pueden ser reutilizados para varios elementos sizer.
wxSizerFlags flagsExpand(1); flagsExpand.Expand().Border(wxALL, 10); sizer->Add(ctrl1, flagsExpand); sizer->Add(ctrl2, flagsExpand);
Hay que tener en cuenta que por especificación, todos los métodos de wxSizerFlags devuelven el propio objeto wxSizerFlags para permitir encadenar múltiples llamadas a métodos como en los ejemplos anteriores.
Funciones miembro
wxSizerFlags()
wxSizerFlags::wxSizerFlags(int proportion = 0)
Crea el wxSizer con la proporción especificada por proportion.
Align()
wxSizerFlags& wxSizerFlags::Align(int alignment)
Establece la alineación de este wxSizerFlags para alinear.
Este método reemplaza la alineación previamente establecida por la especificada.
Parámetros
- alignment
- Combinación de máscaras de bits wxALIGN_XXX.
Border()
wxSizerFlags& wxSizerFlags::Border( int direction, int borderinpixels )
Establece el wxSizerFlags para obtener un borde de un número de píxeles especificado por borderinpixels con las direcciones especificadas por direction.
Es preferible utilizar la sobrecarga de abajo o las versiones DoubleBorder() o TripleBorder() en lugar de codificar el valor del borde en píxeles para evitar bordes demasiado pequeños en dispositivos con pantallas de alto DPI.
Border()
wxSizerFlags& wxSizerFlags::Border(int direction = wxALL)
Establece el wxSizerFlags para tener un borde con el tamaño devuelto por GetDefaultBorder().
Parámetros
- direction
- Dirección(es) en la(s) que se aplicará el borde.
Bottom()
wxSizerFlags& wxSizerFlags::Bottom()
Alinea el objeto en la parte inferior, similar para Align(wxALIGN_BOTTOM).
A diferencia de Align(), este método no cambia la alineación horizontal del elemento.
Center()
wxSizerFlags& wxSizerFlags::Center()
Establece el objeto del wxSizerFlags para centrarse en el área que se le da.
CenterHorizontal()
wxSizerFlags& wxSizerFlags::CenterHorizontal()
Equivale a CentreHorizontal().
CenterVertical()
wxSizerFlags& wxSizerFlags::CenterVertical()
Equivale a CentreVertical().
Centre()
wxSizerFlags& wxSizerFlags::Centre()
Center() para personas con el otro dialecto del inglés.
CentreHorizontal()
wxSizerFlags& wxSizerFlags::CentreHorizontal()
Centra un elemento solo en dirección horizontal.
Esto es útil sobre todo para sizers 2D ya que para los 1D es más corto utilizar Centre() dado que la alineación solo se utiliza en una dirección con ellos de todos modos. Para los sizers 2D, centrar un elemento en una dirección es muy diferente de centrarlo en ambas direcciones.
Hay que tener en cuenta que, a diferencia de Align(), este método no cambia la alineación vertical.
CentreVertical()
wxSizerFlags& wxSizerFlags::CentreVertical()
Centra un elemento solo en dirección vertical.
Las observaciones de la documentación de CentreHorizontal() también se aplican a esta función.
Hay que tener en cuenta que, a diferencia de Align(), este método no cambia la alineación horizontal.
DisableConsistencyChecks()
static void wxSizerFlags::DisableConsistencyChecks()
Deshabilita globalmente la comprobación de la consistencia de las banderas en las construcciones de depuración.
Por defecto, las clases de sizer como wxBoxSizer y wxFlexGridSizer hacen asserts cuando se les pasan flags inválidos, aunque hacer esto normalmente no tiene consecuencias catastróficas y los flags inválidos son simplemente ignorados más tarde. Debido a esto, y al hecho de que estas comprobaciones solo se añadieron en wxWidgets 3.1, el código existente puede encontrarse con múltiples aserciones advirtiendo sobre el uso incorrecto de las banderas de sizer. El uso de esta función proporciona una solución temporal para evitar tales aserciones al actualizar a wxWidgets 3.1 desde una versión anterior y evitará que se realicen tales comprobaciones.
Hay que tener en cuenta que corregir el código eliminando las banderas inválidas sigue siendo una solución mucho mejor, ya que estas aserciones pueden ser muy útiles para entender por qué algún código que utiliza banderas de tamaño no funciona como se esperaba, por lo que no se recomienda utilizar esta función, especialmente de forma permanente, en lugar de una solución temporal.
También hay que tener en cuenta que se puede conseguir el mismo efecto que llamando a esta función estableciendo la variable de entorno WXSUPPRESS_SIZER_FLAGS_CHECK a cualquier valor.
DoubleBorder()
wxSizerFlags& wxSizerFlags::DoubleBorder(int direction = wxALL)
Establece el borde en la dirección dada teniendo el doble del tamaño del borde por defecto.
DoubleHorzBorder()
wxSizerFlags& wxSizerFlags::DoubleHorzBorder()
Establece el borde en las direcciones izquierda y derecha teniendo el doble del tamaño de borde por defecto.
Expand()
wxSizerFlags& wxSizerFlags::Expand()
Establece el objeto del wxSizerFlags a expandir para llenar tanta área como pueda.
FixedMinSize()
wxSizerFlags& wxSizerFlags::FixedMinSize()
Establece la bandera wxFIXED_MINSIZE que indica que el tamaño inicial de la ventana debe establecerse también como su tamaño mínimo.
GetDefaultBorder()
static int wxSizerFlags::GetDefaultBorder()
Devuelve el borde utilizado por defecto en el método Border().
Este valor se escala adecuadamente para los PPP actuales en los sistemas en los que se utilizan valores de píxeles físicos para las posiciones y tamaños de los controles, es decir, no con wxGTK o wxOSX.
GetDefaultBorderFractional()
static float wxSizerFlags::GetDefaultBorderFractional()
Devuelve el borde utilizado por defecto, con precisión fraccionaria.
Por ejemplo, cuando el borde se escala a un PPP no entero.
HorzBorder()
wxSizerFlags& wxSizerFlags::HorzBorder()
Establece el borde en las direcciones izquierda y derecha teniendo el tamaño de borde por defecto.
Left()
wxSizerFlags& wxSizerFlags::Left()
Alinea el objeto a la izquierda, similar para Align(wxALIGN_LEFT).
A diferencia de Align(), este método no cambia la alineación vertical del elemento.
Proportion()
wxSizerFlags& wxSizerFlags::Proportion(int proportion)
Establece la proporción de este wxSizerFlags a proportion.
ReserveSpaceEvenIfHidden()
wxSizerFlags& wxSizerFlags::ReserveSpaceEvenIfHidden()
Establece la bandera wxRESERVE_SPACE_EVEN_IF_HIDDEN.
Normalmente los wxSizers no asignan espacio para ventanas ocultas u otros elementos. Esta bandera anula este comportamiento de modo que se asigna suficiente espacio para la ventana, incluso si no es visible. Esto hace posible mostrar y ocultar controles dinámicamente sin redimensionar el diálogo principal, por ejemplo.
Right()
wxSizerFlags& wxSizerFlags::Right()
Alinea el objeto a la derecha, similar para Align(wxALIGN_RIGHT).
A diferencia de Align(), este método no cambia la alineación vertical del elemento.
Shaped()
wxSizerFlags& wxSizerFlags::Shaped()
Establece la bandera wx_SHAPED que indica que los elementos deben mantener siempre la relación fija entre anchura y altura igual a su valor original.
Top()
wxSizerFlags& wxSizerFlags::Top()
Alinea el objeto en la parte superior, similar para Align(wxALIGN_TOP).
A diferencia de Align(), este método no cambia la alineación horizontal del elemento.
TripleBorder()
wxSizerFlags& wxSizerFlags::TripleBorder(int direction = wxALL)
Establece el borde en la dirección dada teniendo el triple del tamaño del borde por defecto.