結合最近自己做的一些工作,用到了第三方控件AdvStringGrid,這里就常用的一些技巧做個小小的總結
(1)如何設置表格固定的列數,如下圖所示:
AdvStringGrid.FixedCols:=n;(n為要固定的列數值)
(2)如何從AdvStringGrid中讀取和向AdvStringGrid中導入值:
AdvStringGrid.Cells[j,i]:=str;(向其單元格賦值)這里需要注意的是,j為列數,i為行數。
(3)如何在運行界面中手動調整列寬與行寬,效果圖如下所示:
Options -> goColsizing:=true 列寬
Options -> goRowsizing:=true 行寬
(4)如何使文字換行,並垂直居中,效果圖如下:
把goRowsizing設置為true后,將WordWrap也設置為true;
(5)如何使列寬根據單元格內容與列標題內容自動調整列寬
AdvStringGrid2.AutoSizeColumns(true,4);4代表前后留出的字節數。
(6)如何下AdvStringGrid中添加CheckBox,並判斷其是否被選中的狀態,效果圖如下:
在窗體創建單元添加如下代碼:
for i:=1 to AdvStringGrid3.rowcount-1 do
begin
AdvStringGrid3.AddCheckBox(2,i,false,false);
end;
那么如何判斷其是否被選取,並讀取其中的值,參考代碼如下:
var
flag:boolean;
for j:=1 to m do (m為表格的行數)
begin
AdvStringGrid3.GetCheckBoxState(2,j,flag);
if flag then
begin
…………
end;
(7)如何調整單元格總字體的顏色,比如對於一些異常數據希望顯示為紅色,效果圖如下:
編輯代碼如下:
AdvStringGrid2.FontColors[21,j]:=clred;
(8)如何合並單元格:
這里我所采用的方法是,把所有數據采集完了以后再合並單元格,合並后的效果圖如下:
合並的具體思路是這樣的,先定義一個數組類型,把每列中值不一樣的初始位置記錄下來,然后再進行合並,參考代碼如下:
i:=0;
setlength(ipos,100);
for j:=1 to m do
begin
if AdvStringGrid2.Cells[0,j]<>AdvStringGrid2.Cells[0,j+1] then
begin
ipos[i]:=j;
i:=i+1;
end;
end;
AdvStringGrid2.MergeCells(0,1,1,ipos[0]);
AdvStringGrid2.MergeCells(23,1,1,ipos[0]);
AdvStringGrid2.MergeCells(24,1,1,ipos[0]);
if i>1 then
begin
for j:=0 to i-2 do
begin
AdvStringGrid2.MergeCells(0,ipos[j]+1,1,ipos[j+1]-ipos[j]);
AdvStringGrid2.MergeCells(23,ipos[j]+1,1,ipos[j+1]-ipos[j]);
AdvStringGrid2.MergeCells(24,ipos[j]+1,1,ipos[j+1]-ipos[j]);
end;
end;
(9)如何清空表格
使用Clear過程
AdvStringGrid2.Clear;
(10)如何使單元格的所有內容居中顯示
AdvStringGrid2.VAlignment:=vtacenter;
for j:=0 to m do//TabSheet2所有單元格顯示居中
begin
for i:=0 to AdvStringGrid2.ColCount-1 do
begin
AdvStringGrid2.Alignments[i,j]:=TaCenter;
end;
end;