Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-36351
blackman
2002-11-20 10:08
2002.12.12
С понедельника хочу пятницу


14-36355
Anatoly Podgoretsky
2002-11-19 07:36
2002.12.12
Именинники 19 ноября


1-36214
ltolean
2002-12-01 14:19
2002.12.12
Program Icon


1-36215
Dber
2002-11-30 16:15
2002.12.12
Нормальный Report


1-36107
Tenrai
2002-12-03 04:42
2002.12.12
Управление МДИ-Окнами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский