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 |
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 |
Hola,
lo que necesito es detectar desde codigo cuando se cambia la seleccion, no cuando cambia el texto del item. gracias |
No te vale el evento OnClick?
|
es que mando a seleccioanr desde codigo y el onclick no se entera.
gracias |
Puedes implementar la funcionalidad añadiendo un nuevo evento. La pregunta es, ¿por qué no quieres un nuevo evento?
// Saludos |
preguntaba si habia alguna forma mas sencilla que implementar un nuevo evento.
gracias |
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