Я создал компонент, похожий на PageControl, полученный из Tcustomcontrol, в котором размещаются дочерние табулированные таблицы, полученные из TcustomPanel.
Табличные листы создаются управляющим элементом pagecontrol с помощью метода новой страницы или путем создания новой вкладки и установки ее свойства PageControl., почти так же, как стандартный pagecontrol.
Я создал редактор свойств для Pagecontrol с глаголом «Добавить страницу».
Поскольку таблица не находится на палитре компонентов, я создалзапись RegisterClass в коде конструктора.
Все это работает нормально, и я мог создать дочерние таблицы и даже выбрать их в конструкторе и установить свойства.
Проблема в том, что новые страницы имеютимя не отображается и отображается как «Безымянный» в инспекторе объектов и не отображается на древовидной диаграмме структуры формы.
После некоторого поиска я нашел пример Stackoverflow, который показал, что
RegisterNoIcon ([Myclass]) необходимо добавить вместе с registerClass.
Я сделал это, и теперь компонент отображается в дереве форм, но как общий «Компонент [14]», а потомок по-прежнему отображается как «безымянный» в инспекторе объектов.
Очевидно, что в Integrated Pagecontrol / tabsheet есть какой-то дополнительный соус, который правильно регистрирует компонент в конструкторе, но я изо всех сил пытаюсь выяснить, что это такое.
В настоящее время регистрация свойства выглядит как
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;
В качестве теста в редакторе свойств я попытался добавить стандартную кнопку в пользовательский элемент управления с тем же результатом.
Любые идеи?