<< Click to display table of contents >> TDBRichViewEdit [VCL and LCL] |
Use TDBRichView to edit hypertext documents stored in database field.
Unit DBRV;
Syntax
TDBRichViewEdit = class(TCustomRichViewEdit)
DBRichViewEdit does not display or edit its content if it is not linked to RVStyle component via Style property.
The most important property settings can be done in the component editor for TRichView. In Delphi (C++Builder) IDE, right click the DBRichViewEdit object on the form, choose "Settings" in the context menu. If you decide to choose "Allow adding styles dynamically" mode, please set AutoDeleteUnusedStyles to True.
If the application doesn't require the data-aware capabilities of TDBRichViewEdit, use TRichViewEdit instead, to conserve system resources.
If the application doesn't require the editing capabilities of TDBRichViewEdit, use TDBRichView instead, to conserve system resources.
In Delphi XE2 or newer, there is another solution for data awareness: LiveBindings (see TRichView.Document property).
TObject
TPersistent
TComponent
TControl
TWinControl
TCustomControl
This component must be linked to BLOB field.
If you use RVF (RichView Format) or DocX, the database field must have binary BLOB type (i.e. must have ability to store arbitrary binary data, without conversion and filtering of characters).
You can also use text BLOB field type (memo). Memo fields cannot store binary data, so it is impossible to store documents in RVF and DocX format in them. However, you can use memo fields to display text, Markdown, HTML, or RTF (Rich Text Format) fields.
Starting from Delphi 2006, Unicode memo fields (Field.DataType=ftWideMemo) are supported specially. TDBRichView does not attempt loading RVF and DocX from these fields. It tries to load Unicode RTF (RTF code converted from String to WideString), HTML, Markdown, or Unicode text from them.
If rvfoLoadBack is in RVFOptions and FieldFormat=rvdbRVF, the component clears BackgroundBitmap before loading data from the field.
The supported field formats are:
▪RVF (RichView Format),
▪RTF (Rich Text Format),
▪DocX (Microsoft Word document)
▪HTML
▪Markdown
▪text
▪others (using events).
For all field types except for Unicode memos:
1.OnLoadCustomFormat event occurs.
2.If this event is not processed, TDBRichView tries to load RVF.
3.If the field does not contain RVF, it tries to load RTF (either normal RTF or RTF stored as WideString).
4.If the field does not contain RTF, it tries to load HTML (including HTML in UTF-16 encoding).
5.If the field does not contain HTML, it tries to load DocX.
6.If the field does not contain DocX:
a.If (FieldFormat = rvdbMarkdown) or AllowMarkdown, it loads Markdown
b.Otherwise, it loads a plain text
For Unicode memos:
The sequence is the same, but
▪the component does not attempt to load RVF and DocX
▪at the final step, it loads Unicode (UTF-16) text or Markdown
Saving data to the field:
OnSaveCustomFormat event allows saving data in your own format. If this event is not processed, documents are saved in FieldFormat.
OnNewDocument event occurs when creating a new document or before loading an existing one from the field.
When the document is loaded from the field, OnLoadDocument occurs.
OnLoadCustomFormat and OnSaveCustomFormat allow saving and loading documents in custom formats.
Example 1: Using viewer-style methods in DBRichViewEdit (such as LoadRTF)
Example 2: Inserting controls what can modify themselves in DBRichViewEdit (for example, inserting TEdit; user can modify its text)