Карта сайтаСсылкиКонтакты

Создание свойств класса

PDF Печать
Статьи

Следующий пример объявляет класс TMyClassProp, который содержит несколько полей, включая поле перечисляемого типа.

Примечания:

  • 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. 

По материалам http://delphi.3000.com


 

Добавить комментарий


Защитный код
Обновить