最近项目涉及一些复杂表格显示的实现,尝试使用Dev Express的cxGrid控件多次还是没法实现想要的效果,后来发现,TMS开发组件包的TAdvStringGrid可以实现效果。这里举例来说明一下,例如,需要实现如下效果:
如上所示是一个3行4列的表格,其中,第一行的1、2列合并,第2行的2、3列合并,下面使用TAdvStringGrid来实现,步骤如下:
1. 新建一个VCL窗口项目,布局界面
添加TAdvStringGrid控件,默认它是一个5列10行的空白表格,这里需要自定义数据,这里修改它的ColCount和RowCount属性为0,但是,默认还是一个1列1行的空白表格,这里可以不用理会。
按钮"显示数据"点击后,就显示如上效果的表格。
2. 实现如上Excel表格展示效果
procedure TForm1.btn1Click(Sender: TObject); var count: Integer; begin // AdvStringGrid1.ColCount := 0; AdvStringGrid1.RowCount := 0; // 初始化行列 (3行4列) for count := 0 to 1 do // 因为第一行是表格头,因此就2行,从0开始数,所以为2-1=1,行与列一样的道理。 begin AdvStringGrid1.AddRow; end; for count := 0 to 2 do begin AdvStringGrid1.AddColumn; end; AdvStringGrid1.MergeCells(0, 0, 2, 1); AdvStringGrid1.Cells[0, 0] := '1'; AdvStringGrid1.Cells[2, 0] := '2'; AdvStringGrid1.Cells[3, 0] := '3'; AdvStringGrid1.MergeCells(1, 1, 2, 1); AdvStringGrid1.Cells[0, 1] := '4'; AdvStringGrid1.Cells[1, 1] := '5'; AdvStringGrid1.Cells[3, 1] := '6'; AdvStringGrid1.Cells[0, 2] := '7'; AdvStringGrid1.Cells[1, 2] := '8'; AdvStringGrid1.Cells[2, 2] := '9'; AdvStringGrid1.Cells[3, 2] := '10'; end;
运行如下:
效果实现。
其他的TMS组件可以自己再尝试使用即可。