Perla, parte de este gran equipo, nos hizo el favor de crear esta reseña ya que conoce muy bien este tema.
Solución:
en el formulario OnKey...
eventos, el Key
el parámetro es vkHardwareBack
en Android Por ejemplo:
uses
FMX.Platform, FMX.VirtualKeyboard;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
var
FService : IFMXVirtualKeyboardService;
begin
if Key = vkHardwareBack then
begin
TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));
if (FService <> nil) and (vksVisible in FService.VirtualKeyBoardState) then
begin
// Back button pressed, keyboard visible, so do nothing...
end else
begin
// Back button pressed, keyboard not visible or not supported on this platform, lets exit the app...
if MessageDlg('Exit Application?', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbOK, TMsgDlgBtn.mbCancel], -1) = mrOK then
begin
// Exit application here...
end else
begin
// They changed their mind, so ignore the Back button press...
Key := 0;
end;
end;
end
...
end;
Para futuras referencias a cualquiera que intente encontrarle sentido a esto…
if Key = vkHardwareBack then
begin
// your code here
key := 0;
end;
El key := 0; es el secreto para evitar que la aplicación se cierre..
Esto va en el evento OnKeyUp de formularios
Aquí hay un código actualizado para la respuesta de Remy (funciona con Seattle):
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
var
FService : IFMXVirtualKeyboardService;
begin
if Key = vkHardwareBack then
begin
TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));
if (FService <> nil) and (TVirtualKeyboardState.Visible in FService.VirtualKeyBoardState) then
begin
// Back button pressed, keyboard visible, so do nothing...
end else
begin
Key := 0;
// Back button pressed, keyboard not visible or not supported on this platform, lets exit the app...
MessageDlg('Exit Application?', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbOK, TMsgDlgBtn.mbCancel], -1, OnCloseDialog);
end;
end;
end;
procedure TForm1.OnCloseDialog(Sender: TObject; const AResult: TModalResult);
begin
if AResult = mrOK then
Close;
end;
Aquí puedes ver las reseñas y valoraciones de los lectores
Tienes la opción de estimular nuestra labor mostrando un comentario o dejando una valoración te damos la bienvenida.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)