|
<< Нажмите, чтобы показать Содержание >>
|
Используйте компонент TDBRichView для показа документов, хранящихся в базе данных.
Модуль DBRV;
Синтаксис
TDBRichView = class(TCustomRichView)
TDBRichView не отображает своё содержимое, если он не связан с компонентом TRVStyle через свойство Style.
Наиболее важные свойства можно настроить в редакторе компонента TRichView. В среде Delphi щёлкните правой кнопкой мыши компонент TDBRichView на форме и выберите «Settings» (Настройки) в контекстном меню.
Если приложению не требуются возможности TDBRichView для работы с базой данных, используйте вместо него TRichView, чтобы экономить системные ресурсы.
Для редактирования документов в полях базы данных используйте TDBRichViewEdit.
В Delphi XE2 и более новых версиях есть ещё один способ работы с данными – LiveBindings (см. свойство TRichView.Document).
TObject
TPersistent
TComponent
TControl
TWinControl
TCustomControl
Этот компонент должен быть связан с BLOB-полем.
Если вы используете RVF (RichView Format) или DocX, поле базы данных должно иметь двоичный тип BLOB, то есть должно позволять хранить произвольные двоичные данные без преобразования и фильтрации символов. Например, в таблицах Paradox это тип Binary, а в таблицах Microsoft Access – OLE Object.
Можно также использовать текстовое BLOB-поле (memo). Поля memo не могут хранить двоичные данные, поэтому сохранять в них документы в форматах RVF и DocX невозможно. Однако такие поля можно использовать для отображения текста, HTML или RTF (Rich Text Format).
Начиная с Delphi 2006, реализована специальная поддержка полей типа Unicode memo (Field.DataType = ftWideMemo). TDBRichView не пытается загружать из них RVF и DocX. Он пытается загрузить юникодный RTF (RTF-код, преобразованный в UTF-16), HTML или юникодный текст.
Если опция rvfoLoadBack включена в RVFOptions, компонент очищает BackgroundPicture перед загрузкой данных из поля.
Поддерживаются следующие форматы документов:
▪RVF (RichView Format),
▪RTF (Rich Text Format),
▪DocX (документ Microsoft Word)
▪HTML
▪текст
▪Markdown
▪другие (с использованием событий).
Для всех типов полей, кроме Unicode memo:
1.Вызывается событие OnLoadCustomFormat .
2.Если событие не обработано, TDBRichView пытается загрузить RVF.
3.Если поле не содержит RVF, он пытается загрузить RTF (или обычный RTF, или RTF преобразованный в UTF-16).
4.Если поле не содержит RTF, он пытается загрузить HTML (включая HTML в кодировке UTF-16).
5.Если поле не содержит HTML, он пытается загрузить DocX.
6.Если поле не содержит DocX:
a.Если AllowMarkdown, он загружает Markdown
b.В противном случает, он загружает простой текст.
Для полей Unicode memo
Последовательность та же, но:
▪компонент не пытается загружать RVF и DocX
▪на последнем шаге, он загружает юникодный (UTF-16) текст или Markdown.
Событие OnNewDocument происходит при создании нового документа или перед загрузкой существующего документа из поля.
После загрузки документа из поля происходит событие OnLoadDocument.
Событие OnLoadCustomFormat позволяет загружать документы в пользовательских форматах.