Подправил вот так (чтобы работало в Delphi 10 Seattle):
procedure TFormMain.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
MessageDlg('Закрыть приложение?', TMsgDlgType.mtConfirmation,
[TMsgDlgBtn.mbYes,TMsgDlgBtn.mbNo], 0,
procedure(const AResult: TModalResult)
begin
Case AResult of
mrYes: FormMain.Close;
mrNo: Exit;
end;
end);
Key:=0;
end;
end;
end;
Работает нормально, только в диалоге запроса No стоит впереди. Как бы No и Yes поменять местами?
А еще лучше заменить на Да и Нет.