As you may notice from version numbers, we do not consider this update as a major update. However, many interesting new features are implemented.

Changes in the Setup

The packages are separated into runtime and designtime packages. Designtime packages are based on runtime packages and contain only designtime units. Runtime packages are both 32- and 64-bit.
Previously, another package scheme was used: independent runtime and designtime packages. The both packages contained full set of runtime units, and runtime packages were only 64-bit.

The new version of the Setup supports optional packages. If optional packages cannot be installed, the Setup does not treat it as an error. The Setup uses this feature to install packages for integration with other third-party components: ReportBuilder 17, Addict 4, THTMLViewer, Developer Express VCL. If the corresponding third-party components are already installed, the integration packages are installed by the Setup; otherwise, they are skipped.

The Setup supports Delphi from 4 to 10.1 Berlin, C++Builder from 6 to 10.1 Berlin.
Like in the previous version of the Setup, you can choose to install either packages for Delphi or for C++Builder. Delphi packages are installed both in Delphi and C++Builder, both for 32- and in 64-bit platforms (when possible). C++Builder packages are installed in C++Builder, only for 32-bit platform (unfortunately, we were not able to compile a set of C++Builder packages based on each other for 64-bit platform)

Changes in TRichView

Text and paragraph properties

Widow/orphan control. It is turned on by including rvpaoWidowOrphanControl in Options of paragraph style. This option was added a long ago, but it is implemented only now. It prevents page breaks after the first line and before the last line of paragraphs. This option is supported completely: in TRVPrint and TRVReportHelper, in ScaleRichView, in RVF, RTF, DocX and HTML files.

DocObjects

This is a collection where you can add your own items of different classes, inherited from TRVDocObject. This collection can be saved and loaded in RVF format (if you include rvfoSaveDocObjects and rvfoLoadDocObjects in RVFOptions property).
This is the third property allowing to save custom information in RVF:
1) DocParameters have string properties Author, Title, Comments that can be saved to RVF, RTF, DocX (so this information is not hidden from users, they can view it in the document properties in MS Word)
2) DocProperties is a string list that can be stored in RVF
3) new DocObjects.
Why did we add this property?
DocProperties are not convenient if you need to store several groups of properties. For example, if you want to store some user-defined properties and some properties used by your applications, you need to separate them somehow. And we ourselves cannot use this property to store parameters, because it may break your code using this property.
Besides, DocObjects are easier to use: just define your class, and all published properties will be automatically stored in RVF, you do not need to write code to encode/decode properties in strings.
DocObjects were primarily implemented for ReportWorkshop. It adds a single TRVReportDocObject containing report-related properties that can be stored in report templates in RVF format.

Applying styles from a file

In TRichView, styles are implemented in the same way as in Microsoft Word. They can be saved in a special RVST file. If you use RichViewActions, you can save this file in the style dialog (“Export” button), or using the method TRVStyle.SaveToRVST.
You can apply styles from this file to new documents (see Demos\DelphiUnicode\Editors\StyleTemplates demo). Or, if you use RichViewActions, you can apply styles from this file using the style dialog (“Import” button). But how to apply styles to existing documents without RichViewActions and without a user interface?
This update adds a new method TRVStyle.InsertFromRVST. Together with TRichViewEdit.ChangeStyleTemplates, it allows applying styles from a file as an editing operation.

Saving and loading

Images

A helper class TRVGraphicHandler has a new method: LoadFromStream. It loads an image from a stream, detecting its type by the stream content. It recognizes bitmaps (may be with a Paradox graphic header), metafiles, icons, GIF, PNG, JPEG, TIFF. This method can be useful, for example, when loading graphic from a database field. TRVGraphicHandler.LoadFromFile tries to recognize the image format by the file extension (as before); but if loading failed, it tries to recognize its format by the content.

RVF

Previously, there was a limitation in RVF insertion: you could not insert RVF file containing text, paragraph and list styles to table cells. The applications that needed this insertion implemented a workaround: inserting RVF to a hidden TRichView linked to the same TRVStyle object as the target editor, saving RVF without styles in a memory stream, inserting this RVF to the target location. Since this version, it’s no longer necessary, this limitation is removed, you can insert RVF directly in any place of your document.
DocObjects can be stored in RVF (see above)

RTF and DocX

RTF/DocX export of tables is improved. Microsoft Word does not display a border for tables that do not have spacing between cells. In this update, to make tables look as in TRichView, we simulate a table border by increasing widths of outermost sides of table cells. In this way, we can keep table border width. RTF import is updated as well: wider outermost cell border sides are imported as table borders.

RTF may contain both internal and external images (as links to image files). Sometimes, RTF contain relative paths, and the base path is not specified. TRichView does a trick: when pasting RTF, it tries to get the base path from HTML, if it is available in the Clipboard. In this update, it does the same for RTF received from a drag&drop operation.

table.Rows[].PageBreakBefore property can be exported to RTF and DocX, and loaded from RTF.

LoadFromStream

TRichView.LoadFromStream inserts RVF, RTF or text, auto-detecting the format by content. In this version, a new format is added: “Unicode RTF” (RTF converted to UnicodeString). This type of data can be found, for example, in WideMemo fields.

Other

Symbol characters now can be saved to DocX. Special control codes are saved to HTML for bidirectional text, to provide text ordering more similar to TRichView.

Tables

Since this update, tables may have special colors for heading rows, last row, odd and even row bands, first column, last column, odd and even column bands.
New properties were added to table: HeadingRowColor, LastRowColor, OddRowsColor, EvenRowsColor, FirstColumnColor, LastColumnColor, OddColumnsColor, EvenColomnsColor, RowBandSize, ColBandSize. They allow to specify default colors for cells in the specified group of rows/columns. Details can be found in the help file. You may notice that these groups are the same as in MS Word table styles, except for corner cells.

CellOverrideColor property is added to tables. If defined (<> clNone), all cell colors are ignored, and this color is used instead.
Currently, this property is primarily used in Report Workshop: cell colors can be hidden to show row generation rules and crosstab headers more clearly.

We optimized many table operations, related to drawing, selecting, adding rows, and others. The effect is noticeable on very large tables.

Page numbers

Our components support “page number” and “page count fields”. NumberType property is added to “page count” fields; previously, it was only in “page number” fields.

Other

Faster formatting (especially for the cases when scrollbars appear and disappear).

Posted: Sun Jul 24, 2016 9:33 am

by Sergey Tkachenko

Changes in RichViewActions

Translations

A new global ShowUntranslatedControls: Boolean variable is added. Assign False to hide new features, that are not translated to all languages yet.
(untranslated controls are hidden when any language is selected, even if it contains a full translation).
Previously, the necessity to translate everything before the release slowed down RichViewActions development, and we had to release untranslated updates as betas.

Widow/orphan control

A checkbox is added to the paragraph-properties dialog.

Table colors

In the table-properties dialog, you can choose colors for table rows and columns.

Page breaks

TrvActionPageInsertPageBreak and TrvActionRemovePageBreak add and remove page breaks before the current table row, when called from a table cell.

Posted: Sun Jul 24, 2016 9:44 am

by Sergey Tkachenko

Changes in RichViewActions

Marking substrings

RichViewActions include a set of functions to mark substrings in document with the specified colors. These functions are not used by the actions themselves, but you can use them in your applications.

We added new options for these functions. In future, we plan to add similar options in TRichView.SearchText method as well.

You can add the following options to the parameters of MarkSubstringW function:
rvmsoNormalize - normalizes strings before searching (using canonical decomposition)
rvmsoStripDiacritic - normalizes strings and removes diacritics before searching.
rvmsoIgnorePunctuation - any sequence of punctuation is treated as a single space character.

The trial was updated.
This is mainly a bug-fix update: we fixed some package files and an error in table operations.
Additionally, we added a OnCMHintShow to allow custom processing of hint message (CM_HINTSHOW).

Additionally, this update fixes a redrawing problem in TRichView viewer (the problem did not affect TRichViewEdit editor)

Posted: Wed Sep 07, 2016 11:15 am

by Sergey Tkachenko

The trial version was updated. The main reason is adding Report Workshop (it will be announced separately), but there are some improvements in other components

TRichView 16.9

Text flow clearing options (specifying how text wraps around left- and right- aligned images) can be exported to DocX.
Text flow clearing options are shown on end-of-paragraphs and line-break marks (in "show special characters" mode). "Clear left" is shown as a vertical line to the left of the mark, "clear right" - to the right.

You can resize images with finger on touchscreens (previously, this gesture initiated panning). This update was made both in TRichView and ScaleRichView editors.

RichViewActions 6.7

New property for TRVAControlPanel: ColorDialogInterface. It allows using custom color dialogs in RichViewActions, instead of the standard TColorDialog.
We implemented TRVAdxColorDialogInterface. It allows using TdxColorDialog (developed by Developer Express)

Installer
There are some tweaks in installer, for example, it shows meaningful package names instead of file names.