Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Detectar cambio en Listbox (https://www.clubdelphi.com/foros/showthread.php?t=81173)

Anel Hernandez 18-10-2012 11:37:38

Detectar cambio en Listbox
 
Hola,

hay alguna manera de detectar que se cambio desde codigo el item seleccionado de un listbox, que no sea implementando un nuevo evento onchange?

gracias

nlsgarcia 21-10-2012 02:31:27

Anel Hernandez,

Revisa este link: http://delphi.about.com/od/tlistbox/...-drag-drop.htm, en el encontraras un ejemplo descargable de como defnir un evento Onchange y Funcionalidad Drag And Drop a un Control Listbox por medio de una clase interceptora.

Quizás el ejemplo sea un poco complicado pero puedes eliminar todo, excepto lo relacionado a la funcionalidad del evento Onchange y adaptarlo a tu código.

Otras opciones son:

1- Verificar la propiedad Count del Listbox para saber si ha cambiado el número de elementos de la lista, pero esto no verifica si un elemento específico cambio su valor.

2- Tener un Listbox y un TStringList con los mismos elementos, con esta opción se puede verificar cambios del Listbox en el número de Items y su contenido por comparación con el TStringList.

Todo depende de lo que tu aplicación requiera

Espero sea útil :)

Nelson

Anel Hernandez 22-10-2012 10:09:30

Hola,

lo que necesito es detectar desde codigo cuando se cambia la seleccion, no cuando cambia el texto del item.

gracias

Delfino 22-10-2012 18:17:55

No te vale el evento OnClick?

Anel Hernandez 22-10-2012 18:33:13

es que mando a seleccioanr desde codigo y el onclick no se entera.

gracias

roman 22-10-2012 19:04:30

Puedes implementar la funcionalidad añadiendo un nuevo evento. La pregunta es, ¿por qué no quieres un nuevo evento?

// Saludos

Anel Hernandez 22-10-2012 19:16:05

preguntaba si habia alguna forma mas sencilla que implementar un nuevo evento.

gracias

roman 22-10-2012 19:26:33

No lo creo. Cambiar la selección por código involucra llamar al método SetItemIndex que manda el mensaje LB_SETCURSEL mientras que la notificación de cambio de selección LBN_SELCHANGE no se envia con el mensaje anterior, de acuerdo a la documentación.

Lo que yo haría, es crear un derivado de TListBox que redefina los métodos Click y SetItemIndex para lanzar un nuevo evento OnSelectionChange.

Por otro lado, también podrías considerar el cómo haces el cambio de selección por código. Si lo haces en un sólo punto o lo puedes centralizar mediante algún método del formulario, entonces no requieres derivar un componente, simplemente hacer la notificación en ese punto o método central.

// Saludos


La franja horaria es GMT +2. Ahora son las 08:23:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi