Usar função AxAltera a partir de um MSDIALOG

Olá pessoal, gostaria de saber se alguém tem um exemplo de uso da função AxAltera com um MSDIALOG. Estou usando um MSDIALOG que tem um botão "editar" que chama uma função para alterar um registro de uma tabela customizada com a AxAltera. Tem um detalhe estranho que percebi: após confirmar a alteração do registro com a AxAltera e voltar para a tela do MSDIALOG, ao clicar para sair do Dialog (botão ok), o mesmo é fechado mas logo em seguida a User Function principal é chamada novamente automaticamente e executa tudo novamente. Isso só ocorre quando eu confirmo a alteração com a AxAltera.

msdialog.PNG AxAltera.PNG

Segue o trecho do código que usa a AxAltera:

// Botões do MSDIALOG

@ 004, 300 BUTTON oButton1 PROMPT "OK" SIZE 037, 012 OF oPanel3 ACTION oDlg:End() PIXEL
@ 004, 340 BUTTON oButton1 PROMPT "Editar" SIZE 037, 012 OF oPanel3 ACTION Editar() PIXEL
@ 004, 380 BUTTON oButton1 PROMPT "Incluir" SIZE 037, 012 OF oPanel3 ACTION Incluir() PIXEL
@ 004, 420 BUTTON oButton1 PROMPT "Desativar" SIZE 037, 012 OF oPanel3 ACTION Desativa() PIXEL

// Função para alteração do registro

Static Function Editar()

    Local _aArea := GetArea() 
    Local nOpcao as numeric

    DbSelectArea("ZV9")
    ZV9->(DbSetOrder(1))

    if MsSeek(xFilial("ZV9") + aWBrowse2[oWBrowse2:nAt, 6] + aWBrowse2[oWBrowse2:nAt, 7] + aWBrowse2[oWBrowse2:nAt, 8]) 
        // Chama a tela de alteração
        nOpcao := AxAltera('ZV9', ZV9->(RecNo()), 4)

        if nOpcao == 1
            FWAlertSuccess("Editado com sucesso", "Sucesso")
        else
            FWAlertWarning("Endereço não editado", "Atenção")
        endif
    endif

    ZV9->(DbCloseArea())
    RESTAREA(_aArea)    

Return

Depois de realizar a alteração, ao clicar no botão ok o MSDIALOG fecha, porém a função principal é executada sozinha e monta o MSDIALOG novamente.

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags advpl ou faça a sua própria pergunta.