ListBox o ListView Actualizable?

Iniciado por raul338, 2 Diciembre 2009, 22:31 PM

0 Miembros y 1 Visitante están viendo este tema.

raul338

Holaz

Estoy haciendo por un tema de "privacidad" un programa que oculta y muestra ventanas. En el cual las ventanas se muestran en un Listbox, uno le hace doble click y se ocultan / muestran segun sea el caso.
El programa tiene un Timer que cada cierto tiempo (2 segundos) actualiza el ListBox con las nuevas ventanas o quitando las que se cierran. Hasta ahi a veces solo hay un detalle, cuando se actualiza a veces mueve de lugar el item, por lo que si en el medio de tu "doble click" se mueve puede que ocultes otra ventana por error (ojo, usando el mouse, si uno solo usa el teclado no le pasa nada, puesto que el foco del item seleccionado se mueve conforme se muevan los items)

El problema viene cuando quiero cambiar el ListBox por un ListView que queda mas lindo y organizado. Pero cuando actualiza se ve cuando borra y va rellennando uno por uno,,, y hace que la seleccion y la lectura sean una odisea...

Asi que les pido que me acosejen... como puedo hacer un listbox actualizable pero que no confunda en la lectura (algo asi el listbox del Administrador de Tareas "taskmgr")

Les adjunto el programa, no esta terminado, porque pienso hacer que registre un hotkey para que nosea necesario activar el programa para ocultar una ventana  :laugh:

Descargar WindoWizard 1.0
MIRROR: Descargar WindoWizard 1.0 (MediaFire)

BlackZeroX

#1
mmm se me ocurre

0 Obtienes las ventanas y las pones en un array en memoria (MultiDimencional, En el primer registro un registro de si existe en el listview, este se modificaria en el siguiente paso y obtendia un valor true o false [0,1], en el resto solo los datos de tus ventanas )
1 Rectificas cada elemento con el del ListView o listBox ( Modificas el elemento 0 del array Multidimenscional [0,1] )
2 Si no existe el elemento del Listview en el array Multidimencional recorres TODOS los registros una posición (Esto incluye la propiedad SelectItem).
3 Agregas los elementos del array Multidimencional no existentes (Segun el registro de la posicion 0 del array multidimencional)
3 esperas un X tiempo
4 repites desde el Paso "0"

De esta forma no se vuelve odioso

Nota: Debes usar algun comparador antes de añadir o borrar

EDITO:---------------->

Alternativa al paso 2 en lugar de recorres lo sustituyes por otro elemento asi te ahorras uno o dos bucles.

dulces Lunas!¡
The Dark Shadow is my passion.

raul338

Cita de: ░▒▓BlackZeroҖ▓▒░ en  2 Diciembre 2009, 23:26 PM
mmm se me ocurre

0 Obtienes las ventanas y las pones en un array en memoria (MultiDimencional, En el primer registro un registro de si existe en el listview, este se modificaria en el siguiente paso y obtendia un valor true o false [0,1], en el resto solo los datos de tus ventanas )
1 Rectificas cada elemento con el del ListView o listBox ( Modificas el elemento 0 del array Multidimenscional [0,1] )
2 Si no existe el elemento del Listview en el array Multidimencional recorres TODOS los registros una posición (Esto incluye la propiedad SelectItem).
3 Agregas los elementos del array Multidimencional no existentes (Segun el registro de la posicion 0 del array multidimencional)
3 esperas un X tiempo
4 repites desde el Paso "0"

De esta forma no se vuelve odioso

Nota: Debes usar algun comparador antes de añadir o borrar

EDITO:---------------->

Alternativa al paso 2 en lugar de recorres lo sustituyes por otro elemento asi te ahorras uno o dos bucles.

ya regreso con un codigo en VB6.

dulces Lunas!¡

Tambien se me ocurrio como ultima alternativa, pero cuando vi que no era muy molesto en el listbox decidi dejarlo de lado. Ahora lo implemento, junto con los HotKeys y hare su version en .net :D

BlackZeroX

Aun que no lo creas si es muy molesto cuando intentas consultar el ultimo registro

Dulces Lunas!¡.
The Dark Shadow is my passion.