XE7之常用控件:StringGrid

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爱好者共同交流)。 

 

时间: 2024-10-05 00:19:38

XE7之常用控件:StringGrid的相关文章

iOS学习-其他常用控件

1 // 2 // ViewController.m 3 // 其他常用控件 4 // 5 // Created by 大欢 on 16/1/25. 6 // Copyright © 2016年 bjsxt. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 11 @interface ViewController () 12 13 @property (weak, nonatomic) IBOutlet UILab

iOS常用控件尺寸大集合

元素控件 尺寸(pts) Window(含状态栏) 320 x 480 Status Bar的高度 20 Navigation Bar的高度 44 含Prompt的Navigation Bar的高度 74 Navigation Bar的图标 20×20(透明的png) Tool Bar的高度 44 Tool Bar的图标 20×20(透明的png) Tab Bar的高度 49 Tab Bar的图标 30×30(透明的png) 竖直时键盘的高度 216.252(iOS 5+的中文键盘) 水平时键盘

B/S一些小知识及常用控件

一: B/S网页的运行 页面在设计的时候,本身就是一个类.在运行的时间,是一个对象. 其中aspx和aspx.cs是在同一个类下. aspx是主要是负责界面,而aspx.cs主要是负责数据逻辑. 呈现:把页面上所有的控件对象,转化成HTML标签.  内存中的对象--->HTML ** 规范 **: 以后写代码的时候,在Page_Load方法中,99%的代码需要写在 if (!IsPostBack) { } IsPostBack——页面初始加载-false;表单提交加载-true 页面初始加载的情

Android常用控件:进度条

各种进度条属于 ProgressBar的子类 Sytle: 水平风格:Horizontal小风格:Small大风格:Large反向风格:Inverse小反向风格:Small.Inverse大反向风格:Large.Inverse 设置style:   style="?android:attr/progressBarStyle..." 主要属性:最大值:max当前进度:progress次要进度值:SecondaryProgress --效果类似于看电影那些缓冲 判断进度条是转圈还是水平的方

android快速上手(三)常用控件使用

完成了android的第一个程序HelloWorld,下面就开始控件的学习,下面是一些常见的控件. (一)TextView 简单的文本描述 (二)EditText 编辑框,输入文字信息 (三)Button 按钮,点击后会触发点击事件,可以对事件进行处理 (四)ImageView 图片控件,可以加载图片显示 (五)ListView 列表,需要跟适配器Adapter结合,适配器提供数据 (六)Toast 闪现提示语,常用于普通的提示文本,只显示一小段时间自动消失 (七)ScrollView 一般用于

android内部培训视频_第三节(3)_常用控件(ViewPager、日期时间相关、ListView)

第三节(2):常用控件之ViewPager.日期时间相关.ListView  一.ViewPager 实例:结合PagerAdapter滑动切换图片  二.日期时间相关:AnalogClock\DigitalClock\DatePicker\TimerPicker\DatePickerDialog\TimePickerDialog 三.ListView 实例1:城市选择器 实例2:自定义列表项 百度网盘视频下载地址:http://pan.baidu.com/s/1c0ip6la android内

GUI创建各常用控件(二)

继续接着上一篇! 在我看来有一点需要申明:由于是GUI的相关知识,所以我只是在复习中粗略的总结而已,因此参考价值可能有限,更多的是当作自己学习的一个记录以及便于自己查阅. 好啦!干货继续: 1.类似于GUI.Box(new Rect(Screen.width/2,Screen.height/2,Screen.width/2,Screen.height/2),   new GUIContent("This is a title","hahaha"));的命令:   其

Android support library支持包常用控件介绍(一)

谷歌官方推出Material Design 设计理念已经有段时间了,为支持更方便的实现 Material Design设计效果,官方给出了Android support design library 支持库,让开发者更容易的实现材料设计的效果.顺便推荐官方的一个图标库:Material Icons 控件名称 NavigationView FloatingActionButton TextInputLayout Snackbar TabLayout AppBarLayout Coordinator

C# 常用控件及单击事件

1.窗体 1.常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体. (2)WindowState属性: 用来获取或设置窗体的窗口状态. 取值有三种: Normal (窗体正常显示). Minimized(窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示). (3)StartPosition属性:用来获取或设置运行时窗体的起始位置.(System.Windows.Forms.SystemInformation.WindowsArea.