Главная страница
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.49 MB
Время: 0.044 c
3-82674
Colonel Isaev
2002-11-06 17:53
2002.11.25
QReport


3-82593
andrrr
2002-11-04 16:41
2002.11.25
Можно ли найти записи запросом


14-82955
AlekseyK
2002-11-05 17:00
2002.11.25
Вопрос


1-82749
KME
2002-11-15 12:21
2002.11.25
Power Point


3-82622
mas_alexey
2002-11-05 15:58
2002.11.25
SQL