Delphi World - Вложенные свойства
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Вложенные свойства

Автор: 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.

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования