Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.12;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.021 c
8-36302
GSergey
2002-08-25 20:36
2002.12.12
TIFF class F


14-36405
123000
2002-11-17 17:50
2002.12.12
Компоненты из RegCleaner


3-35993
DBer
2002-11-23 11:13
2002.12.12
---|Ветка была без названия|---


1-36273
DimonA
2002-12-02 14:18
2002.12.12
QReport


14-36333
Ketmar
2002-11-20 17:47
2002.12.12
test