将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


然后

ChangeTab(tsNewTemplate, True); // slides left
// stuff
ChangeTab(tsLogin, True); // slides right


而且我仍在尝试找出如何在我的函数中添加Reverse = True功能!

问题是,每次调用ChangeTabAction1.ExecuteTarget(Self);时,ChangeTabAction1.Direction都会自动撤消! (切换)

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

我要它做的是

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


然后

ChangeTab(tsNewTemplate, True); // slides right
// stuff
ChangeTab(tsLogin, True); // slides right


我的Tabcontrol应用。比这个简单的3级示例要复杂得多。我希望能够控制按指令移位的方向。

通常,ChangeTabAction1.Direction指示器没有任何意义。您不能将其设置为“反向”,并且认为这与正常情况相反。 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.Reversed表示相反。

08-05 07:16