20 Control de búsqueda

Ejemplo de wxSearchCtrl

Un control de búsqueda, wxSearchCtrl, es muy similar a un control de edición de texto. De hecho se deriva de las mismas clases: wxControl y wxTextEntry, y según la plataforma, puede derivar de wxTextCtrl, aunque sólo se garantiza el acceso a métodos de las clases wxControl y wxTextEntry.

Las diferencias con un control de edición son que se añaden dos botones opcionales: el de búsqueda y el de cancelación.

El botón de búsqueda contiene un icono en forma de lupa a la izquierda del control, aparentemente no hace nada, pero se puede usar para establecer el foco en el control.

El botón de cancelación se muestra a la derecha del control y permite borrar su contenido.

El método ShowSearchButton permite mostrar u ocultar el botón de búsqueda, aunque esto depende de la plataforma, por ejemplo, en GTK se ignora, y el botón siempre se muestra.

Podemos averiguar si el botón es visible mediante el método IsSearchButtonVisible.

De forma similar, los métodos ShowCancelButton e IsCancelButtonVisible se aplican al botón de cancelar. De nuevo el funcionamiento de estos métodos depende de la plataforma, por ejemplo, en GTK el botón de cancelar siempre será visible cuando el control tenga algún texto.

    busca->ShowCancelButton(true);
    busca->ShowSearchButton(true);

Es conveniente establecer un texto descriptivo que proporcione al usuario alguna pista sobre el tipo de búsqueda que espera la aplicación. Esto se hace mediante el método SetDescriptiveText:

    busca->SetDescriptiveText(_T("Busca algún animal"));

Si fuese necesario, ese texto se puede recuperar mediante el método GetDescriptiveText.

Por último, estos controles tienen un menú contextual asignado. El menú por defecto permite las operaciones habituales de cortar y pegar. Pero es posible asignar un menú personalizado mediante el método SetMenu, y obtener el menú actual con GetMenu.

Para obtener el contenido del control hay que usar alguno de los métodos de la clase base wxTextEntry, como GetValue.

void SearchCtrl::OnOk(wxCommandEvent& event) {
    cadena = busca->GetValue();
    EndModal(wxID_OK);
}

Ejemplo 20

Windows:

Nombre Fichero Fecha Tamaño Contador Descarga
Ejemplo 20 wx020.zip 2025-04-21 6269 bytes 13

Linux:

Nombre Fichero Fecha Tamaño Contador Descarga
Ejemplo 20 wx020.tar.gz 2025-04-21 4188 bytes 11