|
<< Нажмите, чтобы показать Содержание >>
|
Используйте компонент TDBRichViewEdit для редактирования документов, хранящихся в базе данных.
Модуль DBRV;
Синтаксис
TDBRichViewEdit = class(TCustomRichViewEdit)
TDBRichViewEdit не отображает своё содержимое, если он не связан с компонентом TRVStyle через свойство Style.
Наиболее важные свойства можно настроить в редакторе компонента TRichView. В среде Delphi щёлкните правой кнопкой мыши компонент TDBRichViewEdit на форме и выберите «Settings» (Настройки) в контекстном меню.
Если приложению не требуются возможности TDBRichViewEdit для работы с базой данных, используйте вместо него TRichViewEdit, чтобы экономить системные ресурсы.
Если приложению не требуется редактировать документы в полях базы данных, используйте TDBRichView для их показа.
В Delphi XE2 и более новых версиях есть ещё один способ работы с данными – LiveBindings (см. свойство TRichView.Document).
TObject
TPersistent
TComponent
TControl
TWinControl
TCustomControl
Этот компонент должен быть связан с BLOB-полем.
Если вы используете RVF (RichView Format) или DocX, поле базы данных должно иметь двоичный тип BLOB, то есть должно позволять хранить произвольные двоичные данные без преобразования и фильтрации символов.
Можно также использовать текстовое BLOB-поле (memo). Поля memo не могут хранить двоичные данные, поэтому сохранять в них документы в форматах RVF и DocX невозможно. Однако такие поля можно использовать для отображения текста, Markdown, HTML или RTF (Rich Text Format).
Начиная с Delphi 2006, реализована специальная поддержка полей типа Unicode memo (Field.DataType = ftWideMemo). TDBRichViewEdit не пытается загружать из них RVF и DocX. Он пытается загрузить юникодный RTF (RTF-код, преобразованный в UTF-16), HTML, Markdown или юникодный текст.
Если опция 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.Если (FieldFormat = rvdbMarkdown) или AllowMarkdown, он загружает Markdown
b.В противном случает, он загружает простой текст.
Для полей Unicode memo
Последовательность та же, но:
▪компонент не пытается загружать RVF и DocX
▪на последнем шаге, он загружает юникодный (UTF-16) текст или Markdown.
Сохранение данных в поле:
Событие OnSaveCustomFormat даёт возможность сохранять данные в нестандартных форматах. Если это событие не обрабатывается, для сохранения используется формат, указанный в FieldFormat.
Событие OnNewDocument происходит при создании нового документа или перед загрузкой существующего документа из поля.
После загрузки документа из поля происходит событие OnLoadDocument.
События OnLoadCustomFormat и OnSaveCustomFormat позволяют загружать и сохранять документы в пользовательских форматах.
Пример 1: Использование методов быстрого изменения документа в TDBRichViewEdit (таких как LoadRTF)
Пример 2: Вставка компонентов, которые могут изменять своё содержимое, в TDBRichViewEdit (например, TEdit: пользователь может изменить в нём текст)