Delphi - Evento OnClose do Form com Bug?

06/06/2020

0

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:

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

Alberto

Responder

Posts

09/06/2020

Alberto

Alguém ai pra ajudar ?
Responder

09/06/2020

Emerson Nascimento

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;
Responder

10/06/2020

Alberto

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.
Responder

11/06/2020

Alberto

Alguém expert em Delphi pra testar ?
Responder

12/06/2020

Ricardo Araujo

Eu tenho, poderia me falar com mais detalhe assim posso te ajudar ?
Responder

13/06/2020

Alberto

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:

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.

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar