|
TRVTableItemInfo.OnDrawBorder |
Top Previous Next |
|
Allows custom drawing of table borders type TRVTableDrawBorderEvent = procedure (Sender: TRVTableItemInfo; Canvas: TCanvas; Left,Top,Right,Bottom, Width: Integer; LightColor, Color, BackgroundColor: TColor; Style: TRVTableBorderStyle; Printing: Boolean; VisibleBorders: TRVBooleanRect; Row, Col: Integer; var DoDefault: Boolean) of object;
property OnDrawBorder: TRVTableDrawBorderEvent; (introduced in version 1.7, modified in 1.8) Input parameters Sender – the table to draw border for (border can be drawn for the table itself or for the table cells). Canvas – canvas where to draw. Left, Top, Right, Bottom – rectangle for the border. LightColor, Color, BackgroundColor – colors for border and for background (be careful - cell border is drawn after drawing cell content) Style – border style. Printing – True if this drawing is for printing; False if on screen. VisibleBorders – VisibleBorders property for the table, or VisibleBorders property for the cell. Row, Col – row and column of the cell (or -1 if this is a table border). Output parameters DoDefault – set to False to cancel the default border drawing.
For example, { Drawing a hairline border (both on screen and printer), assuming that CellBorderWidth=1, CellVSpacing=0, CellHSpacing=0. This example ignores VisibleBorders. } procedure TMyForm.DoDrawBorder(Sender: TRVTableItemInfo; Canvas: TCanvas; Left, Top, Right, Bottom, Width: Integer; LightColor, Color, BackgroundColor: TColor; Style: TRVTableBorderStyle; Printing: Boolean; VisibleBorders: TRVBooleanRect; var DoDefault: Boolean); begin if Width=0 then exit; inc(Right); inc(Bottom); Canvas.Pen.Color := Color; Canvas.Pen.Style := psInsideFrame; Canvas.Pen.Width := 1; Canvas.Brush.Style := bsClear; Canvas.Rectangle(Left,Top,Right,Bottom); DoDefault := False; end; Tables are not components, so their events cannot be assigned at design time in the Object Inspector. They must be assigned in code. Events are not saved in RVF files, so you need to reassign them when tables are loaded. The best place to assign this event is TRichView.OnItemAction event. // MyRichViewEdit.OnItemAction. Assigns DoDrawBorder to // OnDrawBorder events of all tables inserted in MyRichViewEdit. // (this assignment occurs when table is inserted using // AddItem or InsertItem methods, or is loaded from RVF or RTF file) procedure TMyForm.MyRichViewEditItemAction(Sender: TCustomRichView; ItemAction: TRVItemAction; Item: TCustomRVItemInfo; var Text: String; RVData: TCustomRVData); begin if (Item.StyleNo = rvsTable) and (ItemAction = rviaInserting) then TRVTableItemInfo(Item).OnDrawBorder := DoDrawBorder; end; |