该类TTabSheet
本身没有任何子控件,这就是您看不到任何东西的原因。您必须实例化每个单独的控件并复制它们的数据。
一种方法是使用TStream.WriteComponent()
andTStream.ReadComponent()
方法将源保存TTabSheet
到临时 DFM 中,然后将其加载到新的TTabSheet
中,例如:
TMemoryStream *Strm = new TMemoryStream;
Strm->WriteComponent(SourceTabSheet);
Strm->Position = 0;
TTabSheet *NewTabSheet = new TTabSheet(pageControlMain);
NewTabSheet->PageControl = pageControlMain;
Strm->ReadComponent(NewTabSheet);
pageControlMain->ActivePage = NewTabSheet;
delete Strm;
另一种选择是在设计时将组件放置到TFrame
-derived 类中,然后在运行时创建该类的实例并将其放置到 each 上TTabSheet
,让它为您处理控件,例如:
TTabSheet *NewTabSheet = new TTabSheet(pageControlMain);
NewTabSheet->PageControl = pageControlMain;
TMyFrame *NewFrame = new TMyFrame(NewTabSheet);
NewFrame->Parent = NewTabSheet;
pageControlMain->ActivePage = NewTabSheet;