O Código abaixo é apenas para ilustrar o problema, não está assim no original, simplifiquei para ficar melhor a compreensão.
Meu problema consiste no uso de MODAL, o formulário principal chama outro de pesquisa através da tecla de atalho F2, ao tentar pressionar a tecla F2 pela segunda vez o programa perde o foco, aparentemente está travado, ao focar manualmente nada funciona, apenas o F2. Troquei para CHILD o formulário de pesquisa e o comportamento desaparece, porém, gostaria que fosse MODAL para que o formulário que chamou fique "congelado" até o retorno da pesquisa.
Obrigado,
André
Código: Selecionar todos
*----------------------------------------------------------------------------*
#Include "Minigui.ch"
*----------------------------------------------------------------------------*
Function Main()
Define Window frmTRA000 ;
At 0,0 ;
Width 435 ;
Height 470 ;
Title 'Cadastro de Transportadoras' ;
Main
@ 040,005 Frame fraTransportadora Width 410 Height 345 Caption "Transportadora"
@ 060,010 Label lblCodtrans Value "Codigo"
@ 100,010 Label lblTransp Value "Transportadora"
@ 200,010 Label lblExplica1 Value "Ao pressionar o F2 pela segunda vez o programa perde o foco." Width 100 Height 100
@ 200,200 Label lblExplica2 Value "Ao perder o foco da a impressão de travamento." Width 100 Height 100
@ 300,010 Label lblExplica3 Value "O comportamento é diferente ao pressionar o botão '...' de ação." Width 100 Height 100
@ 075,010 GetBox _CodTrans Width 060;
Height 21;
Value Space(004);
Picture "9999";
Tooltip '<F2>-Pesquisa';
Action fPesquisaTransportadora();
Valid fValidaTransportadora()
@ 115,010 GetBox _Transp Width 400;
Height 21;
Value Space(040);
Picture "@!"
Picture "@!"
End Window
On Key F2 Of frmTRA000 Action frmTRA000._CodTrans.Action
Center Window frmTRA000
Activate Window frmTRA000
Return(NIL)
*----------------------------------------------------------------------------*
Function fValidaTransportadora()
LOCAL lRet := .T.
If !Empty(frmTRA000._codtrans.Value)
If 1=1
MsgStop("Codigo invalido")
lRet := .F.
EndIf
EndIf
Return(lRet)
*----------------------------------------------------------------------------*
Function fPesquisaTransportadora()
fPesquisa()
SetProperty('frmTRA000','_CodTrans','value','0042')
frmTRA000.SetFocus()
frmTRA000._CodTrans.SetFocus()
Return(NIL)
*----------------------------------------------------------------------------*
Function fPesquisa()
Define Window frmPesquisa;
At 10,20;
Width 200;
Height 200;
Title "Teste";
MODAL
@ 80,50 BUTTON Button_1 ;
CAPTION 'Sair' ;
ACTION frmPesquisa.Release() ;
WIDTH 80 ;
HEIGHT 40
End Window
Center Window frmPesquisa
Activate Window frmPesquisa
Return(NIL)
*----------------------------------------------------------------------------*


