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

Вниз

не сохраняет чайлдов компонента в файл. почему?   Найти похожие ветки 

 
AlexT1000   (2002-11-14 13:44) [0]

Есть компонент .
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


 
AlexT1000   (2002-11-14 14:29) [1]

Пацаны, думаем!
Почему форма может сохранить все свои компоненты , а компонент вот несохряняет объекты , а сохраняет тольк опроперти. как то побороть!?


 
KoluChi ©   (2002-11-14 14:38) [2]

ComponentToString использует ObjectBinaryToText, который обрабатывает один объект. Компоненты TActionCollection - это другие объекты, поэтому и не сохраняет.


 
KoluChi ©   (2002-11-14 14:42) [3]

Call ReadComponentResFile to create a component and its children from their representation in a Windows resource file. Use WriteComponentResFile to save the component specified by the Instance parameter to the specified file, storing it in a Windows resource-file format.


 
AlexT1000   (2002-11-14 15:40) [4]

Ты неправ.
Я вызываю ComponentToString для формы и он сохряняет
все компоненты, которые принадлежат форме .


 
KoluChi ©   (2002-11-14 15:56) [5]

>Я вызываю ComponentToString для формы и он сохряняет
>все компоненты, которые принадлежат форме .
Ты не понял. А дочерние формы сохраняет? :)
Компоненты действительно принадлежат форме, они ее часть.
Вот если бы
TActionCollection=class(TComponent)
GammaAction: TGammaAction;
ChannelSwapAction: TChannelSwapAction;
end;

тогда другое дело, а это отдельные объекты.
Теперь понятно? :)


 
AlexT1000   (2002-11-14 16:08) [6]

я тоже так думал и поэтому в этот класс вставил

TActionCollection=class(TComponent)
Image: TImage;
end;

но он его фиг сохранил!



 
AlexT1000   (2002-11-14 16:12) [7]

Image естественно создал в конструкторе TActionCollection




 
KoluChi ©   (2002-11-14 16:25) [8]

Странно :(


 
AlexT1000   (2002-11-14 16:44) [9]

так отож!


 
KoluChi ©   (2002-11-14 16:46) [10]

В общем в чем-то я не прав, согласен. Действительно ObjectBinaryToText сохраняет только свойства. В чем-то есть существенная разница между TForm и TComponent (понятно, что потомок), что-то связанное с ресурсами. Но муза пока не пришла.


 
KoluChi ©   (2002-11-14 16:53) [11]

А что ReadComponentResFile, WriteComponentResFile не подходят?


 
AlexT1000   (2002-11-14 16:58) [12]

неа. не подходят.
я уже обошелся . сам сохраняю в ини файл все проперти объектов .
мне так удобней


 
Юрий Зотов ©   (2002-11-14 17:50) [13]

Посмотрите:

1. DefineProperties - позволяет сохранять что угодно и как угодно.

2. Read/Write RootComponent(Res) - позволяет сохранять компонент вместе с его Components.



 
AlexT1000   (2002-11-14 18:34) [14]

я уже смотрел. в лом писать.
как-то же форма сохряняет таки свои компоненты блин!


 
reonid ©   (2002-11-14 20:30) [15]

Попробуй переопределить TActionCollection.GetChildren



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

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

Наверх




Память: 0.5 MB
Время: 0.016 c
3-82680
saniok
2002-11-06 19:36
2002.11.25
А что, больше 7-ми в парадоксе нельзя?


1-82686
Cranium
2002-11-13 12:07
2002.11.25
Перенос из D3 в D5


1-82838
3asys
2002-11-14 10:49
2002.11.25
Вывод на печать JPG из TImage


14-82945
Юра
2002-10-17 20:29
2002.11.25
Как дети учат информатику


14-82967
Nico1a
2002-11-04 23:20
2002.11.25
Г люки (D6 WinXP)