Boa noite Toledo.
Postando os códigos na sequência natural. Primeiro parte do MAIN(), nas linhas que enviam para os Form's:
Código: Selecionar todos
*
LOAD WINDOW Form_0
*
LOAD WINDOW Form_1
*
ACTIVATE WINDOW Form_1, Form_0
*
Segue a Fom_0.fmg:
Código: Selecionar todos
DEFINE WINDOW TEMPLATE ;
AT 0,0 ;
WIDTH 0 HEIGHT 0 ;
TITLE PROG_TIT ;
MAIN NOSHOW ;
NOTIFYICON "FILESYS2.ico" ;
NOTIFYTOOLTIP PROG_TIT ;
ON NOTIFYCLICK IF( IsWindowVisible( hWnd ), Form_1.Hide, Form_1.Show ) ;
DEFINE NOTIFY MENU OF Form_0
BuildMenu()
END MENU
END WINDOW
//// hMainWin:=WIN_N2P( Application.Handle )
Form_1.fmg:
Código: Selecionar todos
n_X1 := VAL( MASCARA1 ) && Posição e Medidas da janela Windows 'Form_1.fmg'.
n_Y1 := VAL( MASCARA2 )
n_Lrg := VAL( LINF )
n_Alt := VAL( LSUP )
*
DEFINE WINDOW TEMPLATE ;
AT n_X1, n_Y1 ;
WIDTH n_Lrg HEIGHT n_Alt;
TITLE PROG_TIT ;
CHILD ;
ON INTERACTIVECLOSE Sai_Sim_Nao()
@ 12,15 LABEL label_1 WIDTH n_Lrg-20 HEIGHT 20 ;
VALUE 'ConexÆo INATIVA' ;
FONT 'Times New Roman' SIZE 14 ;
FONTCOLOR BLUE
@ 40,15 LABEL label_2 WIDTH n_Lrg-20 HEIGHT 20 ;
VALUE '===============' ;
FONT 'Times New Roman' SIZE 14 ;
FONTCOLOR BLUE
ON KEY ALT+F4 ACTION { || Sai_Sim_Nao( ), Fecha_Connect() }
ON KEY ALT+F12 ACTION { || Sai_Sim_Nao( ), Fecha_Connect() }
ON KEY F5 ACTION { || Baixa_Prescr() }
DEFINE TIMER Timer_1 INTERVAL n_Interv_1 ACTION MudaLabel( l_Atualiza )
DEFINE CONTEXT MENU
*
BuildMenu()
*
END MENU
*
END WINDOW
*
FORM_1 := n_Width_ - 640
E finalizando, a Função Sair_Sim_Nao() completa:
Código: Selecionar todos
FUNCTION Sai_Sim_Nao( )
*
STATIC l_First := .T.
Local l_Ret := .T.
*
IF l_First = .T. && Verificar se o aplicativo está iniciando.
l_First := .F.
l_Ret := .F.
ELSEIF File( "Processando.Sim" ) && Verifica se o Importador está importando Prescrições.
l_Ret := .F.
MsgStop( "Texto 1", 'Texto 2' )
ELSE
DO EVENTS
l_Ret := MsgYesNo( "* Deseja encerrar o Programa *"+CRLF+CRLF+" BAIXAR PRESCRIیES ? ", "BAIXAR PRESCRIیES" )
IF l_Ret
Fecha_Connect()
ENDIF
ENDIF
*
RETURN( l_Ret )
Aqui observe que inseri a linha
"MsgStop( "Texto 1", 'Texto 2' )" somente para ter a certeza de que realmente o processamento NÃO passava onde deveria.
A Linha
"ELSEIF File( "Processando.Sim" ) && Verifica se o Importador está importando Prescrições." deve evitar que o aplicativo feche antes de terminar algum processo importante que não pode ser interrompido.
Como sugestão, se isto for possível, quando o Botão "X" fosse clicado, o processamento deveria retornar imediatamente. Uma pequena mensagem informando o ocorrido poderia ser apresentada, mas SEM interromper o processamento. O Encerramento do aplicativo só deve ser possível quando o valor da variável l_Ret for .T.
Acho que as informações acima ajudem.