0

私のアプリケーションでは、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;
4

1 に答える 1