You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi FireMonkey中TStringGrid填充无数据问题求助

解决Delphi多设备应用中TStringGrid不显示数据的问题

我来帮你一步步排查和解决这个常见的StringGrid显示问题:

核心问题分析

你的代码里已经设置了Cells值但看不到内容,大概率是StringGrid的行数不足,或者循环根本没执行——这是使用TStringGrid时最容易踩的坑之一。

具体修复步骤

1. 先确保StringGrid有足够的行数

不管是VCL还是FMX的TStringGrid,默认RowCount通常只有1(仅包含第0行)。如果你的循环要生成到p2-1行,必须先把RowCount设置为p2,否则那些目标行根本不存在,设置Cells自然不会有任何显示。

在代码开头添加这行:

// 确保行数覆盖你需要的所有行,p2是你要生成的总行数(包含第0行)
StringGrid1.RowCount := p2;

如果是FMX的StringGrid,你已经设置了ColumnCount=4,这部分没问题,但可以再确认下Visible属性是开启状态(默认是开启的)。

2. 检查循环的执行条件

你的循环是for n1 := 1 to p2-1 do,如果p2的值是1,那循环范围就变成了1 to 0,循环会直接跳过,动态数据根本不会生成。

  • 先确认p2的取值是否正确:比如你想生成3行(第0、1、2行),那p2应该设为3,这样循环会执行2次。
  • 也可以给循环加个判断,避免无效执行:
if p2 > 1 then
begin
  for n1 := 1 to p2-1 do 
  begin
    // 你的赋值代码
  end;
end;

3. 验证第0行的显示问题

如果第0行的硬编码数据也不显示,除了行数问题,还要检查:

  • 列宽是否足够:如果列宽设为0,内容会被完全隐藏。可以手动拖动列宽,或者用代码设置:
StringGrid1.Columns[0].Width := 100;
StringGrid1.Columns[1].Width := 100;
StringGrid1.Columns[2].Width := 100;
StringGrid1.Columns[3].Width := 100;

4. 额外调试技巧

可以加一些调试输出,确认循环是否执行、List3的内容是否正确:

// 检查p2的实际值
ShowMessage('p2的值是:' + IntToStr(p2));
// 检查List3的元素内容
ShowMessage('List3[0]:' + List3[0] + #13#10 + 'List3[1]:' + List3[1]);

完整修复后的示例代码

// 先设置足够的行数
StringGrid1.RowCount := p2;
// 确保列宽足够显示内容
StringGrid1.Columns[0].Width := 100;
StringGrid1.Columns[1].Width := 100;
StringGrid1.Columns[2].Width := 100;
StringGrid1.Columns[3].Width := 100;
// 设置第0行的硬编码数据
StringGrid1.Cells[0,0] := 'adc';
StringGrid1.Cells[1,0] := 'efg';
StringGrid1.Cells[2,0] := 'hij';
// 循环生成动态数据(确保p2>1才执行)
if p2 > 1 then
begin
  for n1 := 1 to p2-1 do 
  begin
    StringGrid1.Cells[3,n1] := Trim(List3[0]);
    StringGrid1.Cells[0,n1] := Trim(List3[1]);
    StringGrid1.Cells[1,n1] := Trim(List3[2]);
    StringGrid1.Cells[2,n1] := Trim(List3[3]);
  end;
end;
// 强制刷新(大部分情况不需要,但可以加上确保显示)
StringGrid1.Repaint;

内容的提问来源于stack exchange,提问作者Tony Taylor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:22:34