Cor nas linhas do browse

Discussão em 'Progress 4GL' iniciado por Agnaldo, Dezembro 5, 2014.

  1. Agnaldo

    Agnaldo Membro Ativo

    Na trigger de ROW-DISPLAY do browser posso colocar algo como
    Código:
     Tabela.Campo1:BGCOLOR IN BROWSE meuBrowse = cor.
     Tabela.Campo2:BGCOLOR IN BROWSE meuBrowse = cor.
     Tabela.Campo3:BGCOLOR IN BROWSE meuBrowse = cor.
    
    para trocar a cor da linha.
    Tem algum método/atributo do browse que permita aplicar sobre toda a linha, sem precisar fazer coluna por coluna?
  2. Eilleen

    Eilleen Membro Ativo

    Boa noite, Agnaldo!

    De fato não existe comando para linha como existe para coluna...
    Segue uma solução que usamos aqui pra minimizar o problema..
    No nosso caso, a mudança de cor está sujeita a uma condição, se não precisar disso é só tirar..
    Espero q ajude.. ;)

    *****************

    No definitions:

    DEFINE VARIABLE v_ListaHandle AS CHARACTER NO-UNDO.
    DEFINE VARIABLE v_handle AS HANDLE NO-UNDO.


    No initialize ou main-block:

    ASSIGN v_handle = browse:FIRST-COLUMN IN FRAME {&FRAME-NAME}.
    DO WHILE VALID-HANDLE(v_handle):
    IF v_ListaHandle = "" THEN
    ASSIGN v_ListaHandle = STRING(v_handle).
    ELSE
    ASSIGN v_ListaHandle = v_ListaHandle + "," + STRING(v_handle).
    ASSIGN v_handle = v_handle:NEXT-COLUMN.
    END.


    No ROW-DISPLAY:

    RUN CorLinhas(v_ListaHandle).


    E a procedure:
    PROCEDURE CorLinhas:

    DEFINE INPUT PARAMETER cBrwsCols AS CHARACTER NO-UNDO.

    DEFINE VARIABLE vContador AS INTEGER NO-UNDO.
    DEFINE VARIABLE hBrwsCol AS HANDLE NO-UNDO.


    /* Iterate through the list of browse columns */

    DO vContador = 1 TO NUM-ENTRIES(cBrwsCols): /* vContador verifica a partir de onde vai colorir da esquerda para direita */
    /* Convert the string value to a handle */
    hBrwsCol = WIDGET-HANDLE(ENTRY(vContador,cBrwsCols)).
    IF CAN-FIND (FIRST tabela WHERE tabela.campo = valor-procurado) THEN DO:
    IF VALID-HANDLE(hBrwsCol) THEN DO:
    hBrwsCol:BGCOLOR = 15.
    hBrwsCol:FGCOLOR = 9.
    END.
    END.
    END.


    END PROCEDURE.
  3. Eilleen

    Eilleen Membro Ativo

    OBS: desculpe a falta de indentação, antes de confirmar a resposta estava bonitinho... :( :confused:
    Agnaldo curtiu isso.
  4. Agnaldo

    Agnaldo Membro Ativo

    Obrigado amiga.
    Ah, sobre a identação, coloca dentro do bloco "CODE", fica mais facil, tal como:
    Código:
    REPEAT:
         DISPLAY "teste".
    END.
    
    Eilleen curtiu isso.
  5. Eilleen

    Eilleen Membro Ativo

    Valeu a dica! ;)
  6. denek

    denek Membro Participativo

    Oi Eilleen muito boa dica, usei e ficou bem prático o programa.

    Thanks
    Eilleen curtiu isso.

Compartilhe esta Página