Создание свойств класса
Примечания:
- PropertyObject - должен иметь тип TPersistant или потомка класса TPersistant.
- Нужно создать событие этого TMyClassProp в Create компонента.
unit SubClass; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type { Сначала Создадим перечислимый список элементов затем создадим и установим эти элементы } TEnumList = (Mom, Dad, Sibling, Sister, Brother); TEnum = set of TEnumList; { Есть Class Object, которое мы хотим использовать как свойство нашего Component. Он имеет 4 свойства, Boolean, Word, String и перечислимый тип. } TMyClassProp = class(TPersistent) FBool: Boolean; FWord: Word; FString: String; FEnum: TEnum; published property HaveCar: Boolean read FBool Write FBool; property Age: Word read FWord write FWord; property Name: String read FString write FString; property Relation: TEnum read FEnum write FEnum; end; // TMyClassProp { Теперь создадим компонент, который будет содержать свойство типа TMyClassProp.} TMyComponent = class(TComponent) FEnum: TEnum; { Перечислимый тип, только для забавы} FSubClass: TMyClassProp; { Свойство Class, которое мы хотим } public constructor Create(AOwner: TComponent); override; destructor Destroy; override; published property Relation: TEnum read FEnum write FEnum; property Relative: TMyClassProp read FSubClass write FSubClass; { Published declarations } end; procedure Register; implementation { Override Create, для создания экземпляра свойства Class. Это требуется. } constructor TMyComponent.Create(AOwner: TComponent); begin inherited; FSubClass := TMyClassProp.Create; end; { Override Destroy для очистки. } destructor TMyComponent.Destroy; begin FSubClass.Free; inherited; end; procedure Register; begin RegisterComponents('Samples', [TMyComponent]); end; end.
Комментарии