29 de marzo de 2007

ComboBox Multicolor

El código no es propio, no recuerdo su fuente pero hace años que lo tengo.

Para crear los Items multicolores en un combobox se debe indicar la propiedad RowSourceType = 9 && Popup, y la propiedad de RowSource lleva el nombre con el que se define el popup (Sin comillas).

Los pasos a seguir son los siguientes:

1. Creado el formulario que lo contiene, colocar el siguiente código en el evento Load del formulario:
    #DEFINE RedBar RGB(128,0,0)
    #DEFINE GreenBar RGB(0,128,0)
    #DEFINE BlueBar RGB(0,0,255)
    #DEFINE YellowBar RGB(255,255,0)

    DEFINE POPUP MultiColor
    DEFINE BAR 1 OF MultiColor PROMPT "Rojo" COLOR ,RedBar
    DEFINE BAR 2 OF MultiColor PROMPT "Verde" COLOR ,GreenBar
    DEFINE BAR 3 OF MultiColor PROMPT "Azul" COLOR ,BlueBar
    DEFINE BAR 4 OF MultiColor PROMPT "Amarillo" COLOR ,YellowBar
2. Agregadoo el objeto ComboBox indicar las propiedades siguientes:
    ROWSOURCETYPE = 9 && Popup
    ROWSOURCE = "Multicolor" && (sin las comillas)  
3. En el evento de Valid del ComboBox, poner el código siguiente:
    DO CASE
      CASE THIS.VALUE = "Rojo"
        THIS.FORECOLOR = RedBar
      CASE THIS.VALUE = "Verde"
        THIS.FORECOLOR = GreenBar
      CASE THIS.VALUE = "Azul"
        THIS.FORECOLOR = BlueBar
      CASE THIS.VALUE = "Amarillo"
        THIS.FORECOLOR = YellowBar
    ENDCASE
Cuando se ejecute el formulario al pulsar el combo se despliegan los items con sus respectivos colores.

Dario David Puccio


Nota del editor: El siguiente es un ejemplo completo de esta técnica
PUBLIC oMiForm
oMiForm=NEWOBJECT("MiForm")
oMiForm.SHOW
RETURN

DEFINE CLASS MiForm AS FORM
  AUTOCENTER = .T.
  CAPTION = "Combo Multicolor"
  NAME = "MiForm"

  ADD OBJECT combo1 AS COMBOBOX WITH ;
    ROWSOURCETYPE = 9, ROWSOURCE = "Multicolor", ;
    HEIGHT = 24, LEFT = 24, TOP = 24, WIDTH = 132, ;
    NAME = "Combo1"

  PROCEDURE LOAD
    #DEFINE RedBar RGB(128,0,0)
    #DEFINE GreenBar RGB(0,128,0)
    #DEFINE BlueBar RGB(0,0,255)
    #DEFINE YellowBar RGB(255,255,0)

    DEFINE POPUP MultiColor
    DEFINE BAR 1 OF MultiColor PROMPT "Rojo" COLOR ,RedBar
    DEFINE BAR 2 OF MultiColor PROMPT "Verde" COLOR ,GreenBar
    DEFINE BAR 3 OF MultiColor PROMPT "Azul" COLOR ,BlueBar
    DEFINE BAR 4 OF MultiColor PROMPT "Amarillo" COLOR ,YellowBar
  ENDPROC

  PROCEDURE INIT
    THIS.Combo1.LISTINDEX = 1
    THIS.Combo1.VALID
  ENDPROC

  PROCEDURE combo1.VALID
    DO CASE
      CASE THIS.VALUE = "Rojo"
        THIS.FORECOLOR = RedBar
      CASE THIS.VALUE = "Verde"
        THIS.FORECOLOR = GreenBar
      CASE THIS.VALUE = "Azul"
        THIS.FORECOLOR = BlueBar
      CASE THIS.VALUE = "Amarillo"
        THIS.FORECOLOR = YellowBar
    ENDCASE
  ENDPROC
ENDDEFINE

No hay comentarios. :

Publicar un comentario