Ayuda con ON RELEASE

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
edufloriv
Posts: 240
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
Location: PERU

Ayuda con ON RELEASE

Post by edufloriv »

Saludos amigos,

Tengo el siguiente código:

Code: Select all

DEFINE WINDOW Win_Orden ;
   AT 0 , 0 ;
   WIDTH 1020 HEIGHT 740 ;
   TITLE "ORDEN DE COMPRA" ;
   FONT "Arial" SIZE 9 ;
   CHILD ;
   NOMAXIMIZE ;
   NOAUTORELEASE ;
   ON INIT OrdenIniciar() ;
   ON RELEASE OrdenSalir()
   ....
   
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC OrdenSalir

   IF SELECT('ODTMP') > 0
      IF ODTMP->(RECCOUNT()) > 0 .AND. OH_MODO='Crear'
         IF MsgYesNo('¿ Desea cancelar la orden de compra actual ?')
            OrdenBorrarTemps()
	 ELSE
	    ??? Como cancelo el release ???
         ENDIF
      ENDIF
   ENDIF

RETURN
   
La idea es que, cuando el usuario intente salir del módulo, el sistema revise si tiene items agregados a la orden y si los hay le pregunte al usuario si realmente quiere cancelar la orden. El problema con mi código es que si el usuario decide regresar a la orden IGUAL LA VENTANA SE CIERRA porque el release ya esta en progreso.

Agradeceré su gentil ayuda amigos. Muy agradecido de antemano.


Att.

Eduardo Flores Rivas


LIMA - PERU
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Ayuda con ON RELEASE

Post by Pablo César »

Hola Eduardo,

Utilizás el ON INTERACTIVECLOSE main_form_oninteractiveclose() y no el ON EXIT (porque este ultimo siempre vá a salir, no cuestiona).

Code: Select all

Function main_form_oninteractiveclose()
Local lRet:=MsgYesNo("Estás seguro de salir del aplicativo ?","Atencion")

If lRet
   Close Databases
   Thiswindow.Release()
Endif
Return lRet
Esepro que te sea util. :)
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
edufloriv
Posts: 240
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
Location: PERU

Re: Ayuda con ON RELEASE

Post by edufloriv »

Pablo,

Genial amigo, excelente tu ayuda, funciona perfecto.


Mil gracias y un abrazo.

Eduardo Flores Rivas


LIMA - PERU
User avatar
edufloriv
Posts: 240
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
Location: PERU

Re: Ayuda con ON RELEASE

Post by edufloriv »

Amigo Pablo,

Se me ha presentado un problema, ahora funciona bien la salida condicional, pero por alguna razón, me deja la ventana DEFINIDA y no hace caso al release. Tengo el código así:

Code: Select all

IF IsWindowDefined(Win_Orden) = .T.
   MINIMIZE WINDOW Win_Orden
   RESTORE WINDOW Win_Orden
   RETURN
ENDIF

DEFINE WINDOW Win_Orden ;
   AT 0 , 0 ;
   WIDTH 1020 HEIGHT 740 ;
   TITLE "ORDEN DE COMPRA" ;
   FONT "Arial" SIZE 9 ;
   CHILD ;
   NOMAXIMIZE ;
   ON INTERACTIVECLOSE {||OrdenSalir()} ;
   ON INIT OrdenIniciar()

   ... más controles

END WINDOW

ACTIVATE WINDOW Win_Orden

IF IsWindowDefined(Win_Orden) = .T.
   SHOW WINDOW Win_Orden
   RELEASE WINDOW Win_Orden
ENDIF

RETURN

*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

FUNC OrdenSalir

LOCAL lSalir := .F.

   IF SELECT('ODTMP') > 0
      IF ODTMP->(RECCOUNT()) > 0 .AND. OH_MODO='Crear'
         IF MsgYesNo('¿ Desea cancelar la orden de compra actual ?')
            lSalir := .T.
            Win_Orden.Hide
            Win_Orden.Release
         ENDIF
      ELSE
         lSalir := .T.
         Win_Orden.Hide
         Win_Orden.Release
      ENDIF
   ELSE
      lSalir := .T.
      Win_Orden.Hide
      Win_Orden.Release
   ENDIF

RETURN( lSalir )

La primera vez que se accede a la ventana todo funciona perfecto, luego de salir e intentar ingresar de nuevo al módulo ya no se puede entrar porque, a pesar del release depues del ACTIVATE WINDOW, la ventana Win_Orden sigue figurando como definida.

Ayuda por favor. Gracias. Uso HMG 3.0.46

Eduardo Flores Rivas


LIMA - PERU
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Ayuda con ON RELEASE

Post by Javier Tovar »

Yo lo haría así:

Code: Select all

IF IsWindowDefined(Win_Orden) = .T.
   MINIMIZE WINDOW Win_Orden
   RESTORE WINDOW Win_Orden
   RETURN
ENDIF

DEFINE WINDOW Win_Orden ;
   AT 0 , 0 ;
   WIDTH 1020 HEIGHT 740 ;
   TITLE "ORDEN DE COMPRA" ;
   FONT "Arial" SIZE 9 ;
   CHILD ;
   NOMAXIMIZE ;
   ON INTERACTIVECLOSE {||OrdenSalir()} ;
   ON INIT OrdenIniciar()

   ... más controles

END WINDOW

ACTIVATE WINDOW Win_Orden

RETURN

*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

FUNC OrdenSalir

   IF SELECT('ODTMP') > 0
      IF ODTMP->(RECCOUNT()) > 0 .AND. OH_MODO='Crear'
         IF MsgYesNo('¿ Desea cancelar la orden de compra actual ?')
            Win_Orden.Release
         ENDIF
      ELSE
         Win_Orden.Release
      ENDIF
   ELSE
       Win_Orden.Release
   ENDIF

RETURN(.T. )
Saludos
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Ayuda con ON RELEASE

Post by Javier Tovar »

Hola Eduardo Flores Rivas,

Recuerda que ON INTERACTIVECLOSE, nos sirve para hacer una tarea especifica antes de salir o como lo indicas: preguntar si se guarda o no.... Y no es necesario que cierres la ventana, ya que lo va a hacer. ON INTERACTIVECLOSE solo nos sirve para INTERACTUAR ANTES DEL CLOSE!

Saludos
MICROVOLUTION
Posts: 146
Joined: Sat May 30, 2015 5:15 am

Re: Ayuda con ON RELEASE

Post by MICROVOLUTION »

PORTUGUÊS:
GENTE, boa noite!
dando continuidade aos trabalhos acima que já estão bem avançados.
Criei uma tela de LOGIN com o seguinte código:

Code: Select all

        // DEFINE WINDOW FLogin AT 0,0 WIDTH nPicWidth + 50 HEIGHT nPicHeight TITLE "SiCCoSV v4.01 - Tela de Entrada" BACKCOLOR aPicBackColor CHILD NOSYSMENU NOSIZE NOMINIMIZE NOMAXIMIZE ;
        DEFINE WINDOW FLogin AT 0,0 WIDTH nPicWidth + 50 HEIGHT nPicHeight TITLE "SiCCoSV v4.01 - Tela de Entrada" BACKCOLOR aPicBackColor NOSYSMENU NOSIZE NOMINIMIZE NOMAXIMIZE ;
            ON INTERACTIVECLOSE {||NIL};
            ON INIT SetCoords() ON MOUSEDRAG MoveForm() ON MOUSEMOVE SetCoords()
            ON KEY ESCAPE OF FLogin ACTION {||ENCERRA_LOGIN()}
            ON KEY ALT+F4 OF FLogin ACTION {||ENCERRA_LOGIN()}
            @  50,  82 LABEL   lblUserID  VALUE "Usuário:"  TRANSPARENT FONTCOLOR YELLOW BOLD AUTOSIZE
FLogin.txbPasswrd.SetFocus } 
            @  45, 140 TEXTBOX txbUserID  WIDTH 85 HEIGHT 21  FONTCOLOR BLUE BOLD NUMERIC INPUTMASK '999999' ON ENTER { || ConfirmUser()  };
               ON GOTFOCUS  FLogin.lblUserID.FontBold := .T. ;
               ON LOSTFOCUS FLogin.lblUserID.FontBold := .F. 
               
            @  80,  90 LABEL   lblPaswrd  VALUE "Senha:" TRANSPARENT FONTCOLOR YELLOW BOLD AUTOSIZE
            @  75, 140 TEXTBOX txbPasswrd WIDTH 85 HEIGHT 21 FONTCOLOR BLUE BOLD PASSWORD MAXLENGTH 06 ON ENTER { || ConfirmSenha() };
               ON GOTFOCUS  FLogin.lblPaswrd.FontBold := .T. ;
               ON LOSTFOCUS FLogin.lblPaswrd.FontBold := .F. 

            DEFINE TOOLBAR barrasenha OF FLogin BUTTONSIZE 200,40 FONT 'Arial' SIZE 08 FLAT BORDER BOTTOM
               BUTTON btnApply CAPTION '&Ok'      PICTURE BMPCONFIRMA ACTION {||ConfirmUserSenha()} TOOLTIP "Clique aqui para confirmar seu Usuário e Senha e entrar no SiCCoSV!" SEPARATOR 
               BUTTON cancela  CAPTION '&Cancela' PICTURE BMPCANCELA  ACTION {||ENCERRA_LOGIN()}    TOOLTIP "Cancela a entrada no SiCCoSV!"                                                   END TOOLBAR
        END WINDOW  // FLogin

        FLogin.Cursor := "DragCurs"
        FLogin.Center()
        FLogin.Activate()

   ELSE
        MsgStop( cPictFNm + " Faltado Arquivos de Imagens! O sistema será abortado !", "ERROR 8 - SiCCoSV" )
   ENDIF

RETURN // PERMITIU // CheckUser()     
Bom, a primeira linha está comentada, pois eis o problema.
Ela é semelhante à segunda, mas com 2 diferenças que testei e vc também pode fazer o teste:
1 - No lugar de ser CHILD não coloquei nada para que fosse STANDARD.
2 - Se colocar MODAL dá uma série de erros.

Bom, mas, se o problema fosse só esse estava tudo OK, mas, não o problema é bem maior.
Antes de fazer o login eu crio o FORM principal como MAIN sem o POPUP MENU e ITEMSOURCE/ITEMS. Coloco ele em HIDE e MINIMIZE (estou falando do formulário principal MAIN). Somente depois de uns 3 formulários e várias etapas que eu MAXIMIZO.
Então antes dessa etapa de maximização do FORM PRINCIPAL (WINDOW MAIN) uma delas é a criação da tela de SPLASH, depois o LOGIN depois a tela que verifica se o aplicativo é definitivo ou apenas demonstrativo, depois ainda a tela de configuração de dados com o usuário que efetuou o LOGIN.

Depois desses processos todos e fechamento de todas telas, eu dou um MAXIMIZE no formulário WINDOW MAIN (aqui chamado de F1.MAXIMIZE) é que vem o problema que comecei a expor através do código acima.

Não sei o que é, mas, o formulário do LOGIN abre novamente e ficam os 2 formulários em aberto, conforme imagem logo abaixo:
MAIN E LOGIN.JPG
MAIN E LOGIN.JPG (51.25 KiB) Viewed 3958 times
Como viram acima, tanto o MENU principal (FORM WINDOW MAIN) como o LOGIN (formulário CHILD ou não fica junto. E, se eu o fechar ele fecha todo o programa).
Já revisei todo o código e nos caminhos que percorre o sistema, através de uma coisa simples, que é: a cada função que o sistema entra e no final dela eu coloco o código:

Code: Select all

? 'início da função'
wait
? 'fim da função'
wait
Com o código acima eu DEBUGei todos os caminhos percorridos para tirar a dúvida se em algum momento eu chamo o formulário de LOGIN novamente.
Mas, percebi que não é isso. Então, imagino o seguinte:
O formulário login não está pegando o RELEASE (se é que esse é o comando/função para fechar definitivamente um formulário), mesmo ele sendo claro no sistema, pois quando se faz o login ele some da tela.
O código de fechamento do formulário LOGIN é:

Code: Select all

PROCEDURE ConfirmSenha()
    STATIC nAttempt := 0
    LOCAL n2Right, n2Left, nRepeat
    LOCAL nColumn, nStep
    LOCAL cUserID   := FLogin.txbUserID.Value,;
          cPassword := padr (alltrim (upper(FLogin.txbPasswrd.Value)),6), mPASSWORD := space (6)
          // padr (alltrim (upper(cPassWord)),6)
    if .not. fUSUA (cUserID)
      MsgStop ('Usuário Não Cadastrado. Tente Novamente','SiCCoSV')
      lConfirmed := .f.
      return lConfirmed
    endif
    mPASSWORD := padr (alltrim (upper(cPassWord)),6)
    PERMITIU  := CRIPTOGRAFA (mPASSWORD) == PASSWORD
    set key K_F4 to
    set cursor off
    if (PERMITIU) .and. (lastkey () <> K_ESC)
        COD_ACESSO := mCOD_USU := cUserID
        lConfirmed := .T.
        FLogin.HIde
        // FLogin.Release // substituí essa linha pela abaixo, por pensar que aqui era o problema.
        ThisWindow.Release
    ELSE
        MsgStop( "Senha Inválida. Tente Novamente!", "Acesso ao Sistema" )
    ENDIF
RETURN lConfirmed // ConfirmUser()
Então se os colegas observarem aparentemente está tudo correto, mas, como vimos o formulário LOGIN volta novamente.

O que os colegas podem me ajudar a esclarecer sobre o funcionamento de DEFINE WINDOW?

ENGLISH: (google tradutor/translate)
PEOPLE, good night!
continuing the work above already well advanced.
I created a LOGIN screen with the following code:

Code: Select all

 // DEFINE WINDOW AT FLogin 0.0 WIDTH nPicWidth + 50 HEIGHT nPicHeight TITLE "SiCCoSV v4.01 - Entry Screen" BACKCOLOR aPicBackColor CHILD NOSYSMENU NOSIZE NOMINIMIZE NOMAXIMIZE;
        DEFINE WINDOW AT FLogin 0.0 WIDTH nPicWidth + 50 HEIGHT nPicHeight TITLE "SiCCoSV v4.01 - Entry Screen" BACKCOLOR aPicBackColor NOSYSMENU NOSIZE NOMINIMIZE NOMAXIMIZE;
            ON INTERACTIVECLOSE || {} NIL;
            ON INIT SetCoords () ON MOUSEDRAG MoveForm () ON SetCoords mouseMove ()
            ON KEY ESCAPE OF ACTION FLogin {|| ENCERRA_LOGIN ()}
            ON KEY ALT + F4 OF ACTION FLogin {|| ENCERRA_LOGIN ()}
            @ 50, 82 LABEL lblUserID VALUE "User:" TRANSPARENT YELLOW fontcolor BOLD AUTOSIZE
FLogin.txbPasswrd.SetFocus}
            @ 45, 140 TEXTBOX txbUserID WIDTH 85 HEIGHT 21 fontcolor BLUE BOLD NUMERIC InputMask '999999' ON ENTER {|| ConfirmUser ()};
               ON GotFocus FLogin.lblUserID.FontBold: = .T. ;
               ON LOSTFOCUS FLogin.lblUserID.FontBold: = .F.
               
            @ 80, 90 LABEL lblPaswrd VALUE "Password:" TRANSPARENT YELLOW fontcolor BOLD AUTOSIZE
            @ 75, 140 TEXTBOX txbPasswrd WIDTH 85 HEIGHT 21 fontcolor BOLD BLUE ON ENTER PASSWORD MAXLENGTH 06 {|| ConfirmSenha ()};
               ON GotFocus FLogin.lblPaswrd.FontBold: = .T. ;
               ON LOSTFOCUS FLogin.lblPaswrd.FontBold: = .F.

            DEFINE TOOLBAR barrasenha OF FLogin ButtonSize 200.40 FONT Arial SIZE 08 FLAT BOTTOM BORDER
               CAPTION BUTTON btnApply '& Go' PICTURE BMPCONFIRMA ACTION {|| ConfirmUserSenha ()} TOOLTIP "Click here to confirm your User and Password and enter the SiCCoSV!" SEPARATOR
               CAPTION BUTTON cancels '& Cancel' PICTURE BMPCANCELA ACTION {|| ENCERRA_LOGIN ()} TOOLTIP "Cancel entering the SiCCoSV!" END TOOLBAR
        END WINDOW // FLogin

        FLogin.Cursor: = "DragCurs"
        FLogin.Center ()
        FLogin.Activate ()

   ELSE
        MsgStop (cPictFNm + "! Missed Images Files The system will be aborted!", "ERROR 8 - SiCCoSV")
   ENDIF

RETURN // // ALLOWED CheckUser () 
Well, the first line is commented out, because here's the problem.
It is similar to the second, but with two differences that have tested and you can also take the test:
1 - Instead of being CHILD did not put anything to it to be STANDARD.
2 - If you MODAL gives a series of errors.

Good, but if the problem was just that everything was OK, but not the problem is much greater.
Before logging in I create the main FORM as MAIN without the POPUP MENU and ItemSource / ITEMS. I put him in HIDE and MINIMIZE (I'm talking about the main form MAIN). Only after about three forms and several steps that I maximize.
So before that maximization step of the HOME FORM (WINDOW MAIN) one of them is the creation of the SPLASH screen, then LOGIN after the screen that verifies that the application is permanent or just demonstrative, even after the data configuration screen with the user who made the LOGIN.

After all these processes and closing of all screens, I give a MAXIMIZE the form WINDOW MAIN (here called F1.MAXIMIZE) is coming from the problem that I began to expose through the code above.

I do not know what it is, but the LOGIN form opens again and the two forms are open, as image below:
[attachment = 0] MAIN AND LOGIN.JPG [/attachment]
As seen above, both the main MENU (FORM WINDOW MAIN) as the LOGIN (CHILD form or does not get along. And if I close it closes the whole program).
Already I have reviewed all the code and paths running through the system via a simple thing, which is: every function that the system enters and at the end of it I put the code:

Code: Select all

? 'Beginning of the function'
wait
? 'End of the function'
wait [/ code]
With the above code I DEBUGei all paths taken to get the question if at any time I call the LOGIN form again.
But I realized that's not it. So imagine the following:
The login form is not picking up RELEASE (if this is the command / function to close definitely a form), even though he was clear in the system because when it logs in it off the screen.
The closing code LOGIN form is:
[Code] PROCEDURE ConfirmSenha ()
    STATIC nAttempt: = 0
    LOCAL n2Right, n2Left, nRepeat
    LOCAL nColumn, nStep
    CUserID LOCAL: = FLogin.txbUserID.Value ,;
          cPassword: = standard (alltrim (upper (FLogin.txbPasswrd.Value)), 6), mPASSWORD: = space (6)
          // Standard (alltrim (upper (cPassWord)), 6)
    if .not. fUSUA (cUserID)
      MsgStop ('Non Registered User. Try Again', 'SiCCoSV')
      lConfirmed: = .f.
      return lConfirmed
    endif
    mPASSWORD: = standard (alltrim (upper (cPassWord)), 6)
    ALLOWED: = encrypt (mPASSWORD) == PASSWORD
    set key to K_F4
    September cursor off
    if (ALLOWED) .and. (LastKey () <> K_ESC)
        COD_ACESSO: = mCOD_USU: = cUserID
        lConfirmed: = .T.
        FLogin.HIde
        // // FLogin.Release replace this line by below, thinking that was the problem here.
        ThisWindow.Release
    ELSE
        MsgStop ("Invalid Password. Try Again!", "System Access")
    ENDIF
RETURN lConfirmed // ConfirmUser () 
So if colleagues observe apparently everything is correct, but as we saw the LOGIN form back again.

What colleagues can help me clarify the operation of DEFINE WINDOW?

Code: Select all

ESPANISH/ESPANHOL (google tradutor/translate)
GENTE, buenas noches!
continuar el trabajo anterior ya muy avanzada.
He creado una pantalla de inicio de sesión con el siguiente código:

Code: Select all

 // Definir VENTANA EN FLogin 0.0 ANCHO nPicWidth + 50 ALTURA nPicHeight TÍTULO "v4.01 SiCCoSV - Pantalla de entrada" BACKCOLOR aPicBackColor NIÑO NOSYSMENU NOSIZE NOMINIMIZE NOMAXIMIZE;
        DEFINE WINDOW AT FLogin 0.0 ANCHO nPicWidth + 50 ALTURA nPicHeight TÍTULO "v4.01 SiCCoSV - Pantalla de entrada" BACKCOLOR aPicBackColor NOSYSMENU NOSIZE NOMINIMIZE NOMAXIMIZE;
            EN INTERACTIVECLOSE || {} NIL;
            EN SetCoords INIT () en MOUSEDRAG MoveForm () EN SetCoords mouseMove ()
            EN ESCAPE CLAVE DE ACCIÓN FLogin {|| ENCERRA_LOGIN ()}
            EN CLAVE ALT + F4 DE ACCIÓN FLogin {|| ENCERRA_LOGIN ()}
            @ 50, 82 ETIQUETA lblUserID VALOR "Usuario:" fontcolor AMARILLO AutoSize BOLD TRANSPARENTE
FLogin.txbPasswrd.SetFocus}
            @ 45, 140 TEXTBOX txbUserID ANCHO 85 ALTURA 21 fontcolor BLUE BOLD NUMÉRICO InputMask '999999' ON ENTER {|| ConfirmUser ()};
               EN GotFocus FLogin.lblUserID.FontBold: = .T. ;
               EN LOSTFOCUS FLogin.lblUserID.FontBold: = .F.
               
            @ 80, 90 ETIQUETA lblPaswrd VALOR "Contraseña:" fontcolor AMARILLO AutoSize BOLD TRANSPARENTE
            @ 75, 140 TEXTBOX txbPasswrd ANCHO 85 ALTURA 21 fontcolor BOLD AZUL EN INTRODUCIR CONTRASEÑA MAXLENGTH 06 {|| ConfirmSenha ()};
               EN GotFocus FLogin.lblPaswrd.FontBold: = .T. ;
               EN LOSTFOCUS FLogin.lblPaswrd.FontBold: = .F.

            DEFINE LA BARRA DE HERRAMIENTAS DE barrasenha FLogin ButtonSize 200,40 fuente Arial 08 TAMAÑO PLANO FRONTERA INFERIOR
               Botón de Título btnApply '& Go' IMAGEN BMPCONFIRMA ACCIÓN {|| ConfirmUserSenha ()} TOOLTIP "Haga clic aquí para confirmar su usuario y contraseña e introduzca la SiCCoSV!" SEPARADOR
               Botón de Título cancela '& Anular el estilo' IMAGEN BMPCANCELA ACCIÓN {|| ENCERRA_LOGIN ()} TOOLTIP "Cancelar entrar en el SiCCoSV!" FIN BARRA DE HERRAMIENTAS
        FIN DE LA VENTANA // FLogin

        FLogin.Cursor: = "DragCurs"
        FLogin.Center ()
        FLogin.Activate ()

   ELSE
        MsgStop (cPictFNm + "! Imágenes perdidas Archivos El sistema será abortado!", "ERROR 8 - SiCCoSV")
   TERMINARA SI

RETURN // // PERMITIDO CheckUser () 
Bueno, la primera línea está comentada, porque aquí está el problema.
Es similar a la segunda, pero con dos diferencias que han puesto a prueba y también se puede tomar la prueba:
1 - En lugar de ser NIÑO no puso nada para que sea STANDARD.
2 - Si MODAL da una serie de errores.

Bueno, pero si el problema era que todo estaba bien, pero no el problema es mucho mayor.
Antes de ingresar puedo crear el formulario principal como PRINCIPAL sin el menú emergente y ItemSource / ARTÍCULOS. Lo puse en esconder y minimizar (estoy hablando de la forma principal MAIN). Sólo después de cerca de tres formas y varios pasos que maximizar.
Así que antes de ese paso maximización del FORMULARIO PRINCIPAL (VENTANA PRINCIPAL) uno de ellos es la creación de la pantalla de inicio, a continuación, inicio de sesión tras la pantalla que verifica que la aplicación es permanente o simplemente demostrativo, incluso después de la pantalla de configuración de datos con la usuario que hizo el LOGIN.

Después de todos estos procesos y el cierre de todas las pantallas, le doy un MAXIMIZE forma VENTANA PRINCIPAL (aquí llamado F1.MAXIMIZE) viene de el problema que empecé a exponer a través del código de seguridad.

No sé lo que es, pero el formulario de acceso se abre otra vez y las dos formas están abiertos, como la imagen a continuación: [archivo adjunto = 0] PRINCIPAL Y LOGIN.JPG [/ archivo adjunto]
Como se ha visto anteriormente, tanto el menú principal (FORMULARIO VENTANA PRINCIPAL) como el Inicio de Sesión (forma NIÑO o no se llevan bien. Y si cierro cierra todo el programa).
Ya he revisado todo el código y los caminos que se ejecutan a través del sistema a través de una simple cosa, que es: todas las funciones que el sistema entra y al final de ella me puso el código:
[Código]? 'A partir de la función'
esperar
? 'Fin de la función'
espere [/ code]
Con el código anterior me DEBUGei todos los caminos tomados para conseguir la pregunta si en algún momento yo llamo el formulario de acceso nuevo.
Pero me di cuenta de que no es eso. Así que imagínate lo siguiente:
El formulario de inicio de sesión no está recogiendo LIBERACIÓN (si este es el comando / función para cerrar definitivamente una forma), a pesar de que era evidente en el sistema porque cuando se registra en ella fuera de la pantalla.
La forma de clave LOGIN cierre es:

Code: Select all

 PROCEDIMIENTO ConfirmSenha ()
    STATIC Nattempt: = 0
    LOCAL n2Right, n2Left, Nrepetir
    LOCAL nColumn, nPaso
    Cuserid LOCAL: = FLogin.txbUserID.Value,;
          cPassword: = estándar (alltrim (superior (FLogin.txbPasswrd.Value)), 6), mPASSWORD: = espacio (6)
          // Estándar (alltrim (superior (cPassword)), 6)
    si no. fUSUA (cuserid)
      MsgStop ('Usuario no registrado. Try Again', 'SiCCoSV')
      lConfirmed: = .f.
      volver lConfirmed
    terminara si
    mPASSWORD: = estándar (alltrim (superior (cPassword)), 6)
    ANIMALES: = cifrar (mPASSWORD) == CONTRASEÑA
    establecer clave para K_F4
    Septiembre cursor fuera
    si (ANIMALES) .y. (LastKey () <> K_ESC)
        COD_ACESSO: = mCOD_USU: = cuserid
        lConfirmed: = .T.
        FLogin.HIde
        // // FLogin.Release reemplazar esta línea por abajo, pensando que era el problema aquí.
        ThisWindow.Release
    ELSE
        MsgStop ("Contraseña no válida. Try Again!", "El acceso del sistema")
    TERMINARA SI
RETURN lConfirmed // ConfirmUser () 
Así que si sus colegas observan aparentemente todo está correcto, pero como vimos la forma de la conexión de nuevo.

Qué colegas me puede ayudar a aclarar el funcionamiento de DEFINE WINDOW?
Post Reply