![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не сохраняет ;чайлдов ;компонента в файл. ;почему?
AlexT1000 © (2002-11-14 13:44:00)Есть компонент .
TActionCollection = class (TComponent)
procedure Execute;
end;
В процессе работы в него добавляются компоненты
ActionCollection.InsertComponent(Component);
потом пытаюсь сохранить ActionCollection в файл .
S := ComponentToString(ActionCollection);
FAction.Write(s[1],Length(S));
в файле action.act только это.
object TActionCollection
end
а его дети не сохранились в файл. почему? ПОМОГИТЕ!
если сохранять в файл отдельно детей то все нормально
например
object TGammaAction
ID = 0
CanUndo = True
CanAction = True
State = 0
Gamma = 200
end
object TChannelSwapAction
ID = 0
CanUndo = True
CanAction = True
State = 0
SwapType = stGBR
end
reonid (2002-11-14 20:30:00) [1]Попробуй переопределить TActionCollection.GetChildren
AlexT1000 (2002-11-14 18:34:00) [2]я уже смотрел. в лом писать.
как-то же форма сохряняет таки свои компоненты блин!
Юрий Зотов (2002-11-14 17:50:00) [3]Посмотрите:
1. DefineProperties - позволяет сохранять что угодно и как угодно.
2. Read/Write RootComponent(Res) - позволяет сохранять компонент вместе с его Components.
AlexT1000 (2002-11-14 16:58:00) [4]неа. не подходят.
я уже обошелся . сам сохраняю в ини файл все проперти объектов .
мне так удобней
KoluChi (2002-11-14 16:53:00) [5]А что ReadComponentResFile, WriteComponentResFile не подходят?
KoluChi (2002-11-14 16:46:00) [6]В общем в чем-то я не прав, согласен. Действительно ObjectBinaryToText сохраняет только свойства. В чем-то есть существенная разница между TForm и TComponent (понятно, что потомок), что-то связанное с ресурсами. Но муза пока не пришла.
AlexT1000 (2002-11-14 16:44:00) [7]так отож!
KoluChi (2002-11-14 16:25:00) [8]Странно :(
AlexT1000 (2002-11-14 16:12:00) [9]Image естественно создал в конструкторе TActionCollection
AlexT1000 (2002-11-14 16:08:00) [10]я тоже так думал и поэтому в этот класс вставил
TActionCollection=class(TComponent)
Image: TImage;
end;
но он его фиг сохранил!
KoluChi (2002-11-14 15:56:00) [11]>Я вызываю ComponentToString для формы и он сохряняет
>все компоненты, которые принадлежатформе .
Ты не понял. А дочерние формы сохраняет? :)
Компоненты действительно принадлежат форме, они ее часть.
Вот если бы
TActionCollection=class(TComponent)
GammaAction: TGammaAction;
ChannelSwapAction: TChannelSwapAction;
end;
тогда другое дело, а это отдельныеобъекты.
Теперь понятно? :)
AlexT1000 (2002-11-14 15:40:00) [12]Ты неправ.
Я вызываю ComponentToString для формы и он сохряняет
все компоненты, которые принадлежат форме .
KoluChi (2002-11-14 14:42:00) [13]Call ReadComponentResFileto create a component and its children from their representation in a Windows resource file. Use WriteComponentResFileto save the component specified by the Instance parameter to the specified file, storing it in a Windows resource-file format.
KoluChi (2002-11-14 14:38:00) [14]ComponentToString использует ObjectBinaryToText, который обрабатывает один объект. Компоненты TActionCollection - это другие объекты, поэтому и не сохраняет.
AlexT1000 (2002-11-14 14:29:00) [15]Пацаны, думаем!
Почему форма может сохранить все свои компоненты , а компонент вот несохряняет объекты , а сохраняет тольк опроперти. как то побороть!?