Título: Como detectar cambios en un listbox en tiempo de ejecución Publicado por: rapbyone en 19 Agosto 2016, 21:16 pm Estimados, tengo el siguiente problema, necesito detectar cambios en un listbox en tiempo de ejecución, no solamente la cantidad de items, sino que también la edición de alguno de ellos, así como lo hace el evento change en un textbox. Se puede?
Atento a sus comentarios gracias amigos Título: Re: Como detectar cambios en un listbox en tiempo de ejecución Publicado por: Eleкtro en 20 Agosto 2016, 04:55 am Ups, te escribí el comentario de aquí abajo pensando que estaba en el foro de VB.NET... qué confusión más tonta y qué pérdida de tiempo hacer ese código suponiendo que no te pueda servir de nada, pero bueno, de todas formas ahí dejo el código, por que en esencia la información proporcionada te servría igualmente para adaptarlo a VB6, me refiero a la solución basada en los mensajes de ventana, y lo cierto es que no has aclarado si trabajas en VB6 o VB.NET y en este subforo de VB nunca se sabe si andan preguntando de VB.NET o de VB6...
Saludos! Se puede? Si, se puede, simplemente debes controlar los mensajes de ventana para ese ListBox. En particular, para determinar si el texto o datos de un item han sido modificados, debes controlar el mensaje LB_INSERTSTRING o LB_SETITEMDATA respectivamente del tipo de item. Para determinar cambios en la cantidad de items, debes controlar los mensajes LB_ADDSTRING y LB_DELETESTRING. Los valores de los mensajes los puedes encontrar en el archivo "WinUser.h" de la SDK de Windows: Citar /* * Listbox messages */ #define LB_ADDSTRING 0x0180 #define LB_INSERTSTRING 0x0181 #define LB_DELETESTRING 0x0182 #define LB_SELITEMRANGEEX 0x0183 #define LB_RESETCONTENT 0x0184 #define LB_SETSEL 0x0185 #define LB_SETCURSEL 0x0186 #define LB_GETSEL 0x0187 #define LB_GETCURSEL 0x0188 #define LB_GETTEXT 0x0189 #define LB_GETTEXTLEN 0x018A #define LB_GETCOUNT 0x018B #define LB_SELECTSTRING 0x018C #define LB_DIR 0x018D #define LB_GETTOPINDEX 0x018E #define LB_FINDSTRING 0x018F #define LB_GETSELCOUNT 0x0190 #define LB_GETSELITEMS 0x0191 #define LB_SETTABSTOPS 0x0192 #define LB_GETHORIZONTALEXTENT 0x0193 #define LB_SETHORIZONTALEXTENT 0x0194 #define LB_SETCOLUMNWIDTH 0x0195 #define LB_ADDFILE 0x0196 #define LB_SETTOPINDEX 0x0197 #define LB_GETITEMRECT 0x0198 #define LB_GETITEMDATA 0x0199 #define LB_SETITEMDATA 0x019A #define LB_SELITEMRANGE 0x019B #define LB_SETANCHORINDEX 0x019C #define LB_GETANCHORINDEX 0x019D #define LB_SETCARETINDEX 0x019E #define LB_GETCARETINDEX 0x019F #define LB_SETITEMHEIGHT 0x01A0 #define LB_GETITEMHEIGHT 0x01A1 #define LB_FINDSTRINGEXACT 0x01A2 #define LB_SETLOCALE 0x01A5 #define LB_GETLOCALE 0x01A6 #define LB_SETCOUNT 0x01A7 #if(WINVER >= 0x0400) #define LB_INITSTORAGE 0x01A8 #define LB_ITEMFROMPOINT 0x01A9 #endif /* WINVER >= 0x0400 */ #if defined(_WIN32_WCE) && (_WIN32_WCE >= 0x0400) #define LB_MULTIPLEADDSTRING 0x01B1 #endif Y toda la información necesaria sobre los valores de la parametización (WParam/LParam) y el valor de retorno de los mensajes que he mencionado los tienes en la MSDN:
Ejemplo para determinar cambios en un item: Código + Código + Código
Saludos |