【发布时间】:2020-12-21 22:59:59
【问题描述】:
这三天我一直在扫TTabControl的二维码,发现如下:
- 该控件将接受子控件,但会根据其所处的状态重定向它们,例如:
如果孩子是
TTabItem,它将把它分配给用作选项卡容器的FContent: TContent,否则如果孩子是特殊控件(TEffect, TAnimation ...),它将被添加到TTabControl,否则如果有是一个活动选项卡,孩子将被重定向到该选项卡,否则它将被重定向到FNoItemsContent: TContent不可见控件(不知道为什么!!!)。 - 当孩子被重定向到活动标签时,它将被重定向到标签的
FContent: TContent成员(在设计时会调整位置)。
这里重定向这个词的意思是将孩子分配给哪个父母。
所以Child.Parent := TabControl; 触发了上述操作,这就是执行此操作的方法。
procedure TTabControl.AddOrInsertObject(const AObject: TFmxObject; const Index: Integer = MaxInt);
让我感到困惑的是,以下是非存储控件,但它们是孩子设计和运行时的父母。
-
TTabItem.FContent。 -
TTabControl.FContent。 -
TTabControl.FNoItemContent。
TTabItem是存储的,所以在IDE中当你添加一个tab时(右键add new TabItem),你会在结构面板中看到TTabItems是tab控件的children,drop另一个控件您会看到它是活动选项卡的子项(TTabItem 而不是它的 FContent)。
您可以与控件进行交互。
我的问题
这个机制背后的想法是什么,如果我想从头开始怎么做?
我想要的是设计时功能。
【问题讨论】:
-
“这个机制背后的想法是什么” - 听起来你应该直接问 Embarcadero,因为他们就是这样设计的。
-
@RemyLebeau 我想我最终将不得不这样做,我在这里问这个的原因只是为了从知识渊博的人那里获得更快的答案。也许有人不得不做我在这里想做的事情。
标签: delphi tabcontrol tabcontainer