FMX下的Grid类控件似乎不太尽如人意,可能是和官方的资料没有跟得上它的发行版本有关系。

以下讨论StringGrid的列表头及对齐方式。

先上个效果图:

FMX的列表头估计很多人都是用盒子上流传甚久的 AlignHeaders(StGrid: TStringGrid) 这个函数(在此感谢作者),其实这个函数也有不如意的地方。

具体表现为:用此函数生成的列表头标题文字,有一定机率在点击StringGrid的Cell格子时全部消失,当然这可能会有环境、版本等因素有关。

所以,这里我们直接修改一下它,或者如果不需要自定义列表头高度和样式的话,可以直接不用该函数。

以下为简单代码:注意工程中Uses: FMX.Grid, FMX.header

procedure TForm1.Button1Click(Sender: TObject);
var
i,c,r: Integer;
Header: THeader;
sc: TStringColumn;
begin
//首先生成[列]
for i := 0 to 3 do
begin
sc:=TStringColumn.Create(StringGrid1);
sc.Parent := StringGrid1;
sc.Width := StringGrid1.ClientWidth / 4-5;
sc.Header :='Align: Center'; //此处给列表头标题赋值
end; //定义列表头的样式,如加粗、居中等。
Header := THeader(StringGrid1.FindStyleResource('header'));
Header.Height := 30;
for I := 0 to StringGrid1.ColumnCount-1 do
begin
with Header.Items[I] do
begin
TextAlign := TTextAlign(0); //标题对齐:0居中,1左,2右
//Text:='我是列表头标题'; //由于上面已赋值列表头,所以这里是不需要的。
StyledSettings:=[];
Font.Size := 12; //标题文字大小
Font.Style := [TFontStyle.fsBold]; //标题样式风格,如加粗、下划线等
end;
end; //填充数据
with StringGrid1 do
begin
RowCount := 20;
TextSettings.HorzAlign:=TTextAlign(0); //文字横向对齐:0居中,1左,2右
TextSettings.VertAlign:=TTextAlign(0); //文字纵向对齐:0居中,1左,2右
//TextSettings.FontColor:=TAlphaColor($FF0000);
//上面这句是改变文字颜色,在XE7下发现用代码改颜色会导致整体文字变白,所以
//只能在设计期内改(默认黑色,如果有需要改变文字颜色的话。)
end;
for c := 0 to StringGrid1.ColumnCount - 1 do
for r := 0 to StringGrid1.RowCount - 1 do
StringGrid1.Cells[c, r] := Format('%d,%d', [c, r]);
end;

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

procedure TForm1.Button1Click(Sender: TObject);
var
i,c,r: Integer;
Header: THeader;
sc: TStringColumn;
begin
//首先生成[列]
for i := 0 to 3 do
begin
sc:=TStringColumn.Create(StringGrid1);
sc.Parent := StringGrid1;
sc.Width := StringGrid1.ClientWidth / 4-5;
sc.Header :='Align: Left'; //此处给列表头标题赋值
end; //填充数据
with StringGrid1 do
begin
RowCount := 20;
TextSettings.HorzAlign:=TTextAlign(0); //文字横向对齐:0居中,1左,2右
TextSettings.VertAlign:=TTextAlign(0); //文字纵向对齐:0居中,1左,2右
//TextSettings.FontColor:=TAlphaColor($FF0000);
//上面这句是改变文字颜色,在XE7下发现用代码改颜色会导致整文字变白,所以
//只能在设计期内改(默认黑色,如果有需要改变文字颜色的话。)
end;
for c := 0 to StringGrid1.ColumnCount - 1 do
for r := 0 to StringGrid1.RowCount - 1 do
StringGrid1.Cells[c, r] := Format('%d,%d', [c, r]);
end;

PS:
--------------------------------------------------------------- 
FireMonkey移动开发可加QQ群:165232328 (本人非管理员,仅仅其中一成员,此群高手林立,期待各位Delphi爱好者共同交流)。 

 

XE7 & FMX 那些年我们一起上过的控件:StringGrid 之(1) 自定义标题样式的更多相关文章

  1. XE7 & FMX 那些年我们一起上过的控件:ListView 之 (3) 加载数据时如何显示自定义样式

    本文介绍一下ListView下如何加载数据.及使用进度条反馈当前进度给用户. 注意: 原创作品,请尊重作者劳动成果,转载请注明出处!!!原文永久固定地址:http://www.cnblogs.com/ ...

  2. [Xcode 实际操作]四、常用控件-(5)UILabel文本标签自定义文字样式

    目录:[Swift]Xcode实际操作 本文将演示给标签对象添加描边效果,在项目文件夹上,点击鼠标右键菜单, 选择[Create File]->[Cocoa Touch Class]->[ ...

  3. 在此页上的ActiveX控件和本页上的其他部分的交互可能不安全,你想允许这种交互吗

    转自 http://www.cnblogs.com/zdxster/archive/2011/01/27/1945868.html 在EOS6的项目中,如果采用VC++开发的ActiveX,那么第一次 ...

  4. 在Web上调用Ocx控件

    原文:http://blog.csdn.net/goodadult2012/article/details/6343369 在HTML页面中使用ActiveX控件包含三个基本操作:将控件放入HTML中 ...

  5. (转)C# WinForm中 获得当前鼠标所在控件 或 将窗体中鼠标所在控件名显示在窗体标题上

    原文地址:http://www.cnblogs.com/08shiyan/archive/2011/04/14/2015758.html /********************** * 课题:将窗 ...

  6. 兼容IE浏览器样式的html上传文件控件

    最近在公司做项目时需要用到html的上传文件控件,但发现原生的上传文件控件<input type="file" />在IE.Chrome浏览器的显示效果相差很大,为了统 ...

  7. WPF解决按钮上被透明控件遮盖时无法点击问题

    原文:WPF解决按钮上被透明控件遮盖时无法点击问题 IsHitTestVisible="False" 在控件上设置如上属性即可,即可让透明控件不触发点击效果

  8. Vue的 $parent,并不能准确找到上一层的控件,所以如果需要,需要填坑这个 bug,递归寻找下上级

    Vue的 $parent,并不能准确找到上一层的控件,所以如果需要,需要填坑这个 bug,递归寻找下上级 // Find components upward function findComponen ...

  9. 在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息http://xqy266.blogbus.com/logs/66258230.html 在EOS6的项目中,如果采用VC++开发的Active ...

随机推荐

  1. 深入浅出 Java Concurrency (12): 锁机制 part 7 信号量(Semaphore)

      Semaphore 是一个计数信号量.从概念上讲,信号量维护了一个许可集.如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可.每个 release() 添加一个许可,从而可能 ...

  2. svn使用常用错误

    描述 :SVN更新提交显示文件被锁异常: Working copy XXXXXXXX locked Please execute "Cleanup" command 原因 : 待查 ...

  3. Foglight 5.6.7 控制台jboss报404

    Foglight 5.6.7 控制台jboss报404 [终极问题原来就一数据库权限问题!下文是由问题源找到的类似的dell support的相关文章,但却是关于sql server error的,感 ...

  4. 你所不知道的javascript数组特性

    工作中,我们经常使用js的数组,但是,下面的东西你见过吗? 1,文本下标: var a=[]; a[-1]=1; 你想过数组的下标为负数的情况吗?我们对数组的下标规定从0开始.但是上面那么写也还是可以 ...

  5. JavaScript Post提交数据并跳转到页面(模拟Form表单提交)

    function GotoWatchTicketCode() { var orderID='@ViewBag.OrderInfo.OrderID'; var phoneNum='@ViewBag.Or ...

  6. sql之分区域分段统计

    sql之分区域分段统计 需求:在一个表中,有两列分别标记行政区划代码和家庭成员人数,需要得到不同乡镇的家庭成员人数在1-2人,3-4人,5-6人,6人以上的家庭数的表格 思路: 用case when对 ...

  7. leetcode575

    public class Solution { public int DistributeCandies(int[] candies) { var dic = new Dictionary<in ...

  8. Spring IOC基础

    2.1.1 IOC是什么IOC—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的 ...

  9. Callable接口使用以及计算斐波那契数字的数值总和

    一.简单使用 Runnable是执行工作的独立任务,但是它不返回任何值.如果你希望任务完成的时能够返回一个值,那么可以实现一个Callable接口.在Java SE5中引入的Callable是一种具有 ...

  10. Oracle 下基于 DBMS_RESOURCE_MANAGER 包估算数据库存储 IO 性能

    :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { border: 0; m ...