Clase wxTextEntry
Clase base común para campos de entrada de texto de una sola línea.
Jerarquía:

Esta clase no es un control propiamente dicho, ya que no deriva de wxWindow. En su lugar es utilizada como clase base por otros controles, en particular wxTextCtrl y wxComboBox y reúne los métodos comunes a ambos.
Funciones miembro
AppendText()
virtual void wxTextEntry::AppendText(const wxString & text)
Añade el texto al final del control de texto.
Parámetros
- text
- Texto a escribir en el control de texto.
Observaciones
Después de añadir el texto, el punto de inserción se situará al final del control de texto. Si no se desea este comportamiento, el programador debe utilizar GetInsertionPoint() y SetInsertionPoint().
AutoComplete()
bool wxTextEntry::AutoComplete(const wxArrayString & choices)
Llame a esta función para activar el autocompletado del texto escrito en un control de texto de una sola línea utilizando las opciones dadas.
Devuelve
true si el autocompletado fue habilitado o false si la operación falló, típicamente porque el autocompletado no es soportado por la plataforma actual.
AutoComplete()
bool wxTextEntry::AutoComplete(wxTextCompleter * completer)
Habilita el autocompletado utilizando el objeto completer proporcionado.
Este método debería utilizarse en lugar de la sobrecarga AutoComplete() que toma el array de posibles terminaciones si el número total de cadenas es demasiado grande, ya que permite devolver las terminaciones dinámicamente, dependiendo del texto ya introducido por el usuario y, por tanto, es más eficiente.
El objeto completer especificado se utilizará para recuperar la lista de posibles complementos para el texto ya introducido y será eliminado por el propio wxTextEntry cuando ya no sea necesario.
Obsérvese que se necesita incluir wx/textcompleter.h para definir la clase heredera de wxTextCompleter.
Parámetros
- completer
- El objeto que se utilizará para generar los complementos si no es NULL. Si es NULL, se desactiva el autocompletado. El objeto wxTextEntry toma posesión de este puntero y lo borrará en cualquier caso (es decir, incluso si este método devuelve false).
Valor de retorno
true si el autocompletado fue habilitado o false si la operación falló, típicamente porque el autocompletado no es soportado por la plataforma actual.
AutoCompleteDirectories()
bool wxTextEntry::AutoCompleteDirectories()
Llame a esta función para activar el autocompletado del texto utilizando los directorios del sistema de ficheros.
A diferencia de AutoCompleteFileNames() que completa tanto los nombres de archivos como los directorios, esta función solo completa los nombres de directorio.
Obsérvese que actualmente esta función solo está implementada en el puerto wxMSW y no hace nada en las demás plataformas.
Valor de retorno
true si el autocompletado fue habilitado o false si la operación falló, típicamente porque el autocompletado no es soportado por la plataforma actual.
AutoCompleteFileNames()
bool wxTextEntry::AutoCompleteFileNames()
Llamar a esta función para activar el autocompletado del texto escrito en un control de texto de una sola línea utilizando todas las rutas válidas del sistema de archivos.
Hay que tener en cuenta que actualmente esta función solo está implementada en el puerto wxMSW y no hace nada en las demás plataformas.
Valor de retorno
true si el autocompletado fue habilitado o false si la operación falló, típicamente porque el autocompletado no es soportado por la plataforma actual.
CanCopy()
virtual bool wxTextEntry::CanCopy() const
Devuelve true si la selección se puede copiar en el portapapeles.
CanCut()
virtual bool wxTextEntry::CanCut() const
Devuelve true si la selección se puede cortar al portapapeles.
CanPaste()
virtual bool wxTextEntry::CanPaste() const
Devuelve true si el contenido del portapapeles se puede pegar en el control de texto.
En algunas plataformas (Motif, GTK) esto es una aproximación y devuelve true si el control es editable, false en caso contrario.
Reimplementado en wxStyledTextCtrl.
CanRedo()
virtual bool wxTextEntry::CanRedo() const
Devuelve true si existe la posibilidad de rehacer la última operación.
Reimplementado en wxStyledTextCtrl.
CanUndo()
virtual bool wxTextEntry::CanUndo() const
Devuelve true si existe la posibilidad de deshacer y se puede deshacer la última operación.
Reimplementado en wxStyledTextCtrl.
ChangeValue()
virtual void wxTextEntry::ChangeValue(const wxString & value)
Establece el nuevo valor del control de texto.
También marca el control como no modificado, lo que significa que IsModified() devolvería false inmediatamente después de la llamada a ChangeValue().
Esta función fija el punto de inserción al inicio del control (es decir, la posición 0).
Esta función no genera el evento wxEVT_TEXT pero por lo demás es idéntica a SetValue().
Ver Eventos Generados por el Usuario vs Eventos Generados Programáticamente para más información.
Parámetros
- value
- El nuevo valor a establecer. Puede contener caracteres de nueva línea si el control de texto es multilínea.
Clear()
virtual void wxTextEntry::Clear()
Borra el texto del control.
Hay que tener en cuenta que esta función generará un evento wxEVT_TEXT, es decir, su efecto es idéntico a llamar a SetValue("").
Reimplementado en wxStyledTextCtrl.
Copy()
virtual void wxTextEntry::Copy()
Copia el texto seleccionado en el portapapeles.
Reimplementado en wxStyledTextCtrl y wxComboCtrl.
Cut()
virtual void wxTextEntry::Cut()
Copia el texto seleccionado en el portapapeles y lo elimina del control.
Reimplementado en wxStyledTextCtrl y wxComboCtrl.
ForceUpper()
void wxTextEntry::ForceUpper()
Convierte todo el texto introducido en el control a mayúsculas.
Llamar a este método para asegurarse de que todo el texto introducido en el control se convierte sobre la marcha a mayúsculas. Si el control no está vacío, su contenido también se convierte a mayúsculas.
GetHint()
virtual wxString wxTextEntry::GetHint() const
Devuelve la cadena de pistas actual.
Ver SetHint() para más información sobre pistas.
Reimplementado en wxComboCtrl.
GetInsertionPoint()
virtual long wxTextEntry::GetInsertionPoint() const
Devuelve la posición del punto de inserción o cursor.
Se define como el índice basado en cero de la posición del carácter a la derecha del punto de inserción. Por ejemplo, si el punto de inserción está al final del control de texto de una sola línea, es igual a GetLastPosition().
Obsérvese que la posición de inserción es, en general, diferente del índice del carácter en el que se encuentra el cursor en la cadena devuelta por GetValue(). Mientras que este es siempre el caso para los controles de una sola línea, los controles multilínea pueden usar dos caracteres "\\r\\n" como separador de línea (este es notablemente el caso bajo MSW) lo que significa que los índices en el control y su valor de cadena están desplazados en 1 por cada línea.
Por lo tanto, para obtener correctamente el carácter en la posición actual del cursor, teniendo en cuenta que no puede haber ninguno si el cursor está al final de la cadena, se podría hacer lo siguiente:
wxString GetCurrentChar(wxTextCtrl *tc) { long pos = tc->GetInsertionPoint(); if ( pos == tc->GetLastPosition() ) return wxString(); return tc->GetRange(pos, pos + 1); }
Reimplementado en wxStyledTextCtrl, wxComboBox y wxComboCtrl.
GetLastPosition()
virtual wxTextPos wxTextEntry::GetLastPosition() const
Devuelve el índice basado en cero de la última posición del control de texto, que es igual al número de caracteres del control.
Reimplementado en wxStyledTextCtrl y wxComboCtrl.
GetMargins()
wxPoint wxTextEntry::GetMargins() const
Devuelve los márgenes utilizados por el control.
El campo x del punto devuelto es el margen horizontal y el campo y es el vertical.
Observaciones
Si no se puede determinar con precisión el margen dado, su valor se establecerá en -1. En algunas plataformas no se pueden obtener valores de margen válidos hasta que no se ha llamado a SetMargins().
GetRange()
virtual wxString wxTextEntry::GetRange( long from, long to ) const
Devuelve la cadena que contiene el texto que comienza en las posiciones desde y hasta en el control.
Las posiciones deben haber sido devueltas por otro método wxTextCtrl. Hay que tener en cuenta que las posiciones en un wxTextCtrl multilínea no se corresponden con los índices en la cadena devuelta por GetValue() debido a las diferentes representaciones de nueva línea (CR o CR LF), por lo que debería utilizarse este método para obtener los resultados correctos en lugar de extraer partes del valor completo. También puede ser más eficiente, especialmente si el control contiene muchos datos.
GetSelection()
virtual void wxTextEntry::GetSelection( long * from, long * to ) const
Obtiene el intervalo de selección actual.
Si los valores devueltos son iguales, no hubo selección. Hay que tener en cuenta que los índices devueltos pueden ser utilizados con los otros métodos wxTextCtrl pero no representan necesariamente los índices correctos en la cadena devuelta por GetValue() para controles multilínea bajo Windows (al menos,) se debe utilizar GetStringSelection() para obtener el texto seleccionado.
Parámetros
- from
- La primera posición devuelta.
- to
- La última posición devuelta.
Nota: En wxPerl este método no toma parámetros y devuelve una lista de 2 elementos (from, to).
Reimplementado en wxStyledTextCtrl y wxComboBox.
GetStringSelection()
virtual wxString wxTextEntry::GetStringSelection() const
Obtiene el texto seleccionado actualmente en el control.
Si no hay selección, la cadena devuelta está vacía.
Reimplementado en wxComboBox.
GetValue()
virtual wxString wxTextEntry::GetValue() const
Obtiene el contenido del control.
Obsérvese que para un control de texto multilínea, las líneas estarán separadas por caracteres \n (estilo Unix), incluso bajo Windows donde están separadas por una secuencia \n en el control nativo.
Reimplementado en wxComboCtrl.
IsEditable()
virtual bool wxTextEntry::IsEditable() const
Devuelve true si el contenido del control puede ser editado por el usuario (nótese que siempre puede ser cambiado por el programa).
En otras palabras, esta función devuelve true si el control no ha sido puesto en modo de solo lectura por una llamada previa a SetEditable().
Reimplementado en wxStyledTextCtrl.
IsEmpty()
virtual bool wxTextEntry::IsEmpty() const
Devuelve true si el control está actualmente vacío.
Esto es lo mismo que GetValue().empty() pero puede ser mucho más eficiente para los controles multilínea que contienen grandes cantidades de texto.
Reimplementado en wxOwnerDrawnComboBox y wxComboBox.
Paste()
virtual void wxTextEntry::Paste()
Pega texto del portapapeles en el elemento de texto.
Reimplementado en wxStyledTextCtrl y wxComboCtrl.
Redo()
virtual void wxTextEntry::Redo()
Si hay posibilidad de rehacer y la última operación puede rehacerse, rehace la última operación.
No hace nada si no hay posibilidad de rehacer.
Reimplementado en wxStyledTextCtrl.
Remove()
virtual void wxTextEntry::Remove( long from, long to )
Elimina el texto a partir de la primera posición dada hasta (pero sin incluir) el carácter de la última posición.
Esta función pone la posición actual del punto de inserción en a como efecto secundario.
Parámetros
- from
- La primera posición.
- to
- La última posición.
Reimplementado en wxStyledTextCtrl y wxComboCtrl.
Replace()
virtual void wxTextEntry::Replace( long from, long to, const wxString & value )
Sustituye el texto que empieza en la primera posición hasta (pero sin incluir) el carácter de la última posición por el texto dado.
Esta función pone la posición actual del punto de inserción en a como efecto secundario.
Parámetros
- from
- La primera posición.
- to
- La última posición.
- value
- El valor por el que se reemplazará el texto existente.
Reimplementado en wxStyledTextCtrl y wxComboCtrl.
SelectAll()
virtual void wxTextEntry::SelectAll()
Selecciona todo el texto del control.
Reimplementado en wxStyledTextCtrl.
SelectNone()
virtual void wxTextEntry::SelectNone()
Deselecciona el texto seleccionado en el control.
Reimplementado en wxStyledTextCtrl.
SetEditable()
virtual void wxTextEntry::SetEditable(bool editable)
Hace que el elemento de texto sea editable o de solo lectura, anulando la bandera wxTE_READONLY.
Parámetros
- editable
- Si es true, el control es editable. Si es false, el control es de sólo lectura.
Reimplementado en wxStyledTextCtrl.
SetHint()
virtual bool wxTextEntry::SetHint(const wxString & hint)
Establece una sugerencia mostrada en un control de texto vacío desenfocado.
Las pistas se utilizan normalmente para indicar al usuario lo que se supone que debe introducir en el campo de entrada dado, por ejemplo, un uso común de ellas es mostrar una explicación de lo que se puede introducir en un wxSearchCtrl.
La sugerencia se muestra (normalmente en gris) para un control vacío hasta que obtiene el foco y se muestra de nuevo si el control lo pierde y permanece vacío. No se mostrará una vez que el control tenga un valor no vacío, aunque volverá a mostrarse si se borra el contenido del control. Debido a esto, generalmente solo tiene sentido utilizar pistas con los controles que están inicialmente vacíos.
Hay que tener en cuenta que los hints se conocen como cue banners en MSW o placeholder strings en macOS.
Observaciones
Actualmente implementado de forma nativa en Windows (solo Vista y posteriores), macOS y GTK+ (3.2 y posteriores).
Para las plataformas sin soporte nativo de sugerencias, la implementación tiene varias limitaciones conocidas. En particular, la visualización de la sugerencia no se actualizará correctamente si se cambia el contenido de wxTextEntry mediante programación cuando se visualiza la sugerencia utilizando métodos distintos de SetValue() o ChangeValue() u otros que los utilicen internamente (por ejemplo, Clear()). En otras palabras, actualmente se debería evitar llamar a métodos como WriteText() o Replace() cuando se utilicen sugerencias y el control de texto esté vacío. Si se enlaza a los eventos focus y wxEVT_TEXT del control, se debe llamar a wxEvent::Skip() sobre ellos para que la implementación genérica funcione correctamente.
Otra limitación es que las sugerencias se ignoran para los controles con estilo wxTE_PASSWORD.
Observaciones
Las sugerencias se pueden utilizar para controles de texto de una sola línea en todas las plataformas, pero sólo MSW y GTK+ 2 las admiten para controles de texto de varias líneas, y se ignoran en las demás plataformas.
SetInsertionPoint()
virtual void wxTextEntry::SetInsertionPoint(llng pos)
Establece el punto de inserción en la posición dada.
Parámetros
- pos
- Posición a establecer, en el rango de 0 a GetLastPosition() inclusive.
Reimplementado en wxStyledTextCtrl y wxComboCtrl.
SetInsertionPointEnd()
virtual void wxTextEntry::SetInsertionPointEnd()
Establece el punto de inserción al final del control de texto.
Equivale a llamar a wxTextCtrl::SetInsertionPoint() con el argumento wxTextCtrl::GetLastPosition().
Reimplementado en wxComboCtrl.
SetMargins()
bool wxTextEntry::SetMargins(const wxPoint & pt)
Intenta establecer los márgenes del control.
Cuando los márgenes se dan como wxPoint, x indica el margen izquierdo e y el superior. Utilizar -1 para indicar que se debe utilizar un valor existente.
Valor de retorno
true si se han establecido correctamente todos los márgenes solicitados.
SetMargins()
Intenta establecer los márgenes del control.
Cuando los márgenes se dan como wxPoint, x indica el margen izquierdo e y el superior. Utilizar -1 para indicar que se debe utilizar un valor existente.
Valor de retorno
true si se han establecido correctamente todos los márgenes solicitados.
SetMaxLength()
virtual void wxTextEntry::SetMaxLength(unsigned long len)
Esta función establece el número máximo de caracteres que el usuario puede introducir en el control.
En otras palabras, permite limitar la longitud del valor de texto a len sin contar el carácter de terminación NUL.
Si len es 0, el límite de longitud máximo establecido previamente, si existe, se descarta y el usuario puede introducir tanto texto como admita el widget de control de texto nativo subyacente (normalmente al menos 32Kb). Si el usuario intenta introducir más caracteres en el control de texto cuando ya está lleno hasta la longitud máxima, se envía un evento wxEVT_TEXT_MAXLEN para notificarlo al programa (dándole la posibilidad de mostrar un mensaje explicativo, por ejemplo) y se descarta la entrada extra.
Hay que tener en cuenta que en wxGTK esta función solo puede utilizarse con controles de texto de una sola línea.
SetSelection()
virtual void wxTextEntry::SetSelection( long from, long to )
Selecciona el texto empezando por la primera posición hasta (pero sin incluir) el carácter de la última posición.
Si ambos parámetros son iguales a -1 se selecciona todo el texto del control.
Obsérvese que el punto de inserción será desplazado a from por esta función.
Parámetros
- from
- La primera posición.
- to
- La última posición.
Reimplementado en wxStyledTextCtrl, wxComboBox y wxComboCtrl.
SetValue()
virtual void wxTextEntry::SetValue(const wxString & value)
Establece el nuevo valor del control de texto.
También marca el control como no modificado, lo que significa que IsModified() devolvería false inmediatamente después de la llamada a SetValue().
El punto de inserción se fija al inicio del control (es decir, la posición 0) mediante esta función a menos que el valor del control no cambie en absoluto, en cuyo caso el punto de inserción se deja en su posición original.
Hhay que tener en cuenta que, a diferencia de la mayoría de las otras funciones que cambian los valores de los controles, esta función genera un evento wxEVT_TEXT. Para evitar esto se puede utilizar ChangeValue() en su lugar.
Parámetros
- value
- El nuevo valor a establecer. Puede contener caracteres de nueva línea si el control de texto es multilínea.
Reimplementado en wxComboCtrl y wxComboBox.
Undo()
virtual void wxTextEntry::Undo()
Si existe la posibilidad de deshacer y la última operación puede deshacerse, deshace la última operación.
No hace nada si no hay posibilidad de deshacer.
Reimplementado en wxStyledTextCtrl y wxComboCtrl.
WriteText()
virtual void wxTextEntry::WriteText(const wxString & text)
Escribe el texto en el control de texto en la posición de inserción actual.
Parámetros
- text
- Texto a escribir en el control de texto.
Observaciones
Las nuevas líneas en la cadena de texto son los únicos caracteres de control permitidos, y provocarán los saltos de línea apropiados. Ver operator<<() y AppendText() para formas más convenientes de escribir en la ventana. Después de la operación de escritura, el punto de inserción estará al final del texto insertado, por lo que las operaciones de escritura posteriores serán anexadas. Para añadir texto después de que el usuario haya interactuado con el control, llamar a wxTextCtrl::SetInsertionPointEnd() antes de escribir.
Reimplementado en wxStyledTextCtrl.