如何在类中创建类的属性?

时间:2014-10-24 15:55:38

标签: class delphi properties tobjectlist

对于Delphi XE6,我正在创建一个名为TAccountSearch的类。它具有少量属性和一类TObjectList。我的问题是我似乎无法将TObjectList类暴露为属性。

Code Snippet ...创建我将用于TObjectList的类

  type
  TSearchHits = class
  ID: Integer;
  Name : String;
  ...
  end;

现在创建一个包含TObjectList ...

实例的类
type
  TAccountSearch = class
  private
    zSearchPhrase: string;
    zList: TObjectList<TSearchHits>;
    ...
    property SearchPhrase: string read zSearchPhrase; 
    property MyList:TObjectList<TSearchHits> read TObjectList<TSearchHits>;
end;

TAccountSearch.SearchPhrase是一个有效的属性。 TAccountSearch.MyList不是....
从accountSearch类,如何将调用程序作为属性授予SearchHits?其次,如果我没有在PROPERTY行中包含WRITE定义,则该属性被视为只读 那是准确的吗?这是制作只读属性的正确方法吗?

1 个答案:

答案 0 :(得分:3)

您可以访问实例变量zList以获取对内部存储的访问权限:

property MyList: TObjectList<TSearchHits> read zList write zList;

如果您需要安装程序,请使用write SetMyList

您也可以使用getter函数来获取访问权限:

private
  function GetMyList: TObjectList<TSearchHits>;
published
  property MyList: TObjectList<TSearchHits> read GetMyList write SetMyList;

其中getter函数将被写为类似

function TAccountSearch.GetMyList: TObjectList<TSearchHits>;
begin
  Result := zList;
end;

实现只读属性的方法只是省略write部分。

property MyList: TObjectList<TSearchHits> read zList;