2

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

代码片段...创建我将用于 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 定义,则该属性被认为是只读的。
那准确吗?这是制作只读属性的正确方法吗?

4

1 回答 1

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;
于 2014-10-24T16:26:17.267 回答