Получить доступ к private полям из наследника

 
0
 
Delphi, Kylix and Pascal
ava
Delphist | 20.07.2007, 11:48
Скажите, пожалуйста, если возможность получить доступ к private полям родителя. Есть один компонент из vcl есть у него свойство типа
property Prop: Boolean read FProp write SetProp; //SetProp - не виртуальная функция
Есть наследник от этого vcl-компонента, в наследнике мне нужно сделать такую вещь


oldProp := Prop;
{здесь я выполняю некоторые действия, которые могут появлиять на значение сво-ва Prop}
Prop := oldProp {такая операция мне не подходит, т.к. будет вызвана SetProp, мне нужно напрямую обратиться к FProp. Как это сделать
не вскарячивая vcl}


Ответы (3)
ava
Alexeis | 20.07.2007, 11:04 #
Либо объявить наследника в том же самом модуле, тогда поле будет явно доступно, либо зная смещение поля в объекте вычислить адрес поля и записать туда данные.
ava
Delphist | 20.07.2007, 11:32 #
Я сделал так

PPorp = ^TypeProp;

odlProp := Compont.Prop;
PPorp := @Compont.Prop;
...
PProp^ := odlProp
ava
EvilsInterrupt | 20.07.2007, 14:01 #
Delphist,

Насколько я понял своего знакомого и код VCL, то это делается так:


TCustomArhive = class(TComponent)
private
property OnChange : TNotifyMyEvent Read FOnChange write FOnChange;
end;

TProbaArchive = class(TCustomArhive)
protected
property OnChange; // То бишь просто пишешь без объявления в протектед
end;


Вроде так, попробуй ! ;)
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить