Идёт загрузка страницы...

htp://aptem.net.ru





Вложенные свойства

Для регистрации контейнерного класса в процедуре 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]