最近项目涉及一些复杂表格显示的实现,尝试使用Dev Express的cxGrid控件多次还是没法实现想要的效果,后来发现,TMS开发组件包的TAdvStringGrid可以实现效果。这里举例来说明一下,例如,需要实现如下效果:
如上所示是一个3行4列的表格,其中,第一行的1、2列合并,第2行的2、3列合并,下面使用TAdvStringGrid来实现,步骤如下:
新建一个VCL窗口项目,布局界面
添加TAdvStringGrid控件,默认它是一个5列10行的空白表格,这里需要自定义数据,这里修改它的ColCount和RowCount属性为0,但是,默认还是一个1列1行的空白表格,这里可以不用理会。
按钮”显示数据”点击后,就显示如上效果的表格。
实现如上Excel表格展示效果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32procedure 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组件可以自己再尝试使用即可。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 linjk121@163.com.