0

在我的应用程序中,我使用带有 3 个选项卡的 TTabControl:带有 3 个按钮的主选项卡 (TabItem1):Button1 将带我到 TabItem2,Button2 到 TabItem3,按钮 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

0

也许尝试这样的事情(未经测试):

procedure TfMain.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  if Key = vkHardwareBack then
  begin
    Key := 0;
    if TabControl.ActiveTab = TabItem1 then
    begin
      if MessageDlg('Are you sure you want to Exit?', TMsgDlgType.mtWarning, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0) = mrYes then
      begin
        MainActivitiy.Finish;
      end;
    end else
    begin
      ChangeTabAction1.Execute;
    end;
  end;
end;
于 2013-10-30T19:51:44.793 回答