TRichView 16.8, RichViewActions 6.6, ScaleRichView 7.4
Posted: Sun Jul 24, 2016 9:06 am
New versions are released: TRichView 16.8, RichViewActions 6.6, ScaleRichView 7.4
Trial versions are available here:
http://www.trichview.com/download/
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).
Trial versions are available here:
http://www.trichview.com/download/
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).