将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设计师在这里想到的是什么,那么我可以按照他们的设计理念而不是试图解决它。
答案 0 :(得分:1)
TTabTransitionDirection.Normal意味着对具有较低索引的选项卡的更改是通过从左到右的转换完成的,而具有较高索引的选项卡的更改是通过从右到左的转换完成的。 TTabTransitionDirection.Reversed意味着反过来。