Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо