Como Evitar que um Formulário seja Fechado



  • Olá,

    Como faço para quando o Usuário for fechar um Formulário, eu faça uma verificação de que um registro esteja sendo Inserido ou Editado (ou outra verificação qualquer de inconsistência nos dados), e exiba um aviso e NÃO feche o Formulário.

    Consigo fazer a verificação no Evento "Ao Sair" do Formulário, mas não consigo exibir um aviso e nem impedir o Fechamento dele.
    Nesse evento não funciona o fluxo "Alerta Aguardando Ok", e nem o "Interromper Fluxo". Parece que quando esse evento é disparado, o Form já foi fechado. É isso? Se for, como faço então?

    Já consultei o Manual do Maker 3.8 e não menciona nenhum detalhe sobre o Evento "Ao Sair".

    Alguém sabe como fazer isso?
    Desde já agradeço.


  • Além da situação que descrevi antes, um dos motivos pra eu estar querendo evitar o fechamento do Form, é mais especificamente o seguinte:
    - Tenho um Form (1), com um Valor Total.
    - Nesse Form, tenho uma Grade (Form (2)), onde a inserção/edição dos dados é feita diretamente na grade.
    Preciso que a soma de todos os valores cadastrados na grade (todas as linhas) seja igual ao Valor Total do Form (1).
    Suponha que o Valor no Form (1) seja 100,00 (já está gravado).
    Quando o Usuário vai mexer na grade, eu coloco o Form (1) em Modo de Edição. Aí o Usuário altera os valores das linhas, e com isso a soma da grade dá 80,00.
    Quando ele vai salvar o Form (1), eu faço a verificação da diferença, aviso e continuo em Modo de Edição. Ok.

    O problema é quando o Usuário não clica no botão de Salvar e clica no "X" do Formulário.
    Deu pra entender?
    Fica o Form (1) com o valor de 100,00 e dos registros da grade somando 80,00. E eles tem que ser SEMPRE iguais.

    Como evito que isso aconteça?

    Obs.: eu não posso alterar automaticamente o valor do Form 1... só posso avisar da diferença, e o Usuário é que terá que ou alterar o valor do Form 1 ou alterar os registros na grade, até que fiquem iguais.


  • Evitar que o formulário seja fechado é meio que uma ação complicada pois existem N formas de fechar o formulário. Seja através de eventos, teclas de atalho ou até mesmo encerrar o processo.

    Já experimentou colocar o formulário numa moldura?


  • Obrigado por responder.

    Mas não sei se entendi.
    Mas se eu colocá-lo numa moldura, essa moldura estará em um Form, certo?
    E se o usuário fechar esse Form onde está a moldura, enquanto estiver editando o Form da moldura, vou cair na mesma situação.


  • Sim.

    Conforme falei, evitar que o usuário feche a página é algo complicado pois o mesmo pode encerrar a aba por exemplo, matar o processo entre outros.

    Experimenta colocar um evento Ao Sair e neste evento retornar false no fim do fluxo.


  • Olá Ronélio,

    No evento Ao Sair, retornar false no fim do fluxo não faz nada.

    Obs.: numa empresa que conheço, eles utilizam um sistema feito em Java. Quando o usuário clica no botão X do Formulário, é exibida uma pergunta se ele realmente deseja sair, e que pode perder informações saindo daquela forma. Se o Sistema estiver rodando numa Aba do Chrome, e clicar no X da Aba, o mesmo aviso/pergunta é exibido. E clicando no botão cancelar, não fecha o Sistema e volta para onde estava.

    É isso que preciso, e não consigo implementar no Maker.

    No Maker, no evento Ao Sair, não exibe nenhum aviso, e nem evita que saia. Deve ser porque esse evento seja disparado "Após" Sair.
    Se for isso, então deveria existir um evento "Antes de Sair", sei lá?!?!, para que pudéssemos fazer algumas verificações quando necessário.

Log in to reply