ApMsgYesNo
Dialogo de confirmacao Sim/Nao. A familia ApMsg* funciona em rotina batch, web e desktop (versao moderna ApiAware).
Assinatura: ApMsgYesNo(cMsg, cTitulo) -> lSim
Retorna: Logical
Familia ApMsg* sao dialogos modais ApiAware — funcionam em rotina batch, web e desktop. Os antigos (MsgYesNo, Aviso) so funcionam em interface grafica e quebram em job/web.
Familia completa
ApMsgYesNo(cMsg, cTitulo) // confirma Sim/Nao -> .T./.F.
MsgInfo(cMsg, cTitulo) // info simples (OK)
MsgStop(cMsg, cTitulo) // erro grave (X vermelho)
MsgAlert(cMsg, cTitulo) // alerta (triangulo amarelo)Exemplo
If ApMsgYesNo("Confirma a inclusao do pedido?", "Atencao")
// usuario clicou Sim
MsgInfo("Pedido incluido com sucesso", "Sucesso")
Else
// usuario clicou Nao ou fechou
EndIf
// Erro fatal:
If nValor <= 0
MsgStop("Valor deve ser positivo", "Erro de validacao")
Return .F.
EndIfPor que usar ApMsg* em vez de Msg*
Imagine que sua User Function e chamada via:
- Tela do Protheus (desktop) — ambos funcionam
- JOB batch/scheduler —
MsgYesNotrava esperando clique inexistente - WebService REST/SOAP — idem
- WebApp browser —
ApMsgYesNorenderiza corretamente
Regra simples: sempre use ApMsg* em codigo novo, mesmo que parece overkill. Custa nada.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cMensagem | Character | sim | Texto da pergunta |
cTitulo | Character | não | Titulo da janela (default 'Atencao') |
Exemplos
Confirmacao antes de gravar
If ApMsgYesNo("Confirma?", "Atencao")
// grava
EndIf