Criar nova aba em Zoom - ThinTemplates - EMS

Discussão em 'Progress 4GL' iniciado por LFBuozi, Agosto 9, 2012.

  1. LFBuozi

    LFBuozi Membro Participativo

    Bom dia, pessoal.
    Quero criar uma nova aba de consulta para um zoom do ThinTemplates no EMS, na verdade o z07di159 da PD4000, e instanciar um browse de pesquisa lá.
    Procurando pelas documentações, consegui criar a aba com a upc abaixo:
    Código:
    def input param p-ind-event      as char          no-undo.
    def input param p-ind-object     as char          no-undo.
    def input param p-wgh-object     as handle        no-undo.
    def input param p-wgh-frame      as widget-handle no-undo.
    def input param p-cod-table      as char          no-undo.
    def input param p-row-table      as rowid         no-undo.
    
    DEF NEW GLOBAL SHARED VAR wh-fpage1    AS WIDGET-HANDLE NO-UNDO.
    DEF NEW GLOBAL SHARED VAR wh-fpage-nova    AS WIDGET-HANDLE NO-UNDO.
    
    DEF VAR wgh-grupo       AS WIDGET-HANDLE NO-UNDO.
    DEF VAR wgh-child       AS WIDGET-HANDLE NO-UNDO.
    DEF VAR wh-window       AS HANDLE        NO-UNDO.
    DEF VAR wh-frame0       AS WIDGET-HANDLE NO-UNDO.
    DEF VAR h-objeto   AS HANDLE        NO-UNDO.
    
    {include/i_fclpreproc.i} /* Include que define o processador do Facelift ativado ou não. */
    
    &IF "{&aplica_facelift}" = "YES" &THEN
        {include/i_fcldef.i}
    &endif
    
    IF  p-ind-event = "AFTER-INITIALIZE" THEN DO:
        IF p-wgh-object:NAME = "dizoom/z07di159.w" THEN DO:
            ASSIGN wgh-grupo = p-wgh-frame:FIRST-CHILD.
            ASSIGN wh-window = p-wgh-frame:PARENT.
            ASSIGN wh-frame0 = p-wgh-frame.
            DO WHILE VALID-HANDLE(wgh-grupo):
                ASSIGN wgh-child = wgh-grupo:FIRST-CHILD.
                DO WHILE VALID-HANDLE(wgh-child):
                    IF wgh-child:TYPE = "frame" AND wgh-child:NAME = "fpage1" THEN DO:
                        ASSIGN wh-fpage1 = wgh-child.
                    END.
                    ASSIGN wgh-child = wgh-child:NEXT-SIBLING NO-ERROR.
                END.
                LEAVE.
            END.
        END.
        IF VALID-HANDLE(wh-fpage1) THEN DO:
            CREATE FRAME wh-fpage-nova
                ASSIGN COL         = wh-fpage1:COL
                       ROW         = wh-fpage1:ROW
                       WIDTH       = wh-fpage1:WIDTH
                       HEIGHT      = wh-fpage1:HEIGHT
                       NAME        = "fpage6"
                       SIDE-LABELS = YES
                       SENSITIVE   = YES
                       OVERLAY     = YES
                       BGCOLOR     = wh-fpage1:BGCOLOR
                       BOX         = NO
                       THREE-D     = YES.
            &IF "{&aplica_facelift}" = "YES" &THEN
            {include/i_fcldin.i wh-fpage-cron}
            &endif
    
            assign h-objeto = p-wgh-object.
            do while valid-handle(h-objeto):
                if  h-objeto:FILE-NAME = "utp/thinFolder.w" then
                    LEAVE.
                assign h-objeto = h-objeto:NEXT-SIBLING.
            end.
    
            RUN setFolder IN h-objeto (INPUT 1) .
    
            RUN insertFolder IN h-objeto (INPUT ?,
                                          INPUT p-wgh-frame,
                                          INPUT wh-fpage-nova,
                                          INPUT "NOVA").
        END.
    END.
    
    Mas o problema está em instanciar ou criar um browse lá dentro, tentei usar da forma que faço em outros programas, mas não funcionou:
    Código:
        RUN get-link-handle IN adm-broker-hdl (INPUT p-wgh-object,
                                               INPUT "PAGE-SOURCE":U,
                                               OUTPUT c-folder).
        ASSIGN h-folder = WIDGET-HANDLE(c-folder) NO-ERROR.
    
        IF VALID-HANDLE(h-folder) THEN DO:
    
            RUN set-attribute-list IN h-folder( INPUT "FOLDER-TAB-TYPE = 2").
    
            RUN create-folder-page  IN h-folder     (INPUT 5, INPUT "CRON":U).
            RUN create-folder-label IN h-folder     (INPUT 5, INPUT "CRON":U).
            RUN select-page         IN p-wgh-object (INPUT 5).
    
            RUN init-object IN p-wgh-object (INPUT "esbrw/es-b01di159.w":U,
                                             INPUT p-wgh-frame,
                                             INPUT  "Initial-Lock = NO-LOCK,
                                                     Hide-on-Init = no,
                                                     Disable-on-Init = no,
                                                     Key-Name = ,
                                                     Layout = ":U ,
                                             OUTPUT h-browse).
    
            RUN add-link IN adm-broker-hdl ( h-browse , 'State':U , THIS-PROCEDURE ).
            RUN add-link IN adm-broker-hdl ( h-browse , 'State':U , h-folder ).
    
            RUN get-link-handle IN adm-broker-hdl (INPUT p-wgh-object,
                                                   INPUT "container-target":U,
                                                   OUTPUT c-objects).
    
            RUN set-position IN h-browse ( 3, 3).
    
            RUN dispatch IN h-browse ("initialize":U).
            RUN select-page IN p-wgh-object (INPUT 5).
            RUN pi-envia-zoom IN h-browse (INPUT p-wgh-object).
        END.
    
    Alguém sabe como posso fazer isto?
    Assim, que conseguir, vou tratar a forma de jogar o registro selecionado para a PD4000.
    Obrigado.
  2. brpaula

    brpaula Sem Pontuação

    Ola LF Buozi,

    Você conseguiu solucionar esse problema. Eu também preciso criar uma nova aba em um programa thin template e não encontrei nada que possa me ajudar, esse seu post foi o mais próximo que encontrei.

    se puder me ajudar agradeço

    valew
  3. emr

    emr Membro Participativo

    Na verdade com thin template você não intancia smarts. Seu browse deve ser definido no frame wh-fpage-nova.
  4. brpaula

    brpaula Sem Pontuação

    blz emr, vou fazer alguns testes aqui

    Valew
  5. LFBuozi

    LFBuozi Membro Participativo

    brpaula, na época não consegui chegar ao resultado que eu queria, então criei uma nova tela com a pesquisa chamado por um botão criado por upc na tela.
  6. brpaula

    brpaula Sem Pontuação

    é LF Buozi, eu acho que vou acabar fazendo isso tbem. Ainda não voltei para esse programa, mas vou fazer mais alguns testes, se não der certo vou pra esse lado tbem.

    valew

Compartilhe esta Página