Delphi - Evento OnClose do Form com Bug?

Delphi

06/06/2020

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

Curtidas 0

Respostas

Alberto

Alberto

06/06/2020

Alguém ai pra ajudar ?
GOSTEI 0
Emerson Nascimento

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

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.
GOSTEI 0
Alberto

Alberto

06/06/2020

Alguém expert em Delphi pra testar ?
GOSTEI 0
Ricardo Araujo

Ricardo Araujo

06/06/2020

Eu tenho, poderia me falar com mais detalhe assim posso te ajudar ?
GOSTEI 0
Alberto

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:

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
POSTAR