Delphi TChangeTabAction FMX XE7-Embarcadero当时在想什么?

Delphi TChangeTabAction FMX XE7-Embarcadero当时在想什么?,delphi,tabcontrol,firemonkey,delphi-xe7,actionlist,Delphi,Tabcontrol,Firemonkey,Delphi Xe7,Actionlist,将TChangeTabAction的标准操作添加到我的操作列表后, 我编写了这样一个函数: procedure TfrmMain.ChangeTab(TargetTab: TTabItem; Reverse: Boolean = False); begin ChangeTabAction1.Tab := TargetTab; ChangeTabAction1.ExecuteTarget(Self); end; ChangeTab(tsNewTemplate) // slides le

将TChangeTabAction的标准操作添加到我的操作列表后, 我编写了这样一个函数:

procedure TfrmMain.ChangeTab(TargetTab: TTabItem; Reverse: Boolean = False);
begin
  ChangeTabAction1.Tab := TargetTab;
  ChangeTabAction1.ExecuteTarget(Self);
end;
 ChangeTab(tsNewTemplate) // slides left
 // stuff
 ChangeTab(tsLogin); // slides right
我这样称呼它:

procedure TfrmMain.ChangeTab(TargetTab: TTabItem; Reverse: Boolean = False);
begin
  ChangeTabAction1.Tab := TargetTab;
  ChangeTabAction1.ExecuteTarget(Self);
end;
 ChangeTab(tsNewTemplate) // slides left
 // stuff
 ChangeTab(tsLogin); // slides right
后来

ChangeTab(tsNewTemplate, True); // slides left
// stuff
ChangeTab(tsLogin, True); // slides right
ChangeTab(tsNewTemplate, True); // slides right
// stuff
ChangeTab(tsLogin, True); // slides right
我仍在试图找出如何将Reverse=True功能添加到我的函数中

问题是,每次调用
ChangeTabAction1.ExecuteTarget(Self)
,则
更改选项卡操作1.方向
会自动反转!(切换)

因此,当选项卡从tsStartUp更改为tsNewTemplate时,它会向左移动,然后向右移动,然后向左和向右移动,依此类推

我想要它做的是

ChangeTab(tsNewTemplate) // slides left
// stuff
 ChangeTab(tsLogin); // slides left
后来

ChangeTab(tsNewTemplate, True); // slides left
// stuff
ChangeTab(tsLogin, True); // slides right
ChangeTab(tsNewTemplate, True); // slides right
// stuff
ChangeTab(tsLogin, True); // slides right
我的Tabcontrol应用程序。比这个简单的3级示例要复杂得多。我希望能够根据命令控制换档方向

方向指示灯在通常意义上没有任何意义。你不能将其设置为反向,然后认为这意味着与正常相反。反转在
executetarget
之后立即变为正常,反之亦然

procedure TfrmMain.ChangeTab(TargetTab: TTabItem; Reverse: Boolean = False);
begin
    // This keeps the slide direction going the same way
    // It cancels out the automatic reversal of direction
    if ChangeTabAction1.Direction = TTabTransitionDirection.Normal then
      ChangeTabAction1.Direction := TTabTransitionDirection.Reversed
    else
      ChangeTabAction1.Direction := TTabTransitionDirection.Normal; 

也许,如果有人能告诉我Embarcadero的设计师们是怎么想的,然后我就可以遵循他们的设计思想,而不是试图去解决它。

TTabTransitionDirection.Normal意味着对索引较低的选项卡的更改是通过从左到右的转换来完成的,而对索引较高的选项卡的更改是通过从右到左的转换来完成的。TTabTransitionDirection。反转的意思是相反的。

我刚刚用XE8测试过,无法重现这种行为。如果新的TabIndex小于当前值,则转换为从左向右滑动,反之亦然。禁忌。方向永远不会被触及。此时无法使用XE7进行检查。JFTR,TTabTransitionDirection。正常表示索引较低的选项卡更改为具有从左到右的转换,索引较高的选项卡更改为具有从右到左的转换。所以,只有当你不想要这种行为时,你才应该改变方向。谢谢你!在这个应用程序上开发了2个月后,使用过的标签页(有许多未使用的标签页,计划删除)的顺序与显示的顺序不同!解决方案是使用PageControl Items编辑器对选项卡进行重新排序。在此之后,转换的行为与您预测的一样。如果可以的话,我会投你一票。看来我的评论符合回答的条件,那么。