Oi, pessoal!
Precisei criar uma janela apartada do smartclient logado, ou seja, a tela é acionada a partir do login do smartclient e exibe uma serie informações para o usuário e fica em atualização o tempo todo, por isso precisa ficar aberta permitindo que o usuário continue trabalhando no módulo que estiver.
Essa tela possui o botão "fechar" que estou tentando utilizar a função padrão FINAL(). Como ela é um SmartClient, preciso que ela seja encerrada da forma correta, contudo, o sistema gera um error.log.
7.00.210324P-20230228 THREAD ERROR ([21740], Francisco, DESKTOP-HJ554EQ) 30/03/2023 23:49:30 Saída no final: Encerramento normal on FINAL(MSFINAL.PRW) 01/03/2023 10:31:37 line : 244
//Executo a chamada da tela dentro de um client abrindo outro client
local c_Program := "c:\TOTVS\P12\12.1.2210\bin\smartclient\smartclient.exe" as character
local c_Parametros := " -M -Q -P=u_tstTdialog -E=P12LGFSW" as character
local c_Ret as character //Nome do menu que será utilizado pelo sistema.
ShellExecute ("open",c_Program,c_Parametros,"",SW_SHOWMAXIMIZED)
//Codigo com as acoes dos botoes
oBtn1Exc := TButton():New( 188,002,"Marcar Todos",o_Dlg,{|| f_MarcaTodos("1") },050,012,,,,.T.,,"",,,,.F. )
oBtn2Exc := TButton():New( 188,054,"Desmarcar Todos",o_Dlg,{|| f_MarcaTodos("2") },050,012,,,,.T.,,"",,,,.F. )
oBtn3Exc := TButton():New( 188,116,"Cancelar",o_Dlg,{|| n_Opc:=1, o_Dlg:End() },050,012,,,,.T.,,"",,,,.F. )
oBtn4Exc := TButton():New( 188,178,"Aprovar",o_Dlg,{|| n_Opc:=2, o_Dlg:End() },050,012,,,,.T.,,"",,,,.F. )
oBtn4Exc := TButton():New( 188,230,"Rejeitar",o_Dlg,{|| n_Opc:=3, o_Dlg:End() },050,012,,,,.T.,,"",,,,.F. )
oTimer := TTimer():New(n_Tempo, {|| f_SelecionaOrcamentos(), oBrw1:oBrowse:Refresh() }, o_Dlg )
oTimer:Activate()
o_Dlg:Activate(,,,.T.)
if n_Opc == 1
//Cancelado
elseif n_Opc == 2
//Aprovado
else
//Rejeitado
endif
RESET ENVIRONMENT
BEGIN SEQUENCE
Final("Encerramento normal") //Utilizada para finalizar o sistema, essa função executa operações básicas que garantem a integridade dos dados ao finalizar o sistema, desmontando as transações, desbloqueando os semáforos e fechando as tabelas abertas.
END SEQUENCE
Por que sua função Final está dentro de um Begin Sequence?
— Daniel Mendes 31 de Mar de 2023A função Final finaliza a thread e tivemos situações que ela gerava uma exceção ao ser encerrada, mas isso foi corrigido via binário.
— Daniel Mendes 31 de Mar de 2023