Форум: "Основная";
Текущий архив: 2002.12.12;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c