• Viernes 8 de Noviembre de 2024, 00:36

Autor Tema:  Como alinear el texto de un ListBox?  (Leído 10815 veces)

Jimbenit

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Como alinear el texto de un ListBox?
« en: Martes 24 de Agosto de 2010, 22:07 »
0
Hola amigos, alguien sabe bajo que propiedad o comando se puede alinear el texto mostrado en un list box ?  :mellow:


saludos.


Yo quiero mucho a Toph ---> Mi Web]http://ingenieriacivil.foroactivo.com[/url]

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Como alinear el texto de un ListBox?
« Respuesta #1 en: Sábado 4 de Septiembre de 2010, 06:01 »
0
No hay ninguna propiedad para ello, puedes hacerlo manualmente controlando el ancho de cada ítem, hasta encontrar el mayor y repartir este respecto del ancho del control (incluso ajustar el ancho del control al ancho del mayor) luego añadir espacios a izquierda (según la alineación deseada, izquierda,derecha o centrado) a cada item hasta completar el ancho del mayor.

Es costoso en tiempo, así que yo no te recomendaría hacerlo en listados muy largos. Nota que al hacerlo estarás cambiando el texto de cada ítem, por lo que si debes evaluarlo en algún momento no olvides el:
Código: Visual Basic
  1.  
  2.   if trim$(list1.list(x)= ElItemMuestra then
  3.       ...........
  4.   end if
  5.  
  6.  

Además fíjate si es costoso que cada vez que introduzcas un ítem deberás verificar si es el mayor y si lo es readaptar todos de nuevo a este tamaño, sino lo es sólo hay que adaptar éste al tamaño mayor. Igualmente cuando elimines un ítem deberías verificar si el ítem eliminado era el mayor, si no lo era no pasa nada, pero si lo era deberás localizar de nuevo el mayor y redistribuir todo de nuevo al nuevo tamaño.

Haz unas funciones que serán invocadas según el caso descrito cuando se añaden,  elimina ítems, o cambias de ancho el control.

Tendrás una función verificar al añadir que haría
Código: Text
  1. Si hay items en el listado luego
  2.   si el el ancho del nuevo item es mayor que el existente luego
  3.        añadir el nuevo ítem
  4.        el ancho de éste es el nuevo ancho de ajuste
  5.        recorrer toda la lista y reajustar según el nuevo ancho
  6.    en otro caso
  7.       ajustar este item al ancho actual
  8.       añadir el nuevo ítem
  9.    fin caso
  10. no hay item en el listado
  11.     añadir el nuevo ítem
  12.     el ancho de éste es el nuevo ancho de ajuste
  13. fin caso
  14.  
     

Tendrás una función verificar al eliminar que haría
Código: Text
  1.  
  2. eliminar el ítem
  3. Si hay items en el listado luego
  4.   si el el ancho del que se va a eliminar es el acnho actual luego
  5.        recorrer la lista para localizar el item de mayor ancho
  6.        el ancho de éste (encontrado) es el nuevo ancho de ajuste
  7.        recorrer toda la lista y reajustar según el nuevo ancho
  8.    fin caso
  9. no hay items en el listado
  10.    el nuevo ancho de ajuste es 0
  11. fin caso
  12.  


Cuando se recorre la lisa para ajustar hay que ajustar según el tipo de alineación actual (si hay más de 1).
«Ma non troppo»
----> ModoVacaciones = False<----

Jimbenit

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Re: Como alinear el texto de un ListBox?
« Respuesta #2 en: Sábado 4 de Septiembre de 2010, 06:44 »
0
Si, amigo Nebire, te comprendo, pero al mismo tiempo veo que no es corto, y complica mas el codigo.
Entomnces, lo recomendable es no usar alineacion en los Textos del List box pero en caso de que sea absolutamente necesario, lo que se hace es aplicar esto.
Pense que se podria hacer mas corto, usando algun metido o propiedad que no conocia.

Pero es muy interesante lo que dices. Por fin conoci la solución y eso es gracias a ti.
saludos amigo Nebire.


Yo quiero mucho a Toph ---> Mi Web]http://ingenieriacivil.foroactivo.com[/url]

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Como alinear el texto de un ListBox?
« Respuesta #3 en: Lunes 6 de Septiembre de 2010, 05:26 »
0
Bueno trabajando sobre el control listbox esa es la solución, poco efectiva.

Precisamente las limitaciones de algunos controles son los que te impulsan a diseñar tus propios controles. Diseñando tu propio listbox se podría hacer de modo mucho más eficiente. El control listbox de Microsoft es muy ineficiente, si tienes una fichero de texto pongamos de 20Mb. lo estás recorriendo para buscar determinadas entradas que vas añadiendo al listbox, y pongamos que acabarás añadiento 10.000 elementos será una operación excesivamente lenta, porque microsoft se empeña en crear en la lista los 10.000 elementos.

Podría diseñarse un control que tuviera un cuadro de lista con una propiedad VisibleItems que indicara cuantos ítems quiere verse en la lista (desde luego limitado como máximo a los que quepan en la vertical de la pantalla o mas sencillo al tamaño de un byte (255), luego con apoyo de una clase, sería esta quien tendría una estructura que contuviera el texto de la lista y el ancho que ocupa el texto. Al presentar o hacer scroll en la lista sólo dibujaríamos los que caben en la lista aunque nuestra lista constara de 10.000 items, presentar, o actualizar los que caben (en la lista, a la vista) nunca llevaría más de 1 décima de segundo...

Cuando acabemos con el control del botón si quieres hacemos uno de tipo listbox con estas ideas en mente.
«Ma non troppo»
----> ModoVacaciones = False<----

Jimbenit

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Re: Como alinear el texto de un ListBox?
« Respuesta #4 en: Lunes 6 de Septiembre de 2010, 13:58 »
0
Cita de: "Nebire"
Cuando acabemos con el control del botón si quieres hacemos uno de tipo listbox con estas ideas en mente.

Claro que si, amigo Nebire.
Me parecería perfecto, en los libros aveces se quedan cortos con algunos ejemplos sobre controles, veo que tu explicacion es muy completa y me gustaria muchisimo leerla con atencion.

Saludos.


Yo quiero mucho a Toph ---> Mi Web]http://ingenieriacivil.foroactivo.com[/url]

Jimbenit

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Re: Guía: Crear controles de usuario en VB
« Respuesta #5 en: Miércoles 8 de Septiembre de 2010, 19:05 »
0
Hice una pregunta estupida  ^_^ , asi que mejor la borro.

P.D.
"(el control una vez compilado pesa más)."
Pensaba lo contrario.  :blink:

Cita de: "F_Tanori"
Movido de viewtopic.php?f=143&t=44068
Motivo : Imprudencia al publicar una duda en una FAQ o Guia  :brickwall:
 
« última modificación: Miércoles 15 de Septiembre de 2010, 09:39 por F_Tanori »


Yo quiero mucho a Toph ---> Mi Web]http://ingenieriacivil.foroactivo.com[/url]