Delphi / C++Builder で Android の「戻る」ボタンの動作を無効にする


Android のスマホでアプリの操作中、「戻る」ボタンの動作が作動してしまったことありませんか?
画面の下の方にある△のアレですよ!うっかり触れてアプリ終了とかになってしまうアレ!

ヘルプにもありますが、フォーム (TForm) のキーイベント (OnKeyDown または OnKeyUp) で戻るボタンの値 (vkHardwareBack = 137) を検知して、押されたキーを無効 (Key := 0 / Key = 0;)にします。

#個人的には OnKeyDown の方が腑に落ちる

サンプルコード

Delphi

// OnKeyDownイベントで検知する場合
procedure TForm1.FormKeyDown(Sender: TObject; var Key:Word; var KeyChar: Char;
 Shift: TShiftState);
begin
  if Key = vkHardwareBack then Key := 0;
end;

または

// OnKeyUpイベントで検知する場合
procedure TForm1.FormKeyUp(Sender: TObject; var Key:Word; var KeyChar: Char;
 Shift: TShiftState);
begin
  if Key = vkHardwareBack then Key := 0;
end;

C++Builder

// OnKeyDown イベントで検知する場合
void __fastcall TForm1::FormKeyDown(TObject *Sender, Word &Key, System::WideChar &KeyChar,
 TShiftState Shift)
{
  if (Key = vkHardwareBack) { Key = 0; }
}

または

// OnKeyUP イベントで検知する場合
void __fastcall TForm1::FormKeyUp(TObject *Sender, Word &Key, System::WideChar &KeyChar,
 TShiftState Shift)
{
  if (Key = vkHardwareBack) { Key = 0; }
}