RichView 1.9.24

=====================================================
COMPATIBILITY ISSUES (upgrading from version 1.9 or older):
- HTML tag names, color constants, CSS names are saved in lower case
- SaveHTMLEx does not use the following attributes for cells and tables any more:
  bordercolor, bordercolorlight, bordercolordark, background, bgcolor.
  CSS style is used instead. These attributes are not standard.
- table layout algorithm: when there is not enough space for columns having
  widths specified in pixels, they are decreased proportionally
  (previously, only rightmost columns were decreased)
- table grid is not shown in readonly editors any more (it also affects TBDRichViewEdit
  when its dataset is not in the edit mode)
- in editor, TAB key in the last table cell adds a new row; set the global
  variable RichViewTableAutoAddRow to False to disable
- BeginUpdate and EndUpdate has new functionality
=====================================================

1.9.24 [2006-Mar-16]
new: rvsroFromStart option for TRichView.SearchText (not for TRichViewEdit).
  If specified, search starts from the very beginning/end of the document
  (depending on rvsroDown option). If not specified, starts from the selection
  or the first visible item, as before.
fix: extra properties were not saved in RVF for "breaks" and "hotspots"

1.9.23 [2006-Mar-4]
impr: You can disallow resizing of any image item: starting from this update, 
  the rvbpResizable item property works not only for controls, but also for images.
  Unlike controls, the default value of this property for images is 1 (i.e. True).
fixes

1.9.22.2 [2006-Feb-25]
chg: meaning of TRichViewEdit's BeginUpdate and EndUpdate was changed.
  Previously, they blocked generation of OnChange event (and were almost useless).
  Now: BeginUpdate blocks redrawing until EndUpdate method is called.
  BeginUpdate and EndUpdate prevent excessive redraws and speed processing time 
  when several editing operations are called one by one.
  Calls may be nested. Each call of BeginUpdate must be followed by one call of EndUpdate.
impr: faster formatting of documents containing controls-items (thanks to Rob Schoenaker)
fix: critical fix related to undo of drag&drop in tables


1.9.22 [2006-Jan-21]
new: processing WM_UNICHAR
fixes

1.9.21 [2005-Dec-21]
new: compatibility with BDS 2006 (Delphi for Win32 and C++Builder)
new: rvprStyleSplitProtect option of text style Protection property. If included, ApplyTextStyle and
  ApplyStyleConversion changes the style of the whole item, even if it is selected only partially.
  Useful for implementing fields.
impr: assignment of table cells' string properties (Hint and BackgroundImageFileName) can be undone and redone by user.
  To make assignment of these cells' properties undoable, use table.SetCellBackgroundImageFileName and table.SetCellHint
  instead of direct assignment to these properties. Assignments to the similar table properties is undoable if made via
  RichViewEdit.SetItemExtraStrPropertyEd or RichViewEdit.SetCurrentItemExtraStrProperty.
new: two new simple table properties: ColCount and RowCount.
fix: several important fixes

1.9.19 [2005-Oct-24]
impr: faster scrolling/resizing document containing inserted controls (thanks to Rob Schoenaker);
impr: faster loading RTF files with images (thanks to Rob Schoenaker);
fix: table selection, table HTML export, glitches on typing after non-text items.

1.9.18.1 [2005-Oct-09]
fix: unexpected d&d may occur when clicking to the right of selection

1.9.18 [2005-Oct-08]
new: new styles for breaks (horizontal lines): dashed and dotted.
  (Can be be exported in HTML with CSS)
fix: RTF loading, table selection in TRichView, printing table and cell background pictures.

1.9.17.1 [2005-Sep-10]
impr: (in Unicode mode in WinNT/2000/XP) special support for typing in
  Kazakh, Tatar, Mongolian, Azerbaijani (cyrillic&latin), Uzbek, Kyrgyz, Serbian.

1.9.17 [2005-Sep-10]
new: adding new row to tables when the user presses TAB in the last cell;
  set the global variable RichViewTableAutoAddRow to False to disable.
impr: exporting tables must look better in Mozilla/Firefox
fix: XHTML export (missing ending slash in one tag)

1.9.16 [2005-Sep-05]
new: new types of vertical image aligns (in addition to rvvaBaseLine and rvvaMiddle):
  * rvvaAbsTop - aligns the top of the image to the line top;
  * rvvaAbsBottom - aligns the bottom of the image to the line bottom;
  * rvvaAbsMiddle - aligns the middle of the image to the line center.
  Note: non-standard values of HTML align attributes (abstop, absbottom, absmiddle) are used
  for export. MS IE and Mozilla understand them, but not Opera.
new: TRichView.ResetAnimation - rewinds all inserted animated pictures to the first frame.
impr: Copying multicell selection as a table fragment; special pasting is not implemented yet.
fix: Drag&drop copying: it was impossible to insert a copy of selection to its beginning or end.
impr: some tweaks in HTML export
new: debug logging systems for undo operations, activated by a compiler define.
new: TRichView.RTFReadProperties.BasePathLinks: Boolean. 
  Default value is True. Set to False if you do not want to add the document path to relative 
  hyperlinks on RTF loading.  
  In RVHTMLImporter, this property corresponds to rvhtmloBasePathLinks in RVHTMLImporter.Options.


1.9.15
new: TRichView.MaxLength property. Set it to positive value to limit
  a number of characters per line. 
  Non-text items are treated like one character.
fix: important fix in processing of bidirected text

1.9.14
new: ability to add your own rules for URL detection.
  Assign your URL-detection procedure to variable
  RVIsCustomURL: TCustomRVIsURLFunction; (RVFuncs.pas)
  type
    TCustomRVIsURLFunction = function (const Word: String): Boolean;
  This function is used:
  - to ignore URLs in live spelling,
  - by URL detection in RichViewActions.
fix: minor fix

1.9.13
new:
  type 
  TRVCustomFormatEvent = procedure (Sender: TCustomRichView;
    Stream: TStream; var DoDefault: Boolean) of object;
  Event: TDBRichView.OnLoadCustomFormat, TDBRichViewEdit.OnLoadCustomFormat
  allow loading data from db in your own format. Data should be loaded from
  Stream to Sender. If they are loaded successfully, set DoDefault to False,
  otherwise the component will attempt to load RVF/RTF/text.
  Event: TDBRichViewEdit.OnSaveCustomFormat allows to save document to db
  in your own format. If you saved it, set DoDefault to False, 
  otherwise the component will save it according to the FieldFormat property.
new: table.Rows[r].PageBreakBefore property allows to specify a page break
  before the given row. Ignored for the 0th row, and for the heading rows.
  Ignored, if the page break goes across the cell.
  Excluding rvtoRowsSplit from table.PrintOptions does not affect processing
  of this property.
impr: db controls can update standard db actions.
impr: possibility to subclass the live spelling thread.
fix: critical fix, related to undo of multicell operations.
  
1.9.12
impr: overriding RV_CreateGraphics is not necessary any more, even for old versions of Delphi
  (thanks to Petr Semerad)
fix: wrong print preview for text having CharSpacing<>0
impr: in RTF import and HTML export

1.9.11
impr: TDBRichView and TDBRichViewEdit can be placed in TDBCtrlGrid
fix: display problem with rvoFastFormatting option.

1.9.10.2
  Processing for WM_GETTEXT, WM_GETTEXTLENGTH, WM_SETTEXT is disabled for Delphi 2005
  (because it conflicted with D2005 VCL's processing of these messages)

1.9.10 BETA
impr: in loading indents of bullets&numbering from RTF saved by MS Word
fix: TDBRichView, HTML export, bidirected Unicode text, adding Unicode text

1.9.9 BETA
new: "smart popups" (analog of MS Office's "smart tags").
  It's a small button appearing in the corner of the current item.
  Only one such button can be displayed at the same time.
  new: property TRichViewEdit.SmartPopupProperties, contains subproperties:
    - Color, HoverColor, LineColor, HoverLineColor, ImageList, ImageIndex -
      define visual appearance of smartpopup button;
    - Hint - hint of smartpopup button;
    - ButtonType (DropDown (triangle)/ShowDialog (3 dots)/Simple) - defines
      how the popup button looks like in hot state
    - ShotCut (default Shift+Ctrl+Down) - allows using keyboard instead of mouse
    - Menu - popup menu to display on click (or on ShotCut)
  new: property SmartPopupVisible - shows/hides the popup button for the current
    (at the position of caret) item. Editor hides this button automatically
    on document change or clearing. Since smart popup works only for
    the current item, you must ensure that it is displayed for the current item -
    update it in OnCaretMove event. Even if this property is True, reassigning
    True to it makes sense, because it links the smart popup to the current item.
  new: event OnSmartPopupClick - allows implementing your own effect when clicking
    the smartpopup button (or on pressing ShortCut). If you use menu, it's not
    necessary to process this event.
  new TRichViewEdit.SmartPopupProperties.SetButtonState(Hot: Boolean);
    Call SetButtonState(True) to fix the button in the "hot" state. It's useful
    to do this when you display your own dropdown window for the button.
    Call SetButtonState(False) to return it back to normal.

1.9.8
impr: Ctrl+Up and Ctrl+Down scroll the document down/up instead of moving caret.
impr: Ctrl+Left, Ctrl+Right, Ctrl+Delete take Delimiters into account.
fix: in db components
chg: rvoFastFormatting is included in Options by default (it affects existing projects
  where TRichView has default value of Options)
chg: support for C++Builder 1 and 3 is dropped (actually, it did not work since 1.9.3 or
   even before)

1.9.7 BETA
impr: much faster reformatting! (thanks to Rob Schoenaker)
  It's faster by 50-100%.
  If you include rvoFastFormatting in Options, it will be faster up to 400%!
  (works only under WinNT/2k/XP; 
   if this option is included, formatting procedure use a lot of system resources, 
   but they are released immediately after finishing formatting). 
   Highly recommended to try.
   This option can also be applied to TRVPrint (RVPrint.rv.Options) and
   TRVReportHelper (RVReportHelper.RichView.Options).
new: new options for TRichView.BackgroundStyle: bsTopLeft, bsTopRight, bsBottomLeft,
  bsBottomRight (define the position of background bitmap).
new: TRichView.LoadFromStream - loads data from the Stream autodetecting its format
  (RVF/RTF/text). The last parameter (IsTextUnicode) specifies is the text Unicode.
  It can be one of:
  rvynaNo - read text as ANSI
  rvynaYes - read text as Unicode
  rvynaAuto - autodetects ANSI/Unicode (false detection is very possible)
impr: table.VisibleBorders is saved to HTML and RTF
fixes

1.9.6 BETA

new: TJvGIFImage (from Project JEDI's JVCL, http://jvcl.sourceforge.net) animation.
  To enable it, include RVJvGifAnimate in your project. More info: see in v1.9.5
impr: rvespAlt (see TRVExtraItemStrProperty type) property can be applied
  to bullets and hotspots
new: Hint: String property for table cells (unlike item hints, they cannot
  be altered by OnItemHint event)
impr: you can define which characters to show in ShowSpecialCharacters mode.
  They are listed in RVVisibleSpecialCharacters (global variable in RVStyle.pas)
  It's a set of (rvscSpace, rvscNBSP, rvscParagraph, rvscSoftHyphen).
  By default, it lists all the options.
impr: you can allow saving explicit page breaks in text files/streams.
  Set the global variable RichViewSavePageBreaksInText (from CRVData.pas) to True.
new: the following Windows messages are processed by TRichView: 
  EM_GETSEL, EM_SETSEL, EM_GETTEXTRANGE, WM_GETTEXTLENGTH, WM_GETTEXT, WM_SETTEXT.
  If you do not need these messages, you can define RVDONOTUSELINEARPOSITIONS in RV_Defs.inc.
  It slightly reduces exe-file size.
new: ability to delete unused styles even if they are used by several documents.
  New methods: 
  MarkStylesInUse(data) - marks all styles used in RichView.
  DeleteMarkedStyles(data) - the first call deletes the marked styles from RVStyle.
    All calls adjust references to styles in documents.
  See Examples.txt.
fix: in editing and RTF export

1.9.5 BETA
new: ANIMATION: direct support for animated images.
  New property: AnimationMode:
  - rvaniDisabled: all animation is completely disabled.
    If images are added/updated in this mode, they cannot be
    animated (even if different mode is set later). 
    This mode saves system resources.
  - rvaniManualStart (default): animation starts when calling
    StartAnimation and stops when calling StopAnimation.
  - rvaniOnFormat: animation starts when calling Format and
    stops when calling Clear. StartAnimation and StopAnimation
    work as well.
  rvaniManualStart is set by default because rvaniOnFormat
  may cause problems in some existing applications.
  Animation must be stopped when you call viewer-style
  methods like DeleteItems. If you simply load and edit
  documents, set this mode to rvaniOnFormat.
  Supported animations:
  1) TGifImage by Anders Melander.
    http://www.torry.net/vcl/graphics/gif/gifimage.exe (original)
    http://www.trichview.com/resources/thirdparty/gifimage.zip (update)
    Include RVGifAnimate.pas in your project to enable this animation.
  2)TBitmap. Bitmap is sliced into frames (rvepImageWidth x rvepImageHeight)
  arranged in rows and columns. Animation is enabled if you set nonzero
  rvepAnimationInterval in positive value (animation delay in 1/100 of second)
  See the help file on TRVExtraItemProperty type about rvep*** values.
  Known problems: such bitmaps are still printed and exported stretched
  instead of exporting one frame.
  Note: unlike drawing/saving/loading of images, there is no standard
  graphic methods for animation. Because of this, a special
  wrapping code is required for supporting each new animation type.
  You can post your requiest for new animation types in newsgroups or
  svt@trichview.com.
fix: RTF export

1.9.3 BETA
impr: support for the word joiner Unicode character (code $2060).
  This character is invisible and it disallows line breaking
  before and after it. A speciall support is required because
  almost no font has a glyph for this character.
  Note: it works propely only if inserted in the middle of a
  text item.
chg: if image was not returned in OnRVFPictureNeeded event, this event
  is called second time with the value of rvespImageFileName property
  in the Name parameter (if value of this property was stored for
  this item).
fix: keep-with-next option did not work for paragraphs before tables 
  (if tables were printed on several pages)
test: if you set RichViewShowGhostSpaces variable to True, spaces hidden between
  lines will be shown in rvoShowSpecialCharacters is in TRichView.Options

1.9.2.1 BETA
fix: in table.VisibleBorders implementation
chg: table grid is not shown in readonly editors any more
  More exactly, it is shown using global variable RichViewTableGridStyle2 (default value: psClear).
  The same pen style is used for drawing table grid in viewer.
  For editors, RichViewTableGridStyle variable is used (default value: psDot)

1.9.2 BETA
new: packages for Delphi 2005 (Win32): RVPkgD9 and RVDBPkgD9.
new: table.VisibleBorders property having the same meaning as cell.VisibleBorders.
   Direct assignment to this property cannot be undone/redone, use table.SetTableVisibleBorders
   for that
new: TRichViewEdit events: OnOleDragEnter, OnOleDragOver, OnOleDragLeave, OnOleDrop.
  These events are called when user drags and drops data in the given RichViewEdit.
  These events are related to OLE d&d used by TRichView (VCL d&d events - OnDragOver,
  OnDragDrop - are called when dragging Delphi component over TRichViewEdit. VCL d&d
  is not processed by TRichViewEdit itself)
  OnOleDragEnter - user drags the mouse into the editor. Indicates whether a drop 
  can be accepted, and, if so, the effect of the drop.
  OnOleDragOver - user moves the mouse over the editor. Called only if the dragging
  was accepted in OnOleDragEnter.
  OnOleDragLeave - user drags the cursor out of the editor or cancels the current d&d operation.
  OnOleDrop - the user completes the d&d operation into the editor. Allows you to insert
  data in your own format.
  Parameters of these events:
  DataObject: IDataObject - dragged data (IDataObject is declared in ActiveX unit);
  Shift: TShiftState - keyboard state;
  PossibleDropEffects: TRVOleDropEffects - a list of allowed operations, set of
   rvdeCopy, rvdeMove, rvdeLink.
  DropEffect - on input, a d&d operation which editor would choose by default.
   On output: For OnOleDragEnter and OnOleDragOver, the operation that you want to
     do with the dragged data (one of PossibleDropEffects, or rvdeNone if you
     do not want to accept it).
     For OnOleDrop, the operation that you have performed (one of PossibleDropEffects, 
     or rvdeNone if you cancelled the insertion). If it is rvdeMove, it instructs
     to delete the dragged object from its source location. This value is
     used only if you set DoDefault=False, otherwise the editor does the default
     processing. If you insert some data in RichViewEdit in this event, they are
     automatically selected afterwards.
  Limitation: when dragging from the same editor, it decides by itself
    whether it should move or copy data, and it ignores DropEffect returned by OnOleDrop.
new: rvtoNoCellSelect option for TRVTableItemInfo.Options.
  If included, multicell selection by mouse is not allowed (remove also
  rvtoRowSelect, rvtoColSelect to disallow making multicell selection completely).
fix: fixes and tweaks in table layout algorithm.
fix: sometimes a wrong code page was chosen for the conversion when applying
  Unicode style to non-Unicode text.

1.9.1.8
new: TRichView.RTFReadProperties.StoreImagesFileNames: Boolean (default False).
  If you set it to True, filenames of external RTF images will be stored in
  rvespImageFileName item property of read images, and you will be able to use
  them when storing HTML.
fixes

1.9.1.7
new: loading and saving PNG images in RTF.
  To enable this feature, call the procedure RV_RegisterPngGraphic
  for the class representing PNG image. For example, if you use
  PngObject (http://pngdelphi.sourceforge.net/), call
  RV_RegisterPngGraphic(TPngObject);
fixes

1.9.1
new: rvsoXHTML option for SaveHTMLEx (ignored by SaveHTML).
  If set, output is XHTML.
new: rvsoUTF8 option for SaveHTML and SaveHTML.
  If set, HTML/XHTML file has UTF-8 encoding
  Pros and cons:
  pro: if you use Unicode, this option generates much more compact files
    (for non-Western languages)
  pro: if you do not use Unicode but use text of different charsets, 
    this option allows saving multilingual HTML (was not possible before)
  con: if you do not use Unicode this option may generate files of larger
    size (for non-Western languages). So the only case when it's not very good - 
    if your document is not Unicode and all text is of the same charset.
  con: RvHtmlImporter does not support UTF-8 yet
fix: minor fixes
