RichView Table 表格
Table表格是一种特殊的RichView项,如同图像、控件、断线一样组成ITEM,且独立构成文档的段落。Table表格是一个ITEM,但它要复杂得多,因为它们在每个单元格中包含RichView文档。此外,表内部可以包含其他表,因此RichView文档可以嵌套在任何深度上。
一、Table表格
1、类型
TRVTableItemInfo = class (TRVFullLineItemInfo)
TRVTableItemInfo 是表示 TRichView 文档中表格的类。 不是一个组件。
2、表在文档中,占用只是ITEM一个位置。
3、表的基本单位是Cell,Cell内嵌入RTf文档,又可以嵌入Table,以及图像等元素。
二、表的创建
1、表的列ColCount,由数据的项目决定,列的宽度创建时,以页的有效宽度平均分配。
2、表的行RowCount,显示数据的多少决定。
3、表的位置
Table表格总是占据整行,它的左边或右边都不可能有任何项(如果需要这种效果,可以使用嵌套表),包括列表标记。
表格的段落样式定义了它的位置:对齐、左对齐、右对齐(忽略FirstIndent)。段落样式可以定义表格和背景的边框。所有这些属性都应用于表本身,而不是其单元格。
4、表的创建通常,一次性插入指定行数和列数,Table的细节,随后再细化。
(1)创建Table
uses RVTable;
...
var table:TRVTableItemInfo;
...
table := TRVTableItemInfo.CreateEx(RowCount, ColumnCount, RVData);
RowCount是创建表行数
ColumnCount是创建表列数,在表中表数是不可变的,所有行中列数据是相等的。
RVData是一个您希望插入表的富视图文档。通常这是richview.RVData或richviewedit.RVData。
(2)将Table以ITEM插入文档
function InsertItem(const Name: TRVUnicodeString; Item: TCustomRVItemInfo): Boolean;
//将表格添加到文档中
RichViewEdit1.InsertItem('', Table);
注意:插入Table后,在文档中就是一个ITEM,由Table构成的ITEM,自成一个段落。
如果文档是只读的,或者由于文本保护而无法插入,则此方法可能返回False。在这种情况下,InsertItem方法释放了表。
三、表的组件Cell单元
表的行、列交叉点,就是Cell单元。
1、Cell属性
2、Cell内部可以嵌套Table表格
3、Cell的显示,取决于Cell内的文档样式
4、Cell的访问
Cell的行由0至RowCount-1;
Cell的列由0至ColCount-1;
通常地列值,读取访问:
with table.Cells[r,c] do
begin
Clear;
AddNL('hello!', 0, 0);
end;
也可使用行列循环访问Cell:
for Row := 0 to Table.RowCount - 1 do
for Col := 0 to Table.ColCount - 1 do
Table.Cells[Row, Col].AddFmt('%d,%d', [Row, Col], 0, 0);
四、创建表的实例
procedure TForm1.Button1Click(Sender: TObject);
var
Table: TRVTableItemInfo;
Row, Col: Integer;
begin
//创建5行4列的表格
Table := TRVTableItemInfo.CreateEx(5, 4, RichViewEdit1.RVData);
//设置表格边框和背景色
Table.Color := clNone;
Table.BorderStyle := rvtbColor;
Table.CellBorderStyle := rvtbColor;
Table.BorderWidth := 1;
Table.CellBorderWidth := 1;
//添加表格数据
for Row := 0 to Table.RowCount - 1 do
for Col := 0 to Table.ColCount - 1 do
begin
Table.Cells[Row, Col].BestWidth := 60;
Table.Cells[Row, Col].BestHeight := 20;
Table.Cells[Row, Col].Color := clCream;
Table.Cells[Row, Col].Clear;
Table.Cells[Row, Col].AddFmt('%d,%d', [Row, Col], 0, 0);
end;
//合并单元格(从第1行第2列开始,合并2列3行)
Table.MergeCells(0, 1, 2, 3, True);
//合并后单元格包括[0,1][0,2][1,1][1,2][2,1][2,2]
Table.Cells[0, 1].Clear;
Table.Cells[0, 1].AddNL('单元格索引[0,1]', 0, 0);
Table.Cells[0, 1].AddFmt('RowSpan = %d', [Table.Cells[0, 1].RowSpan], 0, 0);
Table.Cells[0, 1].AddFmt('ColSpan = %d', [Table.Cells[0, 1].ColSpan], 0, 0);
//将表格添加到文档中
RichViewEdit1.InsertItem('', Table);
end;