2013-05-09 4 views
2

Использование: Delphi XE2Можно ли ссылаться на родительский класс полей

Класс имеет поле, которое является другим классом.

Возможно ли в процедуре поля ссылаться на класс контейнера?

Type TClassA = class 
procedure ClassAMethod; 
end; 

Type TClassB = class 
ClassA : TClassA; 
end; 

procedure TClassA.ClassAMethod; 
begin 
// is it possible to get a reference to the 
// owning ClassB object here? 
end; 

ответ

8

Нет. Между этими двумя объектами нет неотъемлемой связи. Если содержащиеся объекты должны ссылаться на контейнер, то содержащемуся классу должна быть дана ссылка на этот объект. Передайте его в качестве параметра конструктора, например:

constructor TClassB.Create; 
begin 
    inherited; 
    ClassA := TClassA.Create(Self); 
end; 

Если эти объекты происходят от TComponent, то вы можете быть в состоянии использовать Owner свойство для этого.

Смежные вопросы