Главная страница
    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.46 MB
Время: 0.005 c
1-36120
Serega Belov
2002-12-03 12:29
2002.12.12
WinExec и Winoldap в Delphi 6.


14-36390
ZLOST
2002-11-19 17:59
2002.12.12
Посмотрите на этот флейм (DELPHI vs C++).


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


1-36082
greenrul
2002-11-27 20:49
2002.12.12
SKINZ/Скины/Шкурки.


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский