1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Fechar window gerada por código

Discussão em 'Progress 4GL' iniciado por fabianofss, Outubro 2, 2014.

  1. fabianofss

    fabianofss Membro Participativo

    Bom dia a todos,
    estou criando uma window por código más o botão fechar não está funcionando!
    alguem pode me dar uma ajudinha!

    Código:
    DEFINE VAR Win-foto AS WIDGET-HANDLE NO-UNDO.
    
    DEFINE IMAGE Foto-max
         FILENAME "adeicon/blank":U
         SIZE 79.5 BY 15.5.
    
    DEFINE FRAME Frame-foto
        Foto-max AT ROW 1 COL 1 WIDGET-ID 2
        WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY 
             SIDE-LABELS NO-UNDERLINE THREE-D 
             AT COL 1 ROW 1
             SIZE 80 BY 16 WIDGET-ID 100.
    
    /* *************************  Create Window  ************************** */
    IF SESSION:DISPLAY-TYPE = "GUI":U THEN
      CREATE WINDOW Win-foto ASSIGN
             TITLE              = "Visualização Foto"
             HEIGHT             = 16
             WIDTH              = 80
             MAX-HEIGHT         = 16
             MAX-WIDTH          = 80
             VIRTUAL-HEIGHT     = 16
             VIRTUAL-WIDTH      = 80
             RESIZE             = no
             SCROLL-BARS        = no
             STATUS-AREA        = no
             KEEP-FRAME-Z-ORDER = yes
             THREE-D            = yes
             MESSAGE-AREA       = no
             SENSITIVE          = yes.
    ELSE Win-foto = CURRENT-WINDOW.
    /* END WINDOW DEFINITION                                                */
    
    /* ************************  Control Triggers  ************************ */
    ON END-ERROR OF Win-foto
    OR ENDKEY OF Win-foto ANYWHERE DO:
      /* This case occurs when the user presses the "Esc" key.
         In a persistently run window, just ignore this.  If we did not, the
         application would exit. */
      IF THIS-PROCEDURE:PERSISTENT THEN
          RETURN NO-APPLY.
    END.
    
    ON WINDOW-CLOSE OF Win-foto DO:
      /* This event will close the window and terminate the procedure.  */
      IF  SESSION:DISPLAY-TYPE = "GUI":U 
      AND VALID-HANDLE(Win-foto) THEN 
          DELETE WIDGET Win-foto.
    
      IF THIS-PROCEDURE:PERSISTENT THEN 
          DELETE PROCEDURE THIS-PROCEDURE. 
    
      RETURN NO-APPLY.
    END.
    
    /* ***************************  Main Block  *************************** */
    
    /* Set CURRENT-WINDOW: this will parent dialog-boxes and frames.        */
    ASSIGN 
        CURRENT-WINDOW                = Win-foto 
        THIS-PROCEDURE:CURRENT-WINDOW = Win-foto.
    
    /* Best default for GUI applications is...                              */
    PAUSE 0 BEFORE-HIDE.
    
    MAIN-BLOCK:
    DO ON ERROR   UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK
       ON END-KEY UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK:
    
        VIEW FRAME Frame-foto IN WINDOW Win-foto.
    
        ENABLE Foto-max 
            WITH FRAME Frame-foto IN WINDOW Win-foto.
    
        /* Foto-max:LOAD-IMAGE(dm-visitante.path_foto). */
        Foto-max:LOAD-IMAGE("C:\TesteFoto\111.jpg").
    
        VIEW Win-foto.
    END.
    
    END PROCEDURE.
    [CODE]
  2. jaisonantoniazzi

    jaisonantoniazzi Membro Ativo

    Veja se te ajuda!

    DEFINE VAR Win-foto AS WIDGET-HANDLE NO-UNDO.

    DEFINE IMAGE Foto-max
    FILENAME "adeicon/blank":U
    SIZE 79.5 BY 15.5.

    DEFINE FRAME Frame-foto
    Foto-max AT ROW 1 COL 1 WIDGET-ID 2
    WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
    SIDE-LABELS NO-UNDERLINE THREE-D
    AT COL 1 ROW 1
    SIZE 80 BY 16 WIDGET-ID 100.

    /* ************************* Create Window ************************** */
    IF SESSION:DISPLAY-TYPE = "GUI":U THEN
    CREATE WINDOW Win-foto ASSIGN
    TITLE = "Visualização Foto"
    HEIGHT = 16
    WIDTH = 80
    MAX-HEIGHT = 16
    MAX-WIDTH = 80
    VIRTUAL-HEIGHT = 16
    VIRTUAL-WIDTH = 80
    RESIZE = no
    SCROLL-BARS = no
    STATUS-AREA = no
    KEEP-FRAME-Z-ORDER = yes
    THREE-D = yes
    MESSAGE-AREA = no
    SENSITIVE = yes.
    ELSE Win-foto = CURRENT-WINDOW.
    /* END WINDOW DEFINITION */

    /* ************************ Control Triggers ************************ */
    ON END-ERROR OF Win-foto
    OR ENDKEY OF Win-foto ANYWHERE DO:
    /* This case occurs when the user presses the "Esc" key.
    In a persistently run window, just ignore this. If we did not, the
    application would exit. */
    IF THIS-PROCEDURE:pERSISTENT THEN
    RETURN .
    END.

    ON WINDOW-CLOSE OF Win-foto DO:
    /* This event will close the window and terminate the procedure. */
    IF SESSION:DISPLAY-TYPE = "GUI":U
    AND VALID-HANDLE(Win-foto) THEN
    DELETE WIDGET Win-foto.

    IF THIS-PROCEDURE:pERSISTENT THEN
    DELETE PROCEDURE THIS-PROCEDURE.

    APPLY "CLOSE":U TO THIS-PROCEDURE.

    RETURN.
    END.

    /* *************************** Main Block *************************** */

    /* Set CURRENT-WINDOW: this will parent dialog-boxes and frames. */
    ASSIGN
    CURRENT-WINDOW = Win-foto
    THIS-PROCEDURE:CURRENT-WINDOW = Win-foto.

    /* Best default for GUI applications is... */
    PAUSE 0 BEFORE-HIDE.

    MAIN-BLOCK:
    DO ON ERROR UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK
    ON END-KEY UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK:

    VIEW FRAME Frame-foto IN WINDOW Win-foto.

    ENABLE Foto-max
    WITH FRAME Frame-foto IN WINDOW Win-foto.

    /* Foto-max:LOAD-IMAGE(dm-visitante.path_foto). */
    /*Foto-max:LOAD-IMAGE("C:\TesteFoto\111.jpg").*/

    VIEW Win-foto.

    WAIT-FOR CLOSE OF THIS-PROCEDURE.
    END.

  3. sn_cleverton

    sn_cleverton Sem Pontuação

    Boa tarde Pessoal,

    Para não abrir outro tópico por ser parecido o assunto, resolvi escrever aqui mesmo.
    Estou com um problema, na verdade nunca fiz e gostaria de uma dica de onde começar.
    Estou criando um botão via UPC, e para posicionar o botão peguei o handle de um botão já existente na tela, até aí tudo bem.
    Mas a tela pode ser Maximizada, e com isso o meu botão que criei via UPC não reposiciona, fica no meio da tela.
    Como posso resolver essa situação?
  4. fabianofss

    fabianofss Membro Participativo

    Boa tarde,
    eu já tive este problema e já o resolvi, mas não lembro como e nem tenho como consultar!
    kkkk

    mas lembro que sempre que havia uma iteração com a tela o botão criado recebia a posição e tamanho do original!
    Desculpe não pode ser mais preciso!
    rsrsr

Compartilhe esta Página