http://blog.sina.com.cn/game7788
夸父
Table(表格)
table是RICHVIEW里面一個(gè)比較特殊的元素,也是RICHVIEW眾元素中最復(fù)雜的一種,TABLE由單元格組成,在RICHVIEW里,每個(gè)單元格相當(dāng)于一個(gè)RICHVIEW文檔,單元格里面可以表格等各種元素,理論上表格是可以無限嵌套,這樣的結(jié)構(gòu)就導(dǎo)致了其復(fù)雜性。
Table屬性
BorderWidth 表的邊框長(zhǎng)度
BorderStyle 邊框樣式
BorderColor 邊框顏色
BorderLightColor 3D外觀邊框顏色
VisibleBorders 邊框的顯示和隱藏
CellBorderWidth 單元格邊框長(zhǎng)度
CellBorderStyle 單元格邊框樣式
CellBorderColor 單元格邊框顏色
CellBorderLightColor 3D外觀單元格邊框顏色
CellHSpacing 單元格之間的水平距離
CellVSpacing 單元格之間的垂直距離
BorderHSpacing 表邊框與表最外層單元格之間的水平距離
BorderVSpacing表邊框與表最外層單元格之間的垂直距離
Color 表的背景色
BackgroundImage 背景圖
BackgroundStyle 背景樣式
BackgroundImageFileName 在HTML中保存背景圖名
Table方法
InsertColsLeft 當(dāng)前單元格左邊增加列
InsertColsRight 當(dāng)前單元格右邊增加列
InsertRowsAbove當(dāng)前單元格上面增加行
InsertRowsBelow 當(dāng)前單元格下面增加行
DeleteSelectedCols刪除選中列
DeleteSelectedRows刪除選中行
MergeSelectedCells 合并單元格
UnmergeSelectedCells拆分單元格
SplitSelectedCellsHorizontally 將選中的單元格拆分成幾行
SplitSelectedCellsVertically 將選中的單元格拆分成幾列
InsertCols 指定位置增加列
InsertRows 指定位置增加行
DeleteCols 刪除指定列
DeleteRows 刪除指定行
MergeCells 合并指定范圍內(nèi)的單元格
UnmergeCells 拆分指定范圍內(nèi)的單元格
DeleteEmptyRows 刪除所有帶有空單元各的行
DeleteEmptyCols 刪除所有帶有空單元各的列
TABLE用法
創(chuàng)建
...
var table:TRVTableItemInfo;
...
table := TRVTableItemInfo.CreateEx(RowCount,ColumnCount,RVData);
RVData是你要?jiǎng)?chuàng)建表的文檔,一般是指richview.RVData或richviewedit.RVData
RICHVIEW中增加表
table.ParaNo := <Paragraph Style Index>
richview.AddItem(<Table name>, table)
Paragraph Style Index 是這個(gè)表的索引值
Table name 表的名字,一個(gè)字符串,不是指這個(gè)對(duì)象名
這個(gè)方法不用在顯示文檔之前重新格式化。
richviewedit中增加表
richviewedit.InsertItem(<Table name>, table)
這個(gè)方法是在當(dāng)前位置加入表,不管光標(biāo)在文檔中,還是在表格或者單元格中(光標(biāo)在哪就加到哪),如果文檔是只讀或者處于保護(hù)狀態(tài),用這個(gè)方法后,會(huì)返回一個(gè)FALSE,如果光標(biāo)在表格中,這個(gè)方法將自動(dòng)釋放表格
cell用法
cell(單元格)是表格的主屬性,因?yàn)槊總(gè)CELL相當(dāng)于一個(gè)RICHEDIT,所以用法和RICHEDIT差不多,但要注意的事,這些用法一般只是相對(duì)于光標(biāo)當(dāng)前所以的位置,也就是說,如果光標(biāo)在表格里,同樣的方法就是對(duì)表格的作用,如果在表格外,就是對(duì)外面的RICHEDIT的作用,如果一個(gè)文檔里面同時(shí)有多個(gè)表格的時(shí)候,光標(biāo)在任意地方,你想往某個(gè)表格中的某個(gè)單元格輸入內(nèi)容時(shí),這時(shí)就要自己判斷地方了。這是因?yàn),?dāng)光標(biāo)點(diǎn)某個(gè)地方時(shí),RICHEDIT實(shí)際上已經(jīng)幫你判斷好了位置。
那么,如何在一個(gè)文檔的表格里面的指定的一個(gè)單元格里面,輸入自己的內(nèi)容呢?
假設(shè)現(xiàn)在有一個(gè)文檔,里面有一個(gè)表格(多個(gè)表格大家自己去想,方法一樣)
,這個(gè)表格里面有二個(gè)單元格,我現(xiàn)在想在第二個(gè)單元格中輸入‘我愛你’三個(gè)字,并且此時(shí)光標(biāo)在任意地方,下面是最簡(jiǎn)單實(shí)現(xiàn)方法
for i:= 0 to itemcount -1 do
begin
if getitem(i) is TRVTableItemInfo then
begin
RVData:=TRVTableItemInfo(item).cells[0,1].AddNLATag('我愛你', 0, 0, '');
break;
end;
end;
如果此時(shí)的單元格你不知道多少個(gè),可以用遍歷表格單元格方法,如下,我要得到表格中,每個(gè)單元格的中的文字
for row := 0 to TRVTableItemInfo(item).RowCount-1 do
begin
for col := 0 to table.ColCount-1 do
if table.Cells[row,col]<>nil then
begin
RVData := table.Cells[row,col].GetRVData;//得到第一個(gè)單元格內(nèi)容
for i := 0 to RVData.ItemCount-1 do //開始遍歷格子中的元素,和RICHEDIT一樣
begin
if (i>0) and RVData.IsFromNewLine(i) then
Result := Result + #13#10;
if RVData.GetItemStyle(i)=rvsTab then
Result := Result + #9
else if RVData.GetItemStyle(i)>=0 then
Result := Result + RVData.GetItemText(i);//得到第一個(gè)單元格的文字
end;
Result := Result + table.TextColSeparator;//遍歷第一行的所有格子,值相加
end;
Result := Result + table.TextRowSeparator;//遍歷所有行的格子,值相加,最終得到每個(gè)格子的值
end;
|