|
<< Нажмите, чтобы показать Содержание >> TRVTableItemInfo.OnDrawBorder |
Позволяет нестандартное рисование рамки таблицы и ячеек.
type
TRVTableDrawBorderEvent = procedure (Sender: TRVTableItemInfo;
Canvas: TCanvas; Left,Top,Right,Bottom: TRVCoord;
Width: TRVStyleLength;
LightColor, Color, BackgroundColor: TRVColor;
Style: TRVTableBorderStyle; Printing: Boolean;
VisibleBorders: TRVBooleanRect; Row, Col: Integer;
var DoDefault: Boolean) of object;
property OnDrawBorder: TRVTableDrawBorderEvent;
Входные параметры:
Sender – таблица, для которой рисуется рамка (либо самой таблицы, либо её ячейки).
Canvas – канва для рисования.
Left, Top, Right, Bottom – прямоугольная область рамки.
Width – толщина рамки, в единицах Sender.Style.Units.
LightColor, Color, BackgroundColor – цвета рамки и фона (осторожно, рамка рисуется после содержимого)
Style – тип рамки.
Printing – True, если рисование происходит для печати; False, если на экране.
VisibleBorders – значение свойства VisibleBorders таблицы или VisibleBorders ячейки.
Row, Col – строка и столбец ячейки (или -1 для самой таблицы).
Выходные параметры:
DoDefault – установите в False, чтобы отменить стандартное рисование рамки.
Пример:
{ Рисование максимально тонкой рамки (как на экране, так и на принтере).
Предполагается что CellBorderWidth=1, CellVSpacing=0, CellHSpacing=0.
Пример не учитывает свойства VisibleBorders.
}
procedure TMyForm.DoDrawBorder(Sender: TRVTableItemInfo;
Canvas: TCanvas; Left, Top, Right, Bottom: TRVCoord;
Width: TRVStyleLength;
LightColor, Color, BackgroundColor: TRVColor;
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;
Поскольку таблицы не являются компонентами, их события нельзя назначать во время проектирования в Инспекторе объектов. События необходимо назначать программно при создании таблицы. События не сохраняются в файлах RVF, поэтому требуется переназначать их после загрузки таблицы из файла. Лучшее место для этого – обработчик события TRichView.OnItemAction.
// MyRichViewEdit.OnItemAction. Присваивает DoDrawBorder событиям
// OnDrawBorder всех таблиц, вставляемых в MyRichViewEdit.
// (происходит когда таблица вставляется методами
// AddItem или InsertItem, или загружается из файла)
procedure TMyForm.MyRichViewEditItemAction(Sender: TCustomRichView;
ItemAction: TRVItemAction; Item: TCustomRVItemInfo;
var Text: TRVUnicodeString; RVData: TCustomRVData);
begin
if (Item.StyleNo = rvsTable) and (ItemAction = rviaInserting) then
TRVTableItemInfo(Item).OnDrawBorder := DoDrawBorder;
end;
См. также: