6 de junio de 2006

Imágenes en controles ListBox y ComboBox

Los controles ListBox y ComboBox permiten añadir imágenes a cada uno de sus elementos.

Podemos añadir imágenes a los elementos de un control ListBox o ComboBox, configurando la propiedad Picture de estos controles.

Si se configura la propiedad Picture con un valor único de propiedad, todos los elementos del control mostrarán la misma imagen (ListBox a la izquierdo de la Figura 1). Si se configura la propiedad Picture como una matriz, se puede almacenar una imagen para cada elemento de la lista, y cada elemento puede tener una imagen distinta (ListBox y ComboBox a la derecha de la Figura 1).


Figura 1.

El siguiente código muestra el formulario de la Figura 1.
PUBLIC goMiForm
goMiForm = CREATEOBJECT("MiForm")
goMiForm.SHOW(1)
RETURN

DEFINE CLASS MiForm AS FORM
  HEIGHT = 232
  WIDTH = 496
  AUTOCENTER = .T.
  SHOWWINDOW = 2
  CAPTION = "Imágenes en controles ListBox y ComboBox"
  NAME = "MiForm"
  ICON = HOME(1) + "Graphics\Icons\Misc\face02.ico"
  ADD OBJECT lstLista1 AS LISTBOX WITH ;
    HEIGHT = 208, LEFT = 12, TOP = 12, WIDTH = 150, ;
    INTEGRALHEIGHT = .T., NAME = "lstLista1"
  ADD OBJECT lstLista2 AS LISTBOX WITH ;
    HEIGHT = 208, LEFT = 170, TOP = 12, WIDTH = 150, ;
    INTEGRALHEIGHT = .T., NAME = "lstLista2"
  ADD OBJECT cmbCombo AS COMBOBOX WITH ;
    HEIGHT = 24, LEFT = 330, TOP = 12, WIDTH = 150, ;
    STYLE = 2, NAME = "cmbCombo"
  *--
  PROCEDURE INIT
    LOCAL lcDir, ln, lnItems
    lcDirBmp = HOME(1) + "Graphics\Bitmaps\Outline\Nomask\"
    WITH THISFORM
      .ADDPROPERTY("la(1)")
      lnItems = ADIR(.la,lcDirBmp + "*.bmp")
      *-- Items e imagen igual para todos los elementos
      .lstLista1.ROWSOURCETYPE = 5 && Matriz
      .lstLista1.ROWSOURCE = "ThisForm.la"
      .lstLista1.PICTURE = lcDirBmp + "Bmp.Bmp"
      FOR ln = 1 TO lnItems
        *-- Items e imágenes para cada elemento del ListBox
        .lstLista2.ADDITEM(.la(ln,1),ln)
        .lstLista2.PICTURE(ln) = lcDirBmp + .la(ln,1)
        *-- Items e imágenes para cada elemento del ComboBox
        .cmbCombo.ADDITEM(.la(ln,1),ln)
        .cmbCombo.PICTURE(ln) = lcDirBmp + .la(ln,1)
      ENDFOR
      .lstLista1.LISTINDEX = 1
      .lstLista2.LISTINDEX = 1
      .cmbCombo.LISTINDEX = 1
    ENDWITH
  ENDPROC
ENDDEFINE
Podemos ver otro caso de imagenes en un control ListBox, en los ejemplos Solutions de Visual FoxPro, ejecutando el siguiente formulario:
DO FORM (HOME(2) + "\Solution\Controls\Lists\PicList.scx")

Luis María Guayán

No hay comentarios. :

Publicar un comentario