-
MegaVolt_old (01.10.12 16:41) [0]Есть Класс A который имеет свойство X типа TComponent.
Чтобы X сохранялось в dfm можно установить SetSubComponent и X будет сохраняться в виде
x.Property1 = ...
x.Property2 = ...
Есть ли ещё варианты как сохранить X в dfm-ку при условии что изменять класс А нельзя? Или это единственный вариант? -
DimaBr © (01.10.12 22:28) [1]Вы можете сохранить компонент как например TAction или TField
-
DimaBr © (01.10.12 22:29) [2]Если вы не можете поменять поведение сохранения родителя, то сделать ничего нельзя
-
MegaVolt_old (02.10.12 10:20) [3]>Если вы не можете поменять поведение сохранения родителя, то сделать ничего нельзя
В смысле предложенный мной вариант единственный? -
DimaBr © (02.10.12 14:37) [4]Я не вижу ВАШЕГО предложенного варианта. Что вы вкладываете в понятие "при условии что изменять класс А нельзя"
-
MegaVolt_old (02.10.12 16:03) [5]>Я не вижу ВАШЕГО предложенного варианта.
> Чтобы X сохранялось в dfm можно установить SetSubComponent
> и X будет сохраняться в виде
> x.Property1 = ...
> x.Property2 = ...
>Что вы вкладываете в понятие "при условии что изменять класс А нельзя"
Вы верно поняли то что изменять родителя нельзя. Т.е. DefineProperty и GetChildren применять не хотелось бы. -
DimaBr © (03.10.12 00:16) [6]Но SetSubComponent вы же применяете, значит всё таки вносите изменения в компонент типа Х
-
MegaVolt_old (03.10.12 10:20) [7]Ну да Х можно править как угодно. Нельзя править тот класс куда Х выходит как свойство.
-
DimaBr © (03.10.12 10:22) [8]Но SetSubComponent вы же применяете, значит всё таки вносите изменения в компонент типа А
-
MegaVolt_old (03.10.12 10:26) [9]т.е. входит...
-
MegaVolt_old (03.10.12 10:27) [10]SetSubComponent вызываю в конструкторе Х всё отлично работает :)
-
DimaBr © (03.10.12 13:21) [11]> SetSubComponent вызываю в конструкторе Х
А может в конструкторе A ???? -
DimaBr © (03.10.12 13:22) [12]Вы определитесь уже, какой компонент в каком, и какой нельзя менять
-
MegaVolt_old (03.10.12 15:45) [13]>Вы определитесь уже, какой компонент в каком, и какой нельзя менять
По моему я не разу ещё не запутался в объяснениях.
TXClass = class(TComponent)
private
FZZZ: Integer;
procedure SetZZZ(const Value: Integer);
public
constructor Create(AOwner: TComponent); override;
published
property ZZZ:Integer read FZZZ write SetZZZ;
end;
constructor TXClass.Create(AOwner: TComponent);
begin
inherited;
SetSubComponent(True);
end;
TAClass = class(...)
published
property X:TXClass read FX write SetX;
TAClass насколько видно никак не изменён но сохраняет свойство Х
Есть ли другие пути сделать то же самое?????? -
MegaVolt_old (03.10.12 15:47) [14]
constructor TAClass.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FX:=TXClass.Create(....);
-
DimaBr © (03.10.12 17:01) [15]В таком случае повлиять на другой способ сохранения нельзя
-
MegaVolt_old (03.10.12 17:40) [16]Т.е. тот способ что я привёл при данных условиях единственный и альтернатив ему нету?
-
DimaBr © (03.10.12 23:18) [17]Если вы не можете изменить поведение сохранения TAClass то другого способа я не вижу
-
MegaVolt_old (04.10.12 13:17) [18]Ясно. Спасибо :)