2014-10-24 2 views
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 как свойство? Во-вторых, если я не включаю определение WRITE в строку PROPERTY, свойство считается только для чтения.
Насколько это точно? Это правильный способ создания свойств только для чтения?

+2

'свойство MyList: TObjectList чтения zList писать zList;' (или 'написать SetzList' если вам нужна процедура сеттер). –

+0

Это было ... представить как ответ, и я буду считать это. Что касается второго вопроса, то это правильный способ создания свойства только для чтения? – user1009073

+0

Я накрыл их обоих в своем ответе. –

ответ

3

Вы получаете доступ к переменной экземпляра zList для того, чтобы получить доступ к внутренней памяти:

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

Используйте write SetMyList, если вам понадобится процедура сеттера.

Вы можете использовать функцию геттера, а также для получения доступа:

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

где функция добытчика будет написано что-то вроде

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

пути к реализации только для чтения свойств является просто опустите часть write.

property MyList: TObjectList<TSearchHits> read zList; 
Смежные вопросы