aplicação em segundo pano

Discussão em 'Progress 4GL' iniciado por ueluis, Maio 20, 2015.

  1. ueluis

    ueluis Membro Participativo

    pessoa,

    tenho uma smart principal que executa uma tela de login (outra smart) .
    quando usuário clica no botão cancelar a smart principal some e só visualizo a mesma no gerenciador de tarefa.

    como solucionar o problema?
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    no botão cancelar, executa o comando QUIT
  3. ueluis

    ueluis Membro Participativo

    abaixo as duas smarts

    Código:
    &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
    &ANALYZE-RESUME
    &Scoped-define WINDOW-NAME wWin
    {adecomm/appserv.i}
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS wWin
    /*------------------------------------------------------------------------
    
      File:
    
      Description: from cntnrwin.w - ADM SmartWindow Template
    
      Input Parameters:
          <none>
    
      Output Parameters:
          <none>
    
      History: New V9 Version - January 15, 1998
            
    ------------------------------------------------------------------------*/
    /*          This .W file was created with the Progress AB.              */
    /*----------------------------------------------------------------------*/
    
    /* Create an unnamed pool to store all the widgets created
         by this procedure. This is a good default which assures
         that this procedure's triggers and internal procedures
         will execute in this procedure's storage, and that proper
         cleanup will occur on deletion of the procedure. */
    
    CREATE WIDGET-POOL.
    
    /* ***************************  Definitions  ************************** */
    
    /* Parameters Definitions ---                                           */
    DEFINE TEMP-TABLE tt-param NO-UNDO
        FIELD tabela           AS CHAR
        FIELD campo-retorno    AS CHAR FORMAT "x(16)"
        FIELD vcampo-retorno   AS CHAR FORMAT "x(16)"
        FIELD campo-verifica1  AS CHAR FORMAT "X(60)"
        FIELD vcampo-verifica1 AS CHAR FORMAT "X(60)"
        FIELD campo-verifica2  AS CHAR FORMAT "X(60)"
        FIELD vcampo-verifica2 AS CHAR FORMAT "X(60)"
        FIELD v-status         AS LOGICAL INIT NO.
    
    /* Local Variable Definitions ---                                       */
    DEFINE VARIABLE caminho_prog      AS CHAR INIT "c:\CONTNUM\".
    DEFINE VARIABLE caminho_txt       AS CHAR INIT "c:\CONTNUM\".
    
    {src/adm2/widgetprto.i}
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
    
    /* ********************  Preprocessor Definitions  ******************** */
    
    &Scoped-define PROCEDURE-TYPE SmartWindow
    &Scoped-define DB-AWARE no
    
    &Scoped-define ADM-CONTAINER WINDOW
    
    &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target,Filter-target,Filter-Source
    
    /* Name of designated FRAME-NAME and/or first browse and/or first query */
    &Scoped-define FRAME-NAME fMain
    
    /* Standard List Definitions                                            */
    &Scoped-Define ENABLED-OBJECTS RECT-0 bLogar c-texto
    &Scoped-Define DISPLAYED-OBJECTS tc-titulo c-texto
    
    /* Custom List Definitions                                              */
    /* List-1,List-2,List-3,List-4,List-5,List-6                            */
    
    /* _UIB-PREPROCESSOR-BLOCK-END */
    &ANALYZE-RESUME
    
    
    
    /* ***********************  Control Definitions  ********************** */
    
    /* Define the widget handle for the window                              */
    DEFINE VAR wWin AS WIDGET-HANDLE NO-UNDO.
    
    /* Definitions of handles for OCX Containers                            */
    DEFINE VARIABLE CtrlFrame AS WIDGET-HANDLE NO-UNDO.
    DEFINE VARIABLE chCtrlFrame AS COMPONENT-HANDLE NO-UNDO.
    
    /* Definitions of the field level widgets                               */
    DEFINE BUTTON bLogar
         LABEL "Login"
         SIZE 19 BY 1.5.
    
    DEFINE VARIABLE c-texto AS CHARACTER FORMAT "X(256)":U
          VIEW-AS TEXT
         SIZE 33 BY 1
         FONT 10 NO-UNDO.
    
    DEFINE VARIABLE tc-titulo AS CHARACTER FORMAT "X(60)":U INITIAL "CONFIGURADOR DE PRODUTO"
          VIEW-AS TEXT
         SIZE 47 BY .92
         FGCOLOR 0 FONT 14 NO-UNDO.
    
    DEFINE RECTANGLE RECT-0
         EDGE-PIXELS 11  NO-FILL 
         SIZE 56.43 BY 2.5.
    
    
    /* ************************  Frame Definitions  *********************** */
    
    DEFINE FRAME fMain
         bLogar AT ROW 4.75 COL 11 WIDGET-ID 62
         tc-titulo AT ROW 2.08 COL 14.43 COLON-ALIGNED NO-LABEL WIDGET-ID 110
         c-texto AT ROW 4.5 COL 45 COLON-ALIGNED NO-LABEL WIDGET-ID 4
         RECT-0 AT ROW 1.33 COL 10.86 WIDGET-ID 52
        WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
             SIDE-LABELS NO-UNDERLINE THREE-D
             AT COL 1 ROW 1
             SIZE 80 BY 7.29 WIDGET-ID 100.
    
    
    /* *********************** Procedure Settings ************************ */
    
    &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
    /* Settings for THIS-PROCEDURE
       Type: SmartWindow
       Allow: Basic,Browse,DB-Fields,Query,Smart,Window
       Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target,Filter-target,Filter-Source
       Other Settings: APPSERVER
    */
    &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
    
    /* *************************  Create Window  ************************** */
    
    &ANALYZE-SUSPEND _CREATE-WINDOW
    IF SESSION:DISPLAY-TYPE = "GUI":U THEN
      CREATE WINDOW wWin ASSIGN
             HIDDEN             = YES
             TITLE              = "Configurador de Produto"
             HEIGHT             = 7.29
             WIDTH              = 80
             MAX-HEIGHT         = 28.79
             MAX-WIDTH          = 146.14
             VIRTUAL-HEIGHT     = 28.79
             VIRTUAL-WIDTH      = 146.14
             RESIZE             = no
             SCROLL-BARS        = no
             STATUS-AREA        = no
             BGCOLOR            = ?
             FGCOLOR            = ?
             THREE-D            = yes
             MESSAGE-AREA       = no
             SENSITIVE          = yes.
    ELSE {&WINDOW-NAME} = CURRENT-WINDOW.
    /* END WINDOW DEFINITION                                                */
    &ANALYZE-RESUME
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB wWin
    /* ************************* Included-Libraries *********************** */
    
    {src/adm2/containr.i}
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    
    
    /* ***********  Runtime Attributes and AppBuilder Settings  *********** */
    
    &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
    /* SETTINGS FOR WINDOW wWin
      VISIBLE,,RUN-PERSISTENT                                               */
    /* SETTINGS FOR FRAME fMain
       FRAME-NAME                                                           */
    /* SETTINGS FOR FILL-IN tc-titulo IN FRAME fMain
       NO-ENABLE                                                            */
    ASSIGN
           tc-titulo:READ-ONLY IN FRAME fMain        = TRUE.
    
    IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(wWin)
    THEN wWin:HIDDEN = yes.
    
    /* _RUN-TIME-ATTRIBUTES-END */
    &ANALYZE-RESUME
    
    
    
    /* **********************  Create OCX Containers  ********************** */
    
    &ANALYZE-SUSPEND _CREATE-DYNAMIC
    
    &IF "{&OPSYS}" = "WIN32":U AND "{&WINDOW-SYSTEM}" NE "TTY":U &THEN
    
    CREATE CONTROL-FRAME CtrlFrame ASSIGN
           FRAME           = FRAME fMain:HANDLE
           ROW             = 4
           COLUMN          = 74
           HEIGHT          = 1.17
           WIDTH           = 5
           WIDGET-ID       = 2
           HIDDEN          = yes
           SENSITIVE       = yes.
    
    PROCEDURE adm-create-controls:
          CtrlFrame:NAME = "CtrlFrame":U .
    /* CtrlFrame OCXINFO:CREATE-CONTROL from: {F0B88A90-F5DA-11CF-B545-0020AF6ED35A} type: PSTimer */
    
    END PROCEDURE.
    
    &ENDIF
    
    &ANALYZE-RESUME /* End of _CREATE-DYNAMIC */
    
    
    /* ************************  Control Triggers  ************************ */
    
    &Scoped-define SELF-NAME wWin
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL wWin wWin
    ON END-ERROR OF wWin /* Configurador de Produto */
    OR ENDKEY OF {&WINDOW-NAME} 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.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL wWin wWin
    ON WINDOW-CLOSE OF wWin /* Configurador de Produto */
    DO:
      /* This ADM code must be left here in order for the SmartWindow
         and its descendents to terminate properly on exit. */
      APPLY "CLOSE":U TO THIS-PROCEDURE.
      RETURN NO-APPLY.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME bLogar
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL bLogar wWin
    ON CHOOSE OF bLogar IN FRAME fMain /* Login */
    DO:
      FOR EACH tt-param:
          DELETE tt-param.
      END.
      CREATE tt-param.
      assign
          tt-param.tabela = "control_numeracao.funcionario"     
          tt-param.campo-retorno = "codperfilfk"
          tt-param.campo-verifica1  = "matricula"
          tt-param.campo-verifica2  = "senha".
      RUN VALUE("login1.r") (INPUT-OUTPUT TABLE tt-param  BY-REFERENCE).
        IF AVAIL tt-param THEN DO:
                IF TT-PARAM.v-status = NO  THEN
                    RUN disable_UI.
        END.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME CtrlFrame
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CtrlFrame wWin OCX.Tick
    PROCEDURE CtrlFrame.PSTimer.Tick .
    /*------------------------------------------------------------------------------
      Purpose:   
      Parameters:  None required for OCX.
      Notes:     
    ------------------------------------------------------------------------------*/
    /*************** condição para saudação da hora do sistema ******************************/
    IF (DECIMAL(SUBSTRING(STRING(TIME, "HH:MM"),1,2)) < 12)  THEN
        ASSIGN c-texto:SCREEN-VALUE IN FRAME {&FRAME-NAME} = "Olá, Bom Dia! " + STRING(TIME,"hh:mm:ss").
    ELSE
        IF ((DECIMAL(SUBSTRING(STRING(TIME, "HH:MM"),1,2)) >= 12) AND (DECIMAL(SUBSTRING(STRING(TIME, "HH:MM"),1,2)) < 18)) THEN
            ASSIGN c-texto:SCREEN-VALUE IN FRAME {&FRAME-NAME} = "Olá, Boa Tarde! " + STRING(TIME,"hh:mm:ss").
        ELSE
            ASSIGN c-texto:SCREEN-VALUE IN FRAME {&FRAME-NAME} = "Olá, Boa Noite! " + STRING(TIME,"hh:mm:ss").
    
        /* IF vlog_pedido = NO THEN
          vlog_pedido:BGCOLOR IN FRAME fconf_produto = 12.
      ELSE
         IF vlog_pedido = YES THEN
             vlog_pedido:BGCOLOR IN FRAME fconf_produto = 10.
         ELSE
             vlog_pedido:BGCOLOR IN FRAME fconf_produto = ?.*/
      
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &UNDEFINE SELF-NAME
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK wWin
    
    
    /* ***************************  Main Block  *************************** */
    
    /* Include custom  Main Block code for SmartWindows. */
    {src/adm2/windowmn.i}
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    /* **********************  Internal Procedures  *********************** */
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects wWin  _ADM-CREATE-OBJECTS
    PROCEDURE adm-create-objects :
    /*------------------------------------------------------------------------------
      Purpose:     Create handles for all SmartObjects used in this procedure.
                   After SmartObjects are initialized, then SmartLinks are added.
      Parameters:  <none>
    ------------------------------------------------------------------------------*/
    
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE control_load wWin  _CONTROL-LOAD
    PROCEDURE control_load :
    /*------------------------------------------------------------------------------
      Purpose:     Load the OCXs  
      Parameters:  <none>
      Notes:       Here we load, initialize and make visible the
                   OCXs in the interface.                      
    ------------------------------------------------------------------------------*/
    
    &IF "{&OPSYS}" = "WIN32":U AND "{&WINDOW-SYSTEM}" NE "TTY":U &THEN
    DEFINE VARIABLE UIB_S    AS LOGICAL    NO-UNDO.
    DEFINE VARIABLE OCXFile  AS CHARACTER  NO-UNDO.
    
    OCXFile = SEARCH( "wteste.wrx":U ).
    IF OCXFile = ? THEN
      OCXFile = SEARCH(SUBSTRING(THIS-PROCEDURE:FILE-NAME, 1,
                         R-INDEX(THIS-PROCEDURE:FILE-NAME, ".":U), "CHARACTER":U) + "wrx":U).
    
    IF OCXFile <> ? THEN
    DO:
      ASSIGN
        chCtrlFrame = CtrlFrame:COM-HANDLE
        UIB_S = chCtrlFrame:LoadControls( OCXFile, "CtrlFrame":U)
      .
      RUN initialize-controls IN THIS-PROCEDURE NO-ERROR.
    END.
    ELSE MESSAGE "wteste.wrx":U SKIP(1)
                 "The binary control file could not be found. The controls cannot be loaded."
                 VIEW-AS ALERT-BOX TITLE "Controls Not Loaded".
    
    &ENDIF
    
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI wWin  _DEFAULT-DISABLE
    PROCEDURE disable_UI :
    /*------------------------------------------------------------------------------
      Purpose:     DISABLE the User Interface
      Parameters:  <none>
      Notes:       Here we clean-up the user-interface by deleting
                   dynamic widgets we have created and/or hide
                   frames.  This procedure is usually called when
                   we are ready to "clean-up" after running.
    ------------------------------------------------------------------------------*/
      /* Delete the WINDOW we created */
      IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(wWin)
      THEN DELETE WIDGET wWin.
      IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI wWin  _DEFAULT-ENABLE
    PROCEDURE enable_UI :
    /*------------------------------------------------------------------------------
      Purpose:     ENABLE the User Interface
      Parameters:  <none>
      Notes:       Here we display/view/enable the widgets in the
                   user-interface.  In addition, OPEN all queries
                   associated with each FRAME and BROWSE.
                   These statements here are based on the "Other
                   Settings" section of the widget Property Sheets.
    ------------------------------------------------------------------------------*/
      DISPLAY tc-titulo c-texto
          WITH FRAME fMain IN WINDOW wWin.
      ENABLE RECT-0 bLogar c-texto
          WITH FRAME fMain IN WINDOW wWin.
      {&OPEN-BROWSERS-IN-QUERY-fMain}
      VIEW wWin.
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE exitObject wWin
    PROCEDURE exitObject :
    /*------------------------------------------------------------------------------
      Purpose:  Window-specific override of this procedure which destroys
                its contents and itself.
        Notes:
    ------------------------------------------------------------------------------*/
    
      APPLY "CLOSE":U TO THIS-PROCEDURE.
      RETURN.
    
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    

    login

    Código:
    &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
    &ANALYZE-RESUME
    &Scoped-define WINDOW-NAME login
    {adecomm/appserv.i}
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS login
    /*
              |=============================================================|
             |=     TELA PARA LOGIN DE USUARIO                            =|
            |=                                                           =|
           |=     ELABORADO POR: Ueliton Luis Oliveira Silva            =|
          |=     SUPERVISIONADO POR:                                   =|
         |=     SETOR:                                                =|
        |=     VER: 1.0     ID:                                      =|
       |=     DATA DE CRIAÇÃO: 10/Mar/2015                          =|
      |=     DATA DE MODIFICAÇÃO:                                  =|
    |=============================================================|
     
    */
    
    CREATE WIDGET-POOL.
    
    /* ***************************  Definitions  ************************** */
    
    /* Parameters Definitions ---                                           */
    
    /* Local Variable Definitions ---                                       */
    /* ***************************  Definitions  ************************** */
    
    /* Parameters Definitions ---                                           */
    
    /* Local Variable Definitions ---                                       */
    def var vtag as integer init 0.
    DEF VAR l-resp AS LOGICAL INIT NO.
    DEF VAR iReturnValue    AS INTEGER   NO-UNDO.
    DEF VAR cont AS INT INIT 0.
    DEF VAR caminho AS CHAR FORMAT "X(60)".
    
    DEFINE TEMP-TABLE tt-param NO-UNDO
            FIELD tabela           AS CHAR
            FIELD campo-retorno    AS CHAR FORMAT "x(16)"
            FIELD vcampo-retorno   AS CHAR FORMAT "x(16)"
            FIELD campo-verifica1  AS CHAR FORMAT "X(60)"
            FIELD vcampo-verifica1  AS CHAR FORMAT "X(60)"
            FIELD campo-verifica2  AS CHAR FORMAT "X(60)"
            FIELD vcampo-verifica2  AS CHAR FORMAT "X(60)"
            FIELD v-status         AS LOGICAL INIT NO.
     
    DEF INPUT-OUTPUT PARAM TABLE FOR tt-param.
    
    /**********************FUNÇÃO PARA RETORNAR VALOR **************************************/
    FUNCTION validar RETURNS CHAR (INPUT tabela AS CHARACTER, INPUT retorno AS CHAR, INPUT clausula AS c):
        DEFINE VARIABLE i      AS INTEGER  NO-UNDO.
        DEFINE VARIABLE qh     AS HANDLE.
        DEFINE VARIABLE bh     as handle.
        DEFINE VARIABLE iCont  as int.
    
    IF ((tabela <> "") AND (clausula <> "") AND (retorno <> "") )THEN DO:
    
        CREATE QUERY qh.
        CREATE BUFFER bh FOR TABLE tabela.
        qh:SET-BUFFERS(bh).
        qh:QUERY-PREPARE("for each " + tabela + " " + clausula).
        qh:QUERY-OPEN.
    
        DO WHILE (qh:GET-NEXT = YES):
          
             
                    IF  bh:BUFFER-FIELD(retorno):BUFFER-VALUE <> "" THEN
                        RETURN bh:BUFFER-FIELD(retorno):BUFFER-VALUE.
                    ELSE
                        RETURN "".
        END.
    END.
    ELSE DO:
        IF (tabela = "") THEN
            MESSAGE "ATENÇÃO Não Foi Informado o Parametro -tabela- da Função Validar." VIEW-AS ALERT-BOX WARNING  BUTTONS OK TITLE "A T E N C Ã O   E R R O   D E    P A R A M E T R O".
        ELSE
            IF (clausula = "")  then
                MESSAGE "ATENÇÃO Não Foi Informado o Parametro -clausula- da Função Validar." VIEW-AS ALERT-BOX WARNING  BUTTONS OK TITLE "A T E N C Ã O   E R R O   D E    P A R A M E T R O".
            ELSE IF (retorno = "") THEN
                MESSAGE "ATENÇÃO Não Foi Informado o Parametro de -retorno- da Função." VIEW-AS ALERT-BOX WARNING  BUTTONS OK TITLE "A T E N C Ã O   E R R O   D E    P A R A M E T R O".
        RETURN "".
    END.
    
    END FUNCTION.
    
    PROCEDURE SendMessageA EXTERNAL "USER32.DLL" :
    
      DEFINE INPUT  PARAMETER hwnd        AS LONG.
      DEFINE INPUT  PARAMETER umsg        AS LONG.
      DEFINE INPUT  PARAMETER wparam      AS LONG.
      DEFINE INPUT  PARAMETER lparam      AS LONG. 
      DEFINE RETURN PARAMETER ReturnValue AS LONG.
    
    END PROCEDURE.
    {src/adm2/widgetprto.i}
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
    
    /* ********************  Preprocessor Definitions  ******************** */
    
    &Scoped-define PROCEDURE-TYPE SmartWindow
    &Scoped-define DB-AWARE no
    
    &Scoped-define ADM-CONTAINER WINDOW
    
    &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target,Filter-target,Filter-Source
    
    /* Name of designated FRAME-NAME and/or first browse and/or first query */
    &Scoped-define FRAME-NAME flogin
    
    /* Standard List Definitions                                            */
    &Scoped-Define ENABLED-OBJECTS RECT-1 RECT-2 v-usuario v-senha b-ok ~
    b-cancelar
    &Scoped-Define DISPLAYED-OBJECTS v-usuario v-senha
    
    /* Custom List Definitions                                              */
    /* List-1,List-2,List-3,List-4,List-5,List-6                            */
    
    /* _UIB-PREPROCESSOR-BLOCK-END */
    &ANALYZE-RESUME
    
    
    
    /* ***********************  Control Definitions  ********************** */
    
    /* Define the widget handle for the window                              */
    DEFINE VAR login AS WIDGET-HANDLE NO-UNDO.
    
    /* Definitions of the field level widgets                               */
    DEFINE BUTTON b-cancelar
         LABEL "Cancelar"
         SIZE 10 BY 1.
    
    DEFINE BUTTON b-ok AUTO-GO
         LABEL "&Confirmar"
         SIZE 10 BY 1.
    
    DEFINE VARIABLE v-senha AS CHARACTER FORMAT "X(11)":U INITIAL "60921800"
         LABEL "Senha"
         VIEW-AS FILL-IN
         SIZE 14 BY 1
         BGCOLOR 15 FONT 14 NO-UNDO.
    
    DEFINE VARIABLE v-usuario AS CHARACTER FORMAT "9(6)":U INITIAL "005890"
         LABEL "Usuário"
         VIEW-AS FILL-IN
         SIZE 14 BY 1
         BGCOLOR 15 FONT 14 NO-UNDO.
    
    DEFINE RECTANGLE RECT-1
         EDGE-PIXELS 2 GRAPHIC-EDGE  NO-FILL  
         SIZE 42 BY 2.75.
    
    DEFINE RECTANGLE RECT-2
         EDGE-PIXELS 2 GRAPHIC-EDGE   
         SIZE 42 BY 1.5
         BGCOLOR 7 .
    
    
    /* ************************  Frame Definitions  *********************** */
    
    DEFINE FRAME flogin
         v-usuario AT ROW 1.33 COL 19 COLON-ALIGNED WIDGET-ID 6
         v-senha AT ROW 2.46 COL 19 COLON-ALIGNED WIDGET-ID 8 AUTO-RETURN
         b-ok AT ROW 4.29 COL 3 WIDGET-ID 10
         b-cancelar AT ROW 4.29 COL 14 WIDGET-ID 12
         RECT-1 AT ROW 1.08 COL 2 WIDGET-ID 2
         RECT-2 AT ROW 4.04 COL 2 WIDGET-ID 4
        WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
             SIDE-LABELS NO-UNDERLINE THREE-D
             AT COL 1 ROW 1
             SIZE 80 BY 17 WIDGET-ID 100.
    
    
    /* *********************** Procedure Settings ************************ */
    
    &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
    /* Settings for THIS-PROCEDURE
       Type: SmartWindow
       Allow: Basic,Browse,DB-Fields,Query,Smart,Window
       Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target,Filter-target,Filter-Source
       Other Settings: APPSERVER
    */
    &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
    
    /* *************************  Create Window  ************************** */
    
    &ANALYZE-SUSPEND _CREATE-WINDOW
    IF SESSION:DISPLAY-TYPE = "GUI":U THEN
      CREATE WINDOW login ASSIGN
             HIDDEN             = YES
             TITLE              = "Login do Usuario"
             COLUMN             = 35.43
             ROW                = 9.92
             HEIGHT             = 5.08
             WIDTH              = 45.57
             MAX-HEIGHT         = 28.79
             MAX-WIDTH          = 146.14
             VIRTUAL-HEIGHT     = 28.79
             VIRTUAL-WIDTH      = 146.14
             MIN-BUTTON         = no
             MAX-BUTTON         = no
             RESIZE             = no
             SCROLL-BARS        = no
             STATUS-AREA        = no
             BGCOLOR            = ?
             FGCOLOR            = ?
             KEEP-FRAME-Z-ORDER = yes
             THREE-D            = yes
             MESSAGE-AREA       = no
             SENSITIVE          = yes.
    ELSE {&WINDOW-NAME} = CURRENT-WINDOW.
    /* END WINDOW DEFINITION                                                */
    &ANALYZE-RESUME
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "SmartWindowCues" login _INLINE
    /* Actions: adecomm/_so-cue.w ? adecomm/_so-cued.p ? adecomm/_so-cuew.p */
    /* SmartWindow,ab,49271
    Destroy on next read */
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB login
    /* ************************* Included-Libraries *********************** */
    
    {src/adm2/containr.i}
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    
    
    /* ***********  Runtime Attributes and AppBuilder Settings  *********** */
    
    &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
    /* SETTINGS FOR WINDOW login
      VISIBLE,,RUN-PERSISTENT                                               */
    /* SETTINGS FOR FRAME flogin
       FRAME-NAME                                                           */
    IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(login)
    THEN login:HIDDEN = no.
    
    /* _RUN-TIME-ATTRIBUTES-END */
    &ANALYZE-RESUME
    
    
    
    
    /* ************************  Control Triggers  ************************ */
    
    &Scoped-define SELF-NAME login
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL login login
    ON END-ERROR OF login /* Login do Usuario */
    OR ENDKEY OF {&WINDOW-NAME} 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.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL login login
    ON WINDOW-CLOSE OF login /* Login do Usuario */
    DO:
      /* This ADM code must be left here in order for the SmartWindow
         and its descendents to terminate properly on exit. */
      /*APPLY "CLOSE":U TO THIS-PROCEDURE.
      RETURN NO-APPLY.*/
        apply "close" to this-procedure.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME b-cancelar
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL b-cancelar login
    ON CHOOSE OF b-cancelar IN FRAME flogin /* Cancelar */
    DO:
      apply "close" to this-procedure.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME b-ok
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL b-ok login
    ON CHOOSE OF b-ok IN FRAME flogin /* Confirmar */
    DO:
       IF (v-senha:SCREEN-VALUE IN FRAME flogin = "") THEN DO:
            MESSAGE " Senha Deve Ser Diferente de Vazio!" VIEW-AS ALERT-BOX ERROR BUTTONS OK TITLE "E R R O   D E   L O G I N".
            apply "SHIFT+tab" to self.
            return no-apply.
         END.
       ELSE
           RUN p-confirmar.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME v-senha
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL v-senha login
    ON ENTRY OF v-senha IN FRAME flogin /* Senha */
    DO:
        RUN SendMessageA IN THIS-PROCEDURE
                               (v-senha:HWND,204,ASC("*"),0,OUTPUT iReturnValue).
        RUN SendMessageA IN THIS-PROCEDURE
                               (v-senha:HWND,204,ASC("*"),1,OUTPUT iReturnValue).
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL v-senha login
    ON RETURN OF v-senha IN FRAME flogin /* Senha */
    DO:
       apply "CHOOSE" to b-ok.
          return no-apply.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME v-usuario
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL v-usuario login
    ON LEAVE OF v-usuario IN FRAME flogin /* Usuário */
    DO:
      IF (v-usuario:SCREEN-VALUE IN FRAME flogin = "") THEN DO:
             v-usuario:SCREEN-VALUE IN FRAME flogin = "000000".
         END.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL v-usuario login
    ON RETURN OF v-usuario IN FRAME flogin /* Usuário */
    DO:
      apply "tab" to self.
         return no-apply.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &UNDEFINE SELF-NAME
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK login
    
    
    /* ***************************  Main Block  *************************** */
    
    /* Include custom  Main Block code for SmartWindows. */
    {src/adm2/windowmn.i}
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    /* **********************  Internal Procedures  *********************** */
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects login  _ADM-CREATE-OBJECTS
    PROCEDURE adm-create-objects :
    /*------------------------------------------------------------------------------
      Purpose:     Create handles for all SmartObjects used in this procedure.
                   After SmartObjects are initialized, then SmartLinks are added.
      Parameters:  <none>
    ------------------------------------------------------------------------------*/
    
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI login  _DEFAULT-DISABLE
    PROCEDURE disable_UI :
    /*------------------------------------------------------------------------------
      Purpose:     DISABLE the User Interface
      Parameters:  <none>
      Notes:       Here we clean-up the user-interface by deleting
                   dynamic widgets we have created and/or hide
                   frames.  This procedure is usually called when
                   we are ready to "clean-up" after running.
    ------------------------------------------------------------------------------*/
      /* Delete the WINDOW we created */
      IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(login)
      THEN DELETE WIDGET login.
      IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI login  _DEFAULT-ENABLE
    PROCEDURE enable_UI :
    /*------------------------------------------------------------------------------
      Purpose:     ENABLE the User Interface
      Parameters:  <none>
      Notes:       Here we display/view/enable the widgets in the
                   user-interface.  In addition, OPEN all queries
                   associated with each FRAME and BROWSE.
                   These statements here are based on the "Other
                   Settings" section of the widget Property Sheets.
    ------------------------------------------------------------------------------*/
      DISPLAY v-usuario v-senha
          WITH FRAME flogin IN WINDOW login.
      ENABLE RECT-1 RECT-2 v-usuario v-senha b-ok b-cancelar
          WITH FRAME flogin IN WINDOW login.
      {&OPEN-BROWSERS-IN-QUERY-flogin}
      VIEW login.
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE exitObject login
    PROCEDURE exitObject :
    /*------------------------------------------------------------------------------
      Purpose:  Window-specific override of this procedure which destroys
                its contents and itself.
        Notes: 
    ------------------------------------------------------------------------------*/
    
      APPLY "CLOSE":U TO THIS-PROCEDURE.
      RETURN.
    
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE p-confirmar login
    PROCEDURE p-confirmar :
    /*------------------------------------------------------------------------------
      Purpose:    
      Parameters:  <none>
      Notes:      
    ------------------------------------------------------------------------------*/
    /*procurando campos da tabela parametro para validação*/
    FIND FIRST tt-param NO-LOCK NO-ERROR.
         IF AVAIL tt-param THEN
             /*se o conteudo de parametro estiver vazio exibe a mensagem e não processa o resto*/
             IF ((tt-param.campo-verifica1 <> "") AND (tt-param.campo-verifica2 <> "")) THEN DO:
                      /*se a função validar retornar alguma informação a tarefa foi concluidda e o status será alterado*/
                     IF ( validar(tt-param.tabela, tt-param.campo-retorno,('WHERE ' + tt-param.tabela + '.' + tt-param.campo-verifica1 + ' = "' + v-usuario:SCREEN-VALUE IN FRAME flogin + '" AND ' +
                         tt-param.tabela + '.' + tt-param.campo-verifica2 + ' = "' + v-senha:SCREEN-VALUE IN FRAME flogin + '"')) <> ?) THEN DO:
                                assign
                                    tt-param.vcampo-retorno = validar(tt-param.tabela, tt-param.campo-retorno,('WHERE ' + tt-param.tabela + '.' + tt-param.campo-verifica1 + ' = "' + v-usuario:SCREEN-VALUE IN FRAME flogin + '" AND ' +
                         tt-param.tabela + '.' + tt-param.campo-verifica2 + ' = "' + v-senha:SCREEN-VALUE IN FRAME flogin + '"'))
                                    tt-param.vcampo-verifica1 = v-usuario:SCREEN-VALUE IN FRAME flogin
                                    tt-param.v-status = YES.
                                 apply "close" to this-procedure.
                            END.
                            ELSE DO:
                                 tt-param.v-status = NO.
                                  MESSAGE "Usuário / Senha Não Cadastrado!" VIEW-AS ALERT-BOX ERROR BUTTONS OK.
                            END.
                     END.
            ELSE
                MESSAGE "O(s) Parametro(s) de verificação deve ser diferente de Vazio!" VIEW-AS ALERT-BOX ERROR BUTTONS OK.
      
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    
  4. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Você testou o que falei?
  5. ueluis

    ueluis Membro Participativo

    opa, testei.
    coloquei o evento no botão sair do login porém ao clicar no botão nada acontece.
    inseri desta maneira:

    Código:
    apply "QUIT" to this-procedure.
  6. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    não é assim, só fazer isso:

    Código:
    QUIT.
    
    ueluis curtiu isso.

Compartilhe esta Página