Boa tarde!
Estou com uma dúvida quanto ao uso de alertas (MsgInfo, MsgAlert, etc) em programas que não são chamadas dentro do SIGAADV/Protheus.
Estou montando uma rotina que é chamada diretamente pelo SmartClient, essa rotina possui algumas telas onde o usuário pode fazer operações sem logar no sistema (usando apenas o RpcSetEnv). Mas percebi que não estou conseguindo realizar a chamada de nenhuma mensagem de alerta. Ao invés de exibir a mensagem na tela, a mesma é impressa no console.
Tentei criar uma TWindow, mas mesmo assim as mensagens não são exibidas.
Existe alguma forma de forçar a exibição e/ou existe alguma função que exiba a mensagem mesmo estando fora da interface padrão do sistema? A única que consegui fazer funcionar foi a MsgYesNo.
Grato pela atenção.
Giordano,
A função RpcSetEnv
foi criada para trabalhar sem interface, por conta disso, diversos componentes deixam de ser exibidos, pois ao chamar essa função o ambiente compreender que será executado em uma thread sem interface.
Verifique a possibilidade de incluir essa rotina no menu, uma sugestão seria utilizar o SIGAESP.
Uma pergunta muito semelhante foi feita há pouco tempo: https://forum.totvs.io/t/funcao-apmsgalert-nao-exibe-para-o-usuario/16522
Já tentou o uso da função Help() ? Talvez ela possa funcionar.
Quando executo programas por fora do SIGAADV, principalmente para fazer testes, uso a função MessageBox
.
Mesmo executando por fora com essa função funciona.
https://tdn.totvs.com/display/tec/MessageBox
Obrigado pelo retorno Rodrigo, tenho uma dúvida sobre qual Include é usado para que não use Defines em casa fonte.
Opa ! Fico feliz em ajudar ! Tenho rotinas usando RWMAKE.CH, PROTHEUS.CH e TOTVS.CH. Em todos os casos funciona.