Вниз
Скачать: CL | DM;

TStream.WriteComponent   Найти похожие ветки 

 
Vcoder ©   (2002-12-01 16:51) [0]

TStream.WriteComponent(Instance: TComponent) требует тип TComponent как входной параметр. TPen, TFont и т.д. являются не компонентами, а объектами. Возможно ли их сохранить таким образом?
Конструкция типа TStream.WriteComponent(TComponent(Image1.Canvas.Pen)) вызывает исключение.
Как быть?


 
Юрий Зотов ©   (2002-12-01 17:05) [1]

Можно так - ObjectBinaryToText и пишем в текстовом виде через WriteBuffer.


 
vuk ©   (2002-12-01 17:40) [2]

TPen и TFont являются не просто классами, а персистентными классами, что позволяет их использовать совместно с подсистемой сериальзации компонентов. Для того, чтобы сохранить персистентный объект можно сделать простенький компонент-оболочку и сохранять при помощи него.
Посмотрите как сделано сохранение в поток колонок у TDBGrid.
DBGrids.pas и там
TDBGridColumns.LoadFromStream,
TDBGridColumns.SaveToStream


 
Vcoder ©   (2002-12-01 19:13) [3]


> Юрий Зотов © (01.12.02 17:05)
> Можно так - ObjectBinaryToText и пишем в текстовом виде
> через WriteBuffer.


Дело в том, что ObjectBinaryToText требует два объекта TStream, а в TStream можно сохранить только наследник TComponent...



> vuk © (01.12.02 17:40)


Спасибо огромное. Почти понял. Пробовал - работает.
Как Вы считаете, может стоит в модуле Graphics добавить к некоторым компонентам эти методы?


 
vuk ©   (2002-12-01 19:50) [4]

Лезть прямо в Graphics не советую. Лучше напишите отдельный модуль, где для сохранения/загрузки каждого объекта будут свои процедуры.


 
Fantasist ©   (2002-12-01 22:46) [5]

TWriter.WriteProperties?


 
Юрий Зотов ©   (2002-12-01 23:37) [6]

> Vcoder © (01.12.02 19:13)

Любой объект хранится в памяти и может быть записан в TMemoryStream. Этот поток передаем в ObjectBinaryToText - и если в нем сидит потомок TPersistent, то он будет вполне успешно преобразован в текст. Delphi делает то же самое каждый раз, когда сохраняет в DFM такие внутренние объекты, как, скажем, TFont.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
1-36257
Zergling
2002-12-02 11:23
2002.12.12
Динамический массив, поток и High


3-36074
vaneks
2002-11-24 14:10
2002.12.12
Структура базы данных


1-36267
DiJeT
2002-11-20 01:59
2002.12.12
OpenGL и всё такое


3-35998
Miko
2002-11-23 14:48
2002.12.12
Драйвера БД


3-36072
VaZ
2002-11-26 09:58
2002.12.12
Нужна помощь! Экспорт в dbf из Interbase




   Наверх