请选择 进入手机版 | 继续访问电脑版

大富翁Delphi开发技术网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12805|回复: 6

Delphi XE7中StringGrid组件的使用

  [复制链接]

970

主题

1459

帖子

4501

积分

论坛元老

Rank: 8Rank: 8

积分
4501
发表于 2014-9-19 20:21:10 | 显示全部楼层 |阅读模式
源码分享
支持版本: Delphi XE7 
资源分类: 控件 
发布平台: Windows 
转载地址: -

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
介绍

本文章介绍了Delphi XE7中StringGrid组件的使用FMX下的Grid类控件似乎不太尽如人意,可能是和官方的资料没有跟得上它的发行版本有关系。
以下讨论StringGrid的列表头及对齐方式。
先上个效果图:
171600135187022.jpg

FMX的列表头估计很多人都是用盒子上流传甚久的 AlignHeaders(StGrid: TStringGrid) 这个函数(在此感谢作者),其实这个函数也有不如意的地方。
具体表现为:用此函数生成的列表头标题文字,有一定机率在点击StringGrid的Cell格子时全部消失,当然这可能会有环境、版本等因素有关。
所以,这里我们直接修改一下它,或者如果不需要自定义列表头高度和样式的话,可以直接不用该函数。
以下为简单代码:注意工程中Uses: FMX.Grid, FMX.header
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   i,c,r: Integer;
  4.   Header: THeader;
  5.   sc: TStringColumn;
  6. begin
  7.   //首先生成[列]
  8.   for i := 0 to 3 do
  9.   begin
  10.     sc:=TStringColumn.Create(StringGrid1);
  11.     sc.Parent := StringGrid1;
  12.     sc.Width := StringGrid1.ClientWidth / 4-5;
  13.     sc.Header :='Align: Center'; //此处给列表头标题赋值
  14.   end;

  15.   //定义列表头的样式,如加粗、居中等。
  16.   Header := THeader(StringGrid1.FindStyleResource('header'));
  17.   Header.Height := 30;
  18.   for I := 0 to StringGrid1.ColumnCount-1 do
  19.     begin
  20.       with Header.Items[I] do
  21.       begin
  22.         TextAlign := TTextAlign(0); //标题对齐:0居中,1左,2右
  23.         //Text:='我是列表头标题';  //由于上面已赋值列表头,所以这里是不需要的。
  24.         StyledSettings:=[];
  25.         Font.Size := 12;   //标题文字大小
  26.         Font.Style := [TFontStyle.fsBold]; //标题样式风格,如加粗、下划线等
  27.       end;
  28.     end;

  29.   //填充数据
  30.   with StringGrid1 do
  31.   begin
  32.     RowCount := 20;
  33.     TextSettings.HorzAlign:=TTextAlign(0); //文字横向对齐:0居中,1左,2右
  34.     TextSettings.VertAlign:=TTextAlign(0); //文字纵向对齐:0居中,1左,2右
  35.     //TextSettings.FontColor:=TAlphaColor($FF0000);
  36.     //上面这句是改变文字颜色,在XE7下发现用代码改颜色会导致整体文字变白,所以
  37.     //只能在设计期内改(默认黑色,如果有需要改变文字颜色的话。)
  38.   end;
  39.   for c := 0 to StringGrid1.ColumnCount - 1 do
  40.     for r := 0 to StringGrid1.RowCount - 1 do
  41.         StringGrid1.Cells[c, r] := Format('%d,%d', [c, r]);
  42. end;
复制代码

如果不需要自定义列表头高度和样式的话,可以这样,列表头则使用默认样式:

  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   i,c,r: Integer;
  4.   Header: THeader;
  5.   sc: TStringColumn;
  6. begin
  7.   //首先生成[列]
  8.   for i := 0 to 3 do
  9.   begin
  10.     sc:=TStringColumn.Create(StringGrid1);
  11.     sc.Parent := StringGrid1;
  12.     sc.Width := StringGrid1.ClientWidth / 4-5;
  13.     sc.Header :='Align: Left'; //此处给列表头标题赋值
  14.   end;

  15.   //填充数据
  16.   with StringGrid1 do
  17.   begin
  18.     RowCount := 20;
  19.     TextSettings.HorzAlign:=TTextAlign(0); //文字横向对齐:0居中,1左,2右
  20.     TextSettings.VertAlign:=TTextAlign(0); //文字纵向对齐:0居中,1左,2右
  21.     //TextSettings.FontColor:=TAlphaColor($FF0000);
  22.     //上面这句是改变文字颜色,在XE7下发现用代码改颜色会导致整文字变白,所以
  23.     //只能在设计期内改(默认黑色,如果有需要改变文字颜色的话。)
  24.   end;
  25.   for c := 0 to StringGrid1.ColumnCount - 1 do
  26.     for r := 0 to StringGrid1.RowCount - 1 do
  27.         StringGrid1.Cells[c, r] := Format('%d,%d', [c, r]);
  28. end;
复制代码


转载请保留当前帖子的链接:http://www.dfwlt.com/forum.php?mod=viewthread&tid=1403 谢谢!

搜索简单,分享不易,且分享且珍惜,您难道不想分享下您的心得?如果觉得本文章好的话,您可以在我们网站上注册,然后发布您的好的心得,让大家共同进步,谢谢!

最新添加

回复

使用道具 举报

1

主题

10

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2014-9-28 17:21:50 | 显示全部楼层
多谢啊,正需要啊,一步一步学习进步啊
回复 支持 反对

使用道具 举报

7

主题

90

帖子

251

积分

中级会员

Rank: 3Rank: 3

积分
251
发表于 2015-3-28 07:48:03 | 显示全部楼层
第一列如何显示序号
回复 支持 反对

使用道具 举报

3

主题

4

帖子

87

积分

注册会员

Rank: 2

积分
87
发表于 2016-1-28 21:30:15 | 显示全部楼层
StyledSettings := []; // 如果没有这句,则字体大小,颜色不会改变
回复 支持 反对

使用道具 举报

0

主题

1

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2016-3-16 11:57:46 | 显示全部楼层
谢谢,分享,下功夫了。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

24

积分

新手上路

Rank: 1

积分
24
发表于 2017-5-8 08:04:34 | 显示全部楼层
回复

使用道具 举报

5

主题

193

帖子

2641

积分

金牌会员

Rank: 6Rank: 6

积分
2641
发表于 2017-5-23 06:21:31 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

申请友链|Archiver|手机版|小黑屋|大富翁Delphi开发技术网站 ( 苏ICP备12065705号-4

GMT+8, 2017-12-14 10:38 , Processed in 0.109007 second(s), 34 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表