Botão X do oDlg

Screenshot_1.png

Boa tarde senhores, Gostaria de saber como faço para atribuir uma função neste botao do oDlg, Quando eu clico nele agora ele está gerando sujeira. Como se ele estivesse usando algum dado perdido da memoria e está me retornando. Gostaria de fazer uma função sair descente para ele.

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Acredito que não exista uma forma de substituir a ação do botão fechar. Ele simplesmente executa o método End() da MsDialog, fechando a janela.

O que você pode fazer é inibir a exibição do botão fechar e criar um botão fechar customizado, podendo fazer algumas verificações antes de fechar a tela.

Exemplo:


Private oDlg

// o style DS_MODALFRAME inibe a exibição do botão X/fechar
Define MsDialog oDlg Title '' From 001, 001 To 140, 380 Pixel Style DS_MODALFRAME

    TButton():New(040, 075, 'Fechar', oDlg, { || FechaDialog() }, 040, 014, , , , .T., , '', , , , .F.)

    // impede o usuário de fechar a janela ao apertar o Esc
    oDlg:lEscClose := .F.

Activate MsDialog oDlg Centered

Dentro da função FechaDialog, chamado no botão Fechar, você pode criar sua lógica e então finalizar a tela.

Exemplo:


Static Function FechaDialog

    // crio minha lógica antes de fechar a janela

    // fecho a janela
    oDlg:End()

Return