【问题标题】:plot stringgrid values on Tchart在 Tchart 上绘制 stringgrid 值
【发布时间】:2013-02-14 01:04:24
【问题描述】:

我正在尝试在我的Stringgrid 上绘制带有一些值的图表。它有 140x140 rowxCol,只有数字。 Tchart 应该在 X 轴上显示单元格坐标,在 y 轴上显示值。

我正在使用此代码:

procedure TForm2.Button2Click(Sender: TObject);
var 
  Count: Integer;
begin
  with StringGrid1 do
  begin
    for Count := 0 to RowCount-1 do
    begin
      Chart1.Series[0].AddXY(StrToFloat(Cells[0, Count]), 
                             StrToFloat(Cells[1, Count]), '', clTeeColor);
    end;
  end;
end;

但我不断收到此错误:'' is not a floating point value.

【问题讨论】:

  • 我们看不到您的字符串网格的数据,但您显然是在将空字符串转换为浮点值。在您传递给Cells 属性的坐标上检查字符串网格中的值。请注意,传递给 Cells 的索引是基于 0 的,并且包括固定单元格。
  • 为什么不从填充网格的来源填充图表?控件用于显示不存储它们的数据。将数据保存在扩展数组中,并从该数组中填充网格和图表。
  • 这些值是从 Excel 电子表格中导入的,很抱歉没有说出来,但我认为只要值在字符串中就没有关系。
  • 在循环之前尝试ShowMessage(StringGrid1.Cells[0, 0]);ShowMessage(StringGrid1.Cells[1, 0]);,请告诉我们你看到了什么。
  • 您需要学习如何使用您拥有的优秀调试器。如果您使用它,您会看到您正在将空字符串传递给 StrToFloat。请务必学习使用您的工具。

标签: delphi tstringgrid


【解决方案1】:

您正在将空字符串转换为浮点值,这自然是不可能的。我的猜测是您将错误的坐标传递给 Cells 属性。请注意,它们都是基于 0 的,并且它们还包括字符串网格的固定部分。这是Cells 坐标打印输出:

【讨论】:

  • 示范!比试图解释什么 fixed 行好得多,col 是用文字来解释的......
  • 那么我该如何从 [1,1] 开始循环呢?
  • 这就是你应该知道的。您已经用数据填充了该字符串网格。这只是我的猜测,您已经从坐标开始循环,固定的 col 和/或行在哪里,但是转换失败的空字符串可能在网格内的任何位置。
猜你喜欢
  • 1970-01-01
  • 2011-06-13
  • 2018-12-03
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
  • 2014-11-02
相关资源
最近更新 更多