colorir browser

Discussão em 'Progress 4GL' iniciado por ueluis, Abril 27, 2012.

  1. ueluis

    ueluis Membro Participativo

    Galera blz,

    estou apanhando novamente para colorir as linhas de um browser.
    alguém pode me dar uma ajuda para o exemplo abaixo?

    Código:
    DEFINE VARIABLE linha AS ROWID.
    DEF VAR loop AS INT.
    
    /*definindo tabela temporária */
    DEFINE TEMP-TABLE customer
        FIELD cust-num AS INT
        FIELD NAME AS CHAR
        FIELD phone AS CHAR
        FIELD city AS CHAR
        FIELD country AS CHAR.
    
    /* defino a query para armazenar os campos*/
    DEFINE QUERY campos FOR customer . 
    
    /*definindo o layout do browser*/
    
    DEFINE BROWSE grid QUERY campos
        DISPLAY
            customer.cust-num    customer.name
            customer.city        customer.country
            customer.phone
    WITH
    SEPARATORS 20 DOWN 
     row 20 centered OVERLAY 
    size 60 by 20.
    
    /*povoando a tabela*/
    do loop = 1 to 50.
            create customer.
            assign
                customer.cust-num = loop
                customer.NAME = "Fulano-" + string(loop)
                customer.city = "cidade-" + string(loop)
                customer.country = "Pais-" + string(loop)
                customer.phone = "22630" + string(loop) + "0" + string(loop).
    END.
    
    DEF FRAME f-dados   grid  SKIP WITH  NO-LABELS. 
    
    /* procedure para colorir o browse */
    PROCEDURE p-zebrar: 
    
    OPEN QUERY campos PRESELECT EACH customer.
    
    DISPLAY grid WITH FRAME f-dados.
    
    
    /*3FOR EACH customer NO-LOCK:*/
    
    linha = ROWID(customer).
    
    REPOSITION campos TO ROWID (linha).
    
         IF customer.cust-num MOD 2 = 0 THEN DO:
       ASSIGN    
    /******************** fundo da linha *************************/
    
                customer.cust-num :BGCOLOR IN BROWSE grid = 12
                customer.NAME :BGCOLOR IN BROWSE grid = 12
                customer.city :BGCOLOR IN BROWSE grid = 12
    
    /******************** fonte da linha *************************/
    
                customer.cust-num :FGCOLOR IN BROWSE grid = 11
                customer.NAME :FGCOLOR IN BROWSE grid = 11
                customer.city :FGCOLOR IN BROWSE grid = 11.
         end.
        ELSE 
            DO:
                ASSIGN    
    /******************** fundo da linha *************************/
    
                customer.cust-num :BGCOLOR IN BROWSE grid = 10
                customer.NAME :BGCOLOR IN BROWSE grid = 10
                customer.city :BGCOLOR IN BROWSE grid = 10
                customer.country :BGCOLOR IN BROWSE grid = 10
                customer.phone :BGCOLOR IN BROWSE grid = 10.
            END.
    
    END.
    
    
    OPEN QUERY campos PRESELECT EACH customer.
    
    RUN p-zebrar.
    
    ENABLE ALL WITH FRAME f-dados.
    
    WAIT-FOR WINDOW-CLOSE OF CURRENT-WINDOW.
    
    
    ao rolar a barra do browser queria que ele fosse colorindo os outros registros e ele só está colorindo a primeira linha.
  2. lima

    lima Membro Participativo

    Amigo,

    Você precisa utilizar o evento de "ROW-DISPLAY" do browse, conforme exemplo abaixo:

    Código:
    DEFINE VARIABLE linha AS ROWID.
    DEF VAR loop AS INT.
    
    /*definindo tabela temporária */
    DEFINE TEMP-TABLE customer
        FIELD cust-num AS INT
        FIELD NAME AS CHAR
        FIELD phone AS CHAR
        FIELD city AS CHAR
        FIELD country AS CHAR.
    
    /* defino a query para armazenar os campos*/
    DEFINE QUERY campos FOR customer . 
    
    /*definindo o layout do browser*/
    
    DEFINE BROWSE grid QUERY campos
        DISPLAY
            customer.cust-num    customer.name
            customer.city        customer.country
            customer.phone
    WITH
    SEPARATORS 20 DOWN 
    row 20 centered OVERLAY 
    size 60 by 20.
    
    /*povoando a tabela*/
    do loop = 1 to 50.
            create customer.
            assign
                customer.cust-num = loop
                customer.NAME = "Fulano-" + string(loop)
                customer.city = "cidade-" + string(loop)
                customer.country = "Pais-" + string(loop)
                customer.phone = "22630" + string(loop) + "0" + string(loop).
    END.
    
    DEF FRAME f-dados   grid  SKIP WITH  NO-LABELS. 
    
    ON 'row-display':U OF grid DO:
    
        IF customer.cust-num MOD 2 = 0 THEN DO:
       ASSIGN    
    /******************** fundo da linha *************************/
    
                customer.cust-num :BGCOLOR IN BROWSE grid = 12
                customer.NAME :BGCOLOR IN BROWSE grid = 12
                customer.city :BGCOLOR IN BROWSE grid = 12
    
    /******************** fonte da linha *************************/
    
                customer.cust-num :FGCOLOR IN BROWSE grid = 11
                customer.NAME :FGCOLOR IN BROWSE grid = 11
                customer.city :FGCOLOR IN BROWSE grid = 11.
         end.
        ELSE 
            DO:
                ASSIGN    
    /******************** fundo da linha *************************/
    
                customer.cust-num :BGCOLOR IN BROWSE grid = 10
                customer.NAME :BGCOLOR IN BROWSE grid = 10
                customer.city :BGCOLOR IN BROWSE grid = 10
                customer.country :BGCOLOR IN BROWSE grid = 10
                customer.phone :BGCOLOR IN BROWSE grid = 10.
            END.
        
    END.
    
    OPEN QUERY campos PRESELECT EACH customer.
    
    ENABLE ALL WITH FRAME f-dados.
    
    WAIT-FOR WINDOW-CLOSE OF CURRENT-WINDOW.
    
    Abraços.
  3. ueluis

    ueluis Membro Participativo

    Lima,

    muito obrigado, resolveu meus problemas!

Compartilhe esta Página