TChangeTabAction FMX XE7 - Embarcadero的想法是什么?

时间:2015-04-27 15:56:30

标签: 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 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设计师在这里想到的是什么,那么我可以按照他们的设计理念而不是试图解决它。

1 个答案:

答案 0 :(得分:1)

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