私のアプリケーションでは、3 つのタブを持つ TTabControl を使用します。3 つのボタンを持つメイン タブ (TabItem1): Button1 は TabItem2 に、Button2 は TabItem3 に、Button 3 は TabItem3 に移動します。
FormKeyUp イベントを処理してナビゲーションを制御し、次のことを行います。
押されたキーが vkHardwareBack の場合、ActiveTab が TabItem1 の場合、ユーザーがアプリケーションを終了するかどうかを尋ねるメッセージが表示されます。答えが「はい」の場合、アプリケーションを閉じます。そうでない場合は何も起こりません。この部分は問題なく動いています!
ただし、ActiveTab が TabItem2 または TabItem3 の場合は、プロパティを指定して TTabChangeItem 標準アクションを起動して、アプリケーションをメイン タブ (TabItem1) に戻す必要があります。
- タブ: TabItem1
- 方向: tdReversed
- トランザクション: ttSlide
しかし、これは起こっていません。ActiveTab が TabItem2 または TabItem3 のときにユーザーが vkHardwareBack を押すと、アプリケーションはバックグラウンドになり、ホーム画面が表示されます。
私は何が間違っているのですか?
FormKeyUp 手順は次のとおりです。
procedure TfMain.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if Key = vkHardwareBack then
if TabControl.ActiveTab = TabItem1 then
if MessageDlg('Are you sure you want to Exit?', TMsgDlgType.mtWarning,
[TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0) = mrYes then
MainActivitiy.finish
else
ChangeTabAction1.Execute; // I tried here also: TabControl.ActiveTab := TabItem2; but still the same results
end;