Вниз
Скачать: 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
6-36321
nickolayLI
2002-10-16 20:52
2002.12.12
10055


1-36097
Лешка
2002-11-28 20:32
2002.12.12
Овальные кнопки


1-36105
Yogi
2002-11-29 22:09
2002.12.12
Service


14-36368
WD
2002-11-20 16:47
2002.12.12
Как откыть базу проги


1-36157
Sonder
2002-12-02 22:59
2002.12.12
VCL




   Наверх