Вложенные свойства
Автор: Mike Scott (Mobius Ltd) |
- Почему программисты весят больше чем другие люди? - Потому, что в каждом килограмме у них 1024 грамма! |
Для регистрации контейнерного класса в процедуре Register вы должны вызвать RegisterPropertyEditor. Приблизительно так:
RegisterPropertyEditor( TypeInfo( TYourContainedClass ), TYourContainer, 'YourContainedPropery', TClassProperty ) ; |
Все это задокументировано в справке помощи по созданию компонентов. Первым всегда идет параметр TypeInfo() с контейнерным классом, затем сам контейнерный класс, затем имя контейнерного свойства, затем TClassProperty, который регистрирует расширение свойства класса.
А где взять реальный примерчик?
Посмотрите как это делаю я. Сохраните приведенный модуль с именем 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. |
Далее: Вывести информацию о возможных значениях свойств »»