
Привет всем.
Есть класс-предок и, соответственно, его наследник.
Код:
TP = class
private
{Тут много разных полей, не относящихся к делу...}
FEnabled:Boolean;
protected
SetEnabled(Value:Boolean);
public
property Enabled:Boolean read FEnabled write SetEnabled;
end;
Tx = class
FPole:TP;
public
procedure SetBaseVersion(Value:TP);
published
property Prop:TP read FPole write SetBaseVersion;
end;
...
procedure TP.SetEnabled(Value:Boolean);
begin
FEnabled:=Value;
end;
procedure TX.SetBaseVersion(Value:TP);
begin
if Value.Enabled=True then FPole:=TP.Create;
end;
Моя проблема заключается в том, что я не понимаю,
почему вперёд вызывается TP.SetEnabled, а не TX.SetBaseVersion. Из-за того, что вперёд вызывается SetEnabled, комп выдаёт ошибку AV. Вопрос: как исправить? Как вызывать сначало TX.SetBaseVersion? Или что в моей ситуации можно придумать?
Дополнительный вопрос. Очень интересно, посмотрите, у TP нет конструктора, как и деструктора. Но я могу написать
FPole:=TP.Create, а
FPole:=TP.Destroy нет. Почему???