ContainerSearchField

Hola, amigos tengo el ContainerSearchField de Javier.

Tengo una duda, alguien sabe como agregar el evento SefChange?

Deseo utilizar El event Handler… “SefChange” del campo searchField.text cuando estoy escribiendo en el, para cargar un mtodo cuando detecte que se esta escribiendo.

Agregu el Event Definition para que aparezca dentro del ContainerSearchField pero no se como enviarle la funcin o parmetro.

Saludos.

Hola Victor,

Ciertamente se puede hacer mediante definicin de eventos. Ahora bien, te propongo la siguiente solucin, que adems te permitir utilizarlo en combinacin con autocompletado de texto y es ms dinmico en tiempo de ejecucin:

  1. Aade un Delegado a ContainerSearchField con la siguiente signatura:

Delegate Name: callback Parameters: content as String Scope: Public

  1. Aade una Propiedad a ContainerSearchField con la siguiente signatura:

Name: textChangeDelegate Type: callback Scope: Public

En el evento TextChange del control searchField del ContainerSearchField, modifica el cdigo para que sea:

[code] if me.Text <> “” then
CloseButtonClean1.activate

else

CloseButtonClean1.deactivate

if textChangeDelegate <> nil then textChangeDelegate.Invoke me.Text

end[/code]

  1. Ahora, en el evento Open de la instancia del ContainerSearchField que aadas a la ventana, introduce la siguiente lnea:
me.textChangeDelegate = WeakAddressOf searchfieldchanges //este es el mtodo que has de implementar para que sea invocado en cada cambio

Con solo esto, el mtodo registrado como delegado comenzar a recibir el contenido del TextField utilizado en el ContainerControl de bsquedas a medida que este se modifique.

Si necesitas ms aclaraciones ya sabes! :wink:

Javier

Excelente Javier.

No etendi el paso 3, en la ventana que tengo asociado el ContainerSearchField no se como obtener el texto que se esta modificando y al mismo tiempo ejecutar el un mtodo para que reciba el texto nicamente cuando estas realizando una escritura dentro del searchField como lo hace el selchange.

Por ejemplo as.

metodo_lista(ContainerSearchField.textChangeDelegate) dentro del selchange.

Gracias por la respuesta anterior.

Hola Victor,

He subido una nueva versin del control en el que est implementado tanto el mecanismo de Delegado como de Evento en el ContainerControl. En ambos casos la instancia puede recibir notificaciones de los cambios de texto realizados en el TextField. La diferencia fundamental es que el mecanismo de Delegado es dinmico, puesto que permite modificar el mtodo llamado en tiempo de ejecucin.

Ten en cuenta que puedes implementar los mismos mecanismos para recibir cambios sobre otros eventos del TextField, como puedan ser SelChange:

1. Como Evento: el TextField llama a un mtodo del ContainerSearchField pasando los datos deseados -> el mtodo lanza un evento (definido previamente), de modo que pueda ser implementado por la instancia de la clase.
2. Como Delegado: El TextField comprueba que la propiedad de delegado correspondiente no est a Nil y, en ese caso, lo invoca pasando los datos deseados.

Puedes descargar el proyecto con el ContainerControl y ejemplo desde este enlace.

Si necesitas alguna explicacin sobre el funcionamiento del cdigo, no dudes en preguntar. El uso de delegados y otras herramientas del lenguaje estn recogidos en mi eBook “Programacin Multiplataforma Xojo

Javier

Gracias javier, cuanto me cobras para que se agregar la funcin de auto completar a este mismo control de buscar, aparte tambin me interesa otro control tipo menu que contenga una bsqueda para mostrar los posibles resultados.
Ejemplo:

Saludos.

Hola Victor,

Te he contestado por mensaje privado.

En cuanto al segundo control, y si es para Desktop… ¿en qué se diferenciaría de lo que puedes obtener con el ComboBox incluido de serie?

Javier