Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.10;
Скачать: CL | DM;

Вниз

Сохранить TPersistent который часть TComponent   Найти похожие ветки 

 
_artur ©   (2007-03-19 19:59) [0]

Привет всем. У меня такая ситуация - у меня типа файла настроек, кроме числовых, строковых и т.д. значений хочеться сохранять

в нём и объекты, причём объекты унаследованные от TPersistent. Вот класс для сохранения

class TOptions : public TComponent
{
public:
       __fastcall TMonitorOptions(TComponent *Owner);
       __fastcall ~TMonitorOptions();

       __property Variant VarOptions[String __index]  = { read=GetVarOptions, write=SetVarOptions};
       __property TPersistent *ObjOptions[String __index]  = { read=GetObjOptions, write=SetObjOptions};
protected:
       virtual void __fastcall DefineProperties(TFiler* Filer);
       DYNAMIC void __fastcall GetChildren(TGetChildProc Proc, TComponent* Root);
};

Вариантные свойства я сохраняю в DefineProperties, а объектные свлойства я сохраняю так: у меня есть класс:

class TObjOption: public TComponent
{
   public:
       __fastcall DObjOption(TComponent *AOwner)
           : TComponent(AOwner) { };

       __property TPersistent *ObjProperty = {read=FObjProperty, write=FObjProperty};

       DYNAMIC void __fastcall SetParentComponent(TComponent* Value);
};

и в методе GetChildren класса TOptions я создаю объект TObjOption, его свойству ObjProperty я присваиваю объект какой нужно и

таким макаром его сохраняю:

void __fastcall TOptions::GetChildren(TGetChildProc Proc, TComponent* Root)
{
   TObjOption *objOpt;
   CurrentObjIterator=ObjMap.begin();
   while(CurrentObjIterator!=ObjMap.end())
   {
       objOpt = new TObjOption(NULL);
       objOpt->ObjProperty = (*CurrentObjIterator).second;
       objOpt->Name = (*CurrentObjIterator).first;
       Proc(objOpt);
       delete objOpt;
       CurrentObjIterator++;
   }
}

сохранияет без проблем, но почему-то при загрузке выдаёт: "Invalid property path"
Может вы знаете как исправить эту проблему. Извините что на С++, библиотека ж одна, а код вроде простой может и так понятно будет


 
galak   (2007-04-14 02:55) [1]

Видимо у Вас получается 2 одноименных объекта. Сбросьте пример получаемого файла, тогда можно будет говорить точнее.



Страницы: 1 вся ветка

Текущий архив: 2007.06.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.026 c
2-1179840923
Sonia
2007-05-22 17:35
2007.06.10
Сделать компоненты формы "прозрачными"


2-1179568130
masha1
2007-05-19 13:48
2007.06.10
perenos proqrammi na druqoy kompyuter


6-1164471298
NeyroSpace
2006-11-25 19:14
2007.06.10
Как обработать ошибку при отключении клиента?


15-1179392625
Nic
2007-05-17 13:03
2007.06.10
Шрек III


1-1171461249
Пётр_К
2007-02-14 16:54
2007.06.10
TShape drag