Ola, se usa FIVEWIN, veja este exemplo para saida do programa.
Se for em uma FUNCTION, poste-a para ver-mos onde pode estar o problema.
As vezes, um WHILE... ENDDO, pode causar grandes problemas, ou algo dentro do
DEFINE DIALOG... ACTIVATE DIALOG... Pegue o habito de usar o SYSREFRESH() dentro
dos WHILE... ENDDO.
DEFINE BUTTON oSaida RESOURCE "FECHAR", "FECHAR2" OF oBar ;
NOBORDER GROUP PROMPT "Saida" ;
MESSAGE "Sair do Programa" ;
ACTION( oSaida:Toggle(), ENCERRA( oWnd ), oSaida:GoUp() ) ;
TOOLTIP { "Encerrar WinOrcam - Finalizar", ;
"Encerrar o Programa Agora? ", 1, CLR_WHITE, CLR_HBLUE }
oSaida:oCursor := oHand
//-> Encerra o Programa
FUNCTION ENCERRA( oWnd )
LOCAL lRet, nKey := VK_RETURN, oMsgInter, oQuestao
LOCAL oDlg, oFontSay, IDCor, oSaida, oCancela, oGroup, aGrad
PUBLIC aArray, aResolucaoAtual
aGrad := { { 0.30, CLR_WHITE, CLR_WHITE },{ 0.50, CLR_WHITE, CLR_WHITE } }
DEFINE FONT oFontSay NAME "Ms Sans Serif" SIZE 0, -14 BOLD
DEFINE DIALOG oDlg RESOURCE "DLG_TERMINAR" GRADIENT aGrad
oDlg:lHelpIcon := .F.
REDEFINE BITMAP oQuestao ID 121 RESOURCE "F_QUESTAO2" OF oDlg TRANSPARENT
REDEFINE GROUP oGroup ID 501 OF oDlg FONT oFontSay COLOR CLR_HRED TRANSPARENT
REDEFINE SAY ID 401 OF oDlg COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFontSay TRANSPARENT
REDEFINE SAY ID 402 OF oDlg COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFontSay TRANSPARENT
REDEFINE SAY ID 403 OF oDlg COLORS CLR_HRED, CLR_WHITE UPDATE FONT oFontSay TRANSPARENT
REDEFINE BUTTON oSaida ID 301 OF oDlg ;
ACTION( lPermissao := .T., oDlg:End() ) CANCEL
oSaida:cTooltip :={ "Click no Botão Para Sair", ;
"Sair do Programa Agora? ", 1, CLR_WHITE, CLR_HBLUE }
REDEFINE BUTTON oCancela ID 302 OF oDlg ;
ACTION( lPermissao := .F., oDlg:End() ) CANCEL
oCancela:cTooltip :={ "Click no Botão Para Cancelar a Saida", ;
"Cancelar a Saida do Programa? ", 1, CLR_WHITE, CLR_HBLUE }
SET FONT OF oSaida TO oFontSay
SET FONT OF oCancela TO oFontSay
ACTIVATE DIALOG oDlg CENTERED
//-> PermissÆo Para Sair do Menu Principal
IF lPermissao //-> Se for o Botao de Saida... Pimba!
SETKEY( VK_F9, { | nKey | NIL } )
SETKEY( VK_F11, { | nKey | NIL } )
// LIBERA_TUDO() // FECHA O PROGRAMA NA MEMORIA DEFINITIVAMENTE
MsgRun( "FECHANDO O PROGRAMA E BANCOS DE DADOS.", ;
"Por Favor, Espere! Vou Desligar. ", ;
{ || WinExec( LIBERA_TUDO() ), 3 } )
RETURN NIL
ELSE
// oFontSay:End()
DeleteObject( oFontSay )
lRet := .F. //-> Volta ao Menu Principal
ENDIF
RETURN( lRet )
//--Fecha o Programa Definitivamente
FUNCTION LIBERA_TUDO()
DeleteObject( oFont )
DeleteObject( oBrush )
DbCommitAll()
DbUnLockAll()
DbCloseAll()
FreeResources()
Release All
SysRefresh()
HB_GCALL( .T. ) // limpar o lixo na memoria .F. so se tiver lixo
CLEAR MEMORY
IF FILE( "checkres.txt" )
FErase( "checkres.txt" )
ENDIF
CheckRes()
PostQuitMessage( 0 )
QUIT
RETURN NIL
Abs.