Alterar Browser dinamicamente

Discussão em 'Progress 4GL' iniciado por cristofergirardi, Março 26, 2013.

  1. cristofergirardi

    cristofergirardi Sem Pontuação

    Boa tarde,

    Estou precisando alterar de browser em runtime, tem como fazer isso?

    Por exemplo, tenho 3 botões que abrem browsers diferentes e, com querys diferentes, mas utilizando o mesmo frame. Existe a possibilidade de fazer isso? E como posso fazer?

    Att.
  2. cristofergirardi

    cristofergirardi Sem Pontuação

    Bom dia,

    Consegui resolver o problema. A solução foi:

    1- Ter um handle para o frame
    2- Ter um handle para cada browser
    3- Ter um handle para a query
    4- Dizer que estes handles são frames, browsers e query;
    5- Ter um buffer para receber as informações das leituras das tabelas
    6- A query receber o buffer e o select que deve ser executado.

    E esta feito ...

    /* Variable definitions */
    DEFINE TEMP-TABLE tt-procedures NO-UNDO
    FIELD h-handle AS INTEGER LABEL "Handle"
    FIELD c-file-name AS CHARACTER FORMAT "X(30)" LABEL "Arquivos"
    FIELD c-procedure-name AS CHARACTER FORMAT "X(40)" LABEL "Procedure"
    FIELD c-transaction AS LOGICAL FORMAT "Sim/Nao" LABEL "Transação em Aberto?"
    FIELD c-instantiating AS CHARACTER FORMAT "X(40)" LABEL "Executor"
    FIELD h-handle-called AS INTEGER LABEL "Handle executor".

    DEFINE VARIABLE hBrowse AS HANDLE NO-UNDO.
    DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
    DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
    DEFINE VARIABLE hBatualizar AS HANDLE NO-UNDO.
    DEFINE VARIABLE hProcedure AS HANDLE NO-UNDO.

    FORM WITH FRAME DEFAULT-FRAME WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
    NO-UNDERLINE THREE-D AT COL 1 ROW 1 SIZE 126 BY 17 WIDGET-ID 100.

    CREATE QUERY hQuery.

    CREATE BROWSE hBrowse
    ASSIGN WIDTH = 126
    DOWN = 15
    QUERY = hQuery
    FRAME = FRAME DEFAULT-FRAME:HANDLE
    READ-ONLY = TRUE
    SENSITIVE = FALSE
    MULTIPLE = TRUE
    COLUMN-RESIZABLE = TRUE
    FONT = 2
    SEPARATORS = TRUE.

    CREATE BUTTON hBatualizar
    ASSIGN FRAME = FRAME DEFAULT-FRAME:handle
    SENSITIVE = TRUE
    LABEL = "Atualizar"
    X = 20
    Y = 340
    WIDTH = 15
    TRIGGERS:
    ON CHOOSE
    DO:
    RUN create-query.

    SELF:SENSITIVE = TRUE.
    END.
    END TRIGGERS.


    PROCEDURE create-query:
    hProcedure = SESSION:FIRST-PROCEDURE.
    DO WHILE VALID-HANDLE(hProcedure):
    CREATE tt-procedures.
    ASSIGN tt-procedures.h-handle = hProcedure:HANDLE AS INTEGER
    tt-procedures.c-file-name = hProcedure:FILE-NAME
    tt-procedures.c-procedure-name = hProcedure:NAME
    tt-procedures.c-transaction = hProcedure:TRANSACTION:IS-OPEN
    tt-procedures.h-handle-called = hProcedure:INSTANTIATING-PROCEDURE AS INTEGER
    tt-procedures.c-instantiating = IF hProcedure:INSTANTIATING-PROCEDURE <> ? THEN hProcedure:INSTANTIATING-PROCEDURE:NAME ELSE "".

    hProcedure = hProcedure:NEXT-SIBLING.
    END.

    RUN enable-query("tt-procedures","FOR EACH tt-procedures NO-LOCK").

    hBrowse:ADD-LIKE-COLUMN("tt-procedures.h-handle-called").
    hBrowse:ADD-LIKE-COLUMN("tt-procedures.c-instantiating").
    hBrowse:ADD-LIKE-COLUMN("tt-procedures.h-handle").
    hBrowse:ADD-LIKE-COLUMN("tt-procedures.c-procedure-name").
    hBrowse:ADD-LIKE-COLUMN("tt-procedures.c-transaction").
    END PROCEDURE.

    PROCEDURE enable-query:
    DEFINE INPUT PARAMETER hBufferName AS CHARACTER NO-UNDO.
    DEFINE INPUT PARAMETER cBaseQuery AS CHARACTER NO-UNDO.

    CREATE BUFFER hBuffer FOR TABLE hBufferName.

    hQuery:QUERY-CLOSE().
    hQuery:SET-BUFFERS(hBuffer).
    hQuery:QUERY-PREPARE(cBaseQuery).
    hQuery:QUERY-OPEN.
    END PROCEDURE.

Compartilhe esta Página