选项卡页由宿主pagecontrol通过newpage方法创建,或者通过创建新的选项卡页并设置其pagecontrol属性来创建,与标准pagecontrol几乎相同。
我使用“添加页面”动词为Pagecontrol创建了属性编辑器。
由于Tabsheet不在组件托盘上,所以我在设计器代码中创建了RegisterClass条目。
这一切正常,我可以创建子选项卡,甚至在设计器中选择它们并设置属性。
经过一些搜索,我在Stackoverflow上找到了一个示例,它显示
RegisterNoIcon([Myclass])需要与registerClass一起添加。
我这样做了,组件现在显示在表单树上,但作为通用的“组件[14]”,子组件在对象检查器中仍然显示为“未命名”。
财产登记目前看起来像
procedure Register;
begin
RegisterComponents('My Page Control', [TMyPageControl,TMytitlebar,TMyTabset]);
RegisterComponentEditor (TMypageControl, TMyCompEditor);
RegisterComponentEditor (TMyTabSet, TMyTabEditor);
RegisterClass(TMytabSheet);
RegisterNoIcon([TMytabSheet]);
end;
编辑代码是
procedure TMyCompEditor.ExecuteVerb(Index: Integer);
var ts:MyTabsheet;
begin
inherited;
case Index of
0: with Component as TMyPageControl do
begin
Ts:=TmyTabsheet.Create(Owner);
Ts.Pagecontrol:=(Component as TMyPageControl);
end;
end;
end;
作为在属性编辑器中的测试,我尝试向自定义控件添加一个标准按钮,结果相同。
有什么想法吗?