Конференция "Компоненты" » Как сохранить в dfm свойство типа TComponent не изменяя сам класс [D7]
 
  • 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]
    Ясно. Спасибо :)
 
Конференция "Компоненты" » Как сохранить в dfm свойство типа TComponent не изменяя сам класс [D7]
Есть новые Нет новых   [118658   +23][b:0][p:0.001]