Delphi StringGrid 实例5 本例功能:字体修改为居中,红色,20号


本文整理自网络,侵删。

 
StringGrid 实例5 本例功能:字体修改为居中,红色,20号
实例5
本例功能:
在FireMonkey中StringGrid对于字体的调整由于没有font属性和onDrawCell事件使得变得有些麻烦,后来费了一些功夫才找到方法。但由于XE3中某些属性还是没有,(比如说:StGrid.RealignContent;)于是下载了XE4才得以修改成功。
 1、字体修改为居中,红色,20号
 运行效果图:


unit Unit22;
interface
uses
 System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
 System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs,
 FMX.StdCtrls, FMX.Grid, FMX.Layouts, FMX.Header, Data.DB, Datasnap.DBClient;
type
 TForm22 = class(TForm)
    StringGrid1: TStringGrid;
    Header1: THeader;
    StyleBook1: TStyleBook;
    StringColumn1: TStringColumn;
    StringColumn2: TStringColumn;
    StringColumn3: TStringColumn;
    procedure FormCreate(Sender: TObject);
    procedure ChangeGridFont;
    procedure GridCellStyle_alRight(Sender: TObject);

 private

    { Private declarations }

 public

    { Public declarations }

 end;

 

var

 Form22: TForm22;

 

implementation

 

{$R *.fmx}

procedure AlignHeaders(StGrid: TStringGrid);

var Header: THeader;

    I: Integer;

begin

 Header := THeader(StGrid.FindStyleResource('header'));

 if Assigned(Header) then

 begin

    for I := 0 to Header.Count - 1 do

    begin

      Header.Items[I].TextAlign := TTextAlign(0);

      Header.Items[I].StyledSettings:=[];   //如果没有这句,则字体大小,颜色不会改变

      with Header.Items[I].Font do

      begin

         Size := 22;

         Style := [TFontStyle.fsBold];

      end;

    end;

    Header.Height := 48;

 end;

 StGrid.RealignContent;

end;

 

 

procedure TForm22.FormCreate(Sender: TObject);

var i,j:integer;

begin

      AlignHeaders(StringGrid1);

        for i := 0 to StringGrid1.RowCount-1 do

            for j := 0 to StringGrid1.ColumnCount-1 do

                    StringGrid1.Cells[j,i]:=Format('第%d行,第%d列', [i,j]);;

                    ChangeGridFont;

 //StringGrid1.Columns[j].Width:=200;

 //StringGrid1.Columns[1].Width:=190;

//StringGrid1.Columns[2].Width:=80;

end;

 

procedure TForm22.GridCellStyle_alRight(Sender: TObject);

var

    TC: TTextCell;

begin

    AlignHeaders(StringGrid1);

    if ( Sender <> Nil ) and ( Sender is TTextCell ) then

    begin

      TC := TTextCell( Sender );

      TC.StyledSettings:=[];    //如果没有这句,则字体大小,颜色不会改变

      TC.FontColor := TAlphaColors.Red;

      TC.Font.Family := '宋体';

      TC.Font.Style := [ TFontStyle.fsBold, TFontStyle.fsItalic ];

      TC.Font.Size := 20;

      TC.TextAlign := TTextAlign.taLeading;

    end;

end;

 

procedure TForm22.ChangeGridFont;

var

       i: Integer;

       Col: Integer;

// Row: Integer;

 CellCtrl: TStyledControl;

begin

 for Col := 0 to StringGrid1.ColumnCount - 1 do

 begin

    for i := 0 to StringGrid1.Columns[Col].ChildrenCount - 1 do

    begin

          CellCtrl := TTextCell(StringGrid1.Columns[Col].Children[i]);

           if ( CellCtrl <> Nil ) and ( CellCtrl is TTextCell ) then

             TTextCell(CellCtrl).OnApplyStyleLookup := GridCellStyle_alRight;

    end;

 end;

end;

end.

来源:https://www.cnblogs.com/lingzhiwen/p/3322575.html

相关阅读 >>

Delphi 病毒

Delphi 读取网上的文本文件

Delphi try except与try finally不同之处

Delphi 日期相关总结20190702完结篇

Delphi 查找字符串并删除该字符串

Delphi copyrect实现的几个图片的转换效果

Delphi 禁止改变窗口大小和移动窗口

Delphi 中有 iif() 函数

Delphi中判断字符串是否为数字

windows 消息

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...