Для регистрации контейнерного класса в процедуре Register вы должны вызвать RegisterPropertyEditor. Приблизительно так:
RegisterPropertyEditor( TypeInfo( TYourContainedClass ), TYourContainer, 'YourContainedPropery', TClassProperty ) ; |
Все это задокументировано в справке помощи по созданию компонентов. Первым всегда идет параметр TypeInfo() с контейнерным классом, затем сам контейнерный класс, затем имя контейнерного свойства, затем TClassProperty, который регистрирует расширение свойства класса.
А где взять реальный примерчик?
Посмотрите как это делаю я. Сохраните приведенный модуль с именем CONTAIN.PAS и добавите его к вашей палитре.
------------------------CONTAIN.PAS--------------------------------
unit Contain;
interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TContainer = class( TComponent ) private FImage : TImage ; public constructor Create( AOwner : TComponent ) ; override ; published property Image : TImage read FImage write FImage ; end ; procedure Register; implementation uses DsgnIntf ; constructor TContainer.Create( AOwner : TComponent ) ; begin inherited Create( AOwner ) ; FImage := TImage.Create( Self ) ; end ; procedure Register; begin RegisterComponents('Samples', [TContainer]); RegisterPropertyEditor( TypeInfo( TImage ), TContainer, 'Image', TClassProperty ) ; end; end. |
----------------------------------------------------------------
Это все?
Mike Scott
Mobius Ltd.
[000414]