Delphi FMX StringGrid 运行时增加列

Delphi FMX StringGrid 运行时增加列

一般是读取某个数据源,按数据源的列数来动态生成对应数量的列。


while StringGrid2.ColumnCount  < FDQuery2.FieldCount do    begin
           
           with TStringColumn.Create(StringGrid2) do begin
                Parent := StringGrid2;
                Width := 60;
                Header := FDQuery2.Fields[StringGrid2.ColumnCount-1].DisplayName;
                        //FDQuery2.Fields[0].DisplayName;

                        //FDQuery2.FieldList.Fields[0].DisplayName;

                         // FDQuery2.FieldList.Fields[0].DisplayLabel;
           end;
       end;

或者

StringGrid2.Columns.AddObject(TStringColumn.Create(StringGrid2));

StringGrid2.Columns[StringGrid2.ColumnCount-1].Header := FDQuery2.Fields[StringGrid2.ColumnCount-1].DisplayName;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先说下控件功能如下: 1,可以设置固定行 和固定.固定行和是任何时候不许编辑的,但是可以代码修改设置 2,可以设置背景色(包括固定好和表格内部背景色,非固定单元格背景只对新建单元格有效) 3,可以合并单元格(横向竖向均可合并,支持横竖同时合并单元格效果) 4,边框线宽度可以设置(外边框线,内边框线可以分开设置) 5,边框颜色可以设置(内外线色可以设置不同颜色) 6,可以设置编辑状态(此属性是新建单元格属性,只对新建单元格生效) 7,只读属性(针对所有非固定单元格) 8,随时可以设置行数和数(减少的话,末尾待减少储存数据会丢失) 9,增加是否立即刷新参数,可以在大量输入录入时快速执行 下面是单元格单独属性设置介绍 1,可以储存字符串 2,可以储存整数 3,可以储存文本(默认单元格内显示[DEMO],可以编辑实际内容或读取实际内容) 4,可以储存字符串表(可以设置读取选择字符串) 5,可以储存日期(格式2018-07-06) 6,可以储存时间(格式10:26:32,设置智能设置到时分,直接赋值可以包含更精确单位) 7,可以设置日期(格式包含以上格式,设置同上.直接赋值可以保存更精确单位) 8,可以储存颜色(显示以保存颜色显示) 9,单元格字体,所有字体设置均支持(包含颜色,字体,换行,对齐等属性) 10,背景可以单独设置 10,可以单独设置是否允许编辑 详细使用请看使用说明
DelphiStringGrid 控件中,合并需要以下步骤: 1. 确定要合并的范围,例如从第二到第四。 2. 在 StringGrid 的 OnDrawCell 事件中编写代码,合并指定范围的单元格。 3. 在合并单元格时,需要注意调整合并后单元格的宽度和对齐方式。 下面是一个示例代码,可以将第二到第四的单元格合并为一个单元格: ```delphi procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if (ACol = 1) and (ARow = 0) then begin StringGrid1.Canvas.FillRect(Rect); StringGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, '标题'); StringGrid1.Canvas.FillRect(Rect); end else if (ACol >= 2) and (ACol <= 4) and (ARow = 0) then begin StringGrid1.Canvas.FillRect(Rect); StringGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, '合并单元格'); StringGrid1.Canvas.FillRect(Rect); StringGrid1.ColWidths[ACol] := 0; StringGrid1.ColWidths[ACol + 1] := 0; StringGrid1.ColWidths[ACol + 2] := 0; StringGrid1.ColWidths[ACol] := Rect.Right - Rect.Left + 1; StringGrid1.Cells[ACol, ARow] := '合并单元格'; StringGrid1.Cells[ACol + 1, ARow] := ''; StringGrid1.Cells[ACol + 2, ARow] := ''; StringGrid1.Canvas.Font.Style := [fsBold]; StringGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, '合并单元格'); StringGrid1.Canvas.Font.Style := []; StringGrid1.Canvas.Brush.Color := clBtnFace; StringGrid1.Canvas.FillRect(Rect); StringGrid1.Canvas.Pen.Color := clGray; StringGrid1.Canvas.MoveTo(Rect.Left, Rect.Top); StringGrid1.Canvas.LineTo(Rect.Right, Rect.Top); StringGrid1.Canvas.MoveTo(Rect.Left, Rect.Bottom); StringGrid1.Canvas.LineTo(Rect.Right, Rect.Bottom); end; end; ``` 这段代码中,我们在 StringGrid 的 OnDrawCell 事件中判断当前单元格是否需要合并,如果是则进行合并操作。其中,我们需要调整合并后单元格的宽度和对齐方式,以保证合并后的单元格显示效果正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值