Delphi - Evento OnClose do Form com Bug?
Olá, tinha um programa que estava funcionando ok no Delphi Berlin.
Apos atualizar para o Delphi Rio notei que o programa apresentou comportamento diferente.
O meu app é no Android e se o usuario clicasse no botao de VOLTAR ou SAIR do CELULAR
eu verifico se é pra sair ou pra continuar, dependendo da tela em que estou, achei que fosse
alguma falha minha, mas depois pra tirar da duvida fiz uma nova aplicação, sem nada,
só um form e esse codigo abaixo:
O que deveria acontecer é NADA, ou seja, se o usuario clicar no botao de VOLTAR ou SAIR no celular
o evento onclose é disparado e passando no codigo acima, era pra continuar o programa sem sair
Acontece que o programa é encerrado mesmo com o caNone, será um bug no delphi ?
.
Alguém ai com o Delphi Rio poderia testar isso pra confirmar?
E qual seria a solução?
Apos atualizar para o Delphi Rio notei que o programa apresentou comportamento diferente.
O meu app é no Android e se o usuario clicasse no botao de VOLTAR ou SAIR do CELULAR
eu verifico se é pra sair ou pra continuar, dependendo da tela em que estou, achei que fosse
alguma falha minha, mas depois pra tirar da duvida fiz uma nova aplicação, sem nada,
só um form e esse codigo abaixo:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := TCloseAction.caNone; end;
O que deveria acontecer é NADA, ou seja, se o usuario clicar no botao de VOLTAR ou SAIR no celular
o evento onclose é disparado e passando no codigo acima, era pra continuar o programa sem sair
Acontece que o programa é encerrado mesmo com o caNone, será um bug no delphi ?
.
Alguém ai com o Delphi Rio poderia testar isso pra confirmar?
E qual seria a solução?
Alberto
Curtidas 0
Respostas
Alberto
06/06/2020
Alguém ai pra ajudar ?
GOSTEI 0
Emerson Nascimento
06/06/2020
não sei se pode ajudar, porque nunca trabalhei com desenvolvimento mobile, mas tente no evento OnCloseQuery.
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose := False; end;
GOSTEI 0
Alberto
06/06/2020
Já tentei esse evento também, internamente ele passa no mesmo código do onclose.
Espero que alguém com a mesma versão do Delphi faça o teste pra ver ser ocorre o mesmo erro.
Espero que alguém com a mesma versão do Delphi faça o teste pra ver ser ocorre o mesmo erro.
GOSTEI 0
Alberto
06/06/2020
Alguém expert em Delphi pra testar ?
GOSTEI 0
Ricardo Araujo
06/06/2020
Eu tenho, poderia me falar com mais detalhe assim posso te ajudar ?
GOSTEI 0
Alberto
06/06/2020
Olá Ricardo.
Para testar siga os passos abaixo:
.
1) Criar uma nova aplicação Multi-Device Application no Delphi Rio 10.3.3
2) no Form1 crie o evento ONCLOSE do form
3) coloque o codigo no evento onclose conforme abaixo:
4)-Escolha um device android como TARGET (Eu testei com o meu celular android 7.1, você pode testar com o seu celular android, ou no emulador, porém não sei se o emulador iria se comportar da mesma maneira que o celular nesse caso)
5) compile a aplicação
6) com a aplicação rodando, toque no botão de SAIR ou VOLTAR do celular.
.
Se a aplicação permanecer executando, está tudo certo.
Se a aplicação sair, então está algo errado com o código do Delphi.
Para testar siga os passos abaixo:
.
1) Criar uma nova aplicação Multi-Device Application no Delphi Rio 10.3.3
2) no Form1 crie o evento ONCLOSE do form
3) coloque o codigo no evento onclose conforme abaixo:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := TCloseAction.caNone; end;
4)-Escolha um device android como TARGET (Eu testei com o meu celular android 7.1, você pode testar com o seu celular android, ou no emulador, porém não sei se o emulador iria se comportar da mesma maneira que o celular nesse caso)
5) compile a aplicação
6) com a aplicação rodando, toque no botão de SAIR ou VOLTAR do celular.
.
Se a aplicação permanecer executando, está tudo certo.
Se a aplicação sair, então está algo errado com o código do Delphi.
GOSTEI 0