list index out of bounds。。求指导

lahm_ 2012-11-29 11:13:06
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
with ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('Select*from mxs where 时间 between :a and :b order by 时间 ');
Parameters.ParamByName('a').Value:=formatdatetime('yyyy-MM-dd 00:00:00',datetimepicker1.Datetime);
Parameters.ParamByName('b').Value:=formatdatetime('yyyy-MM-dd 23:59:59',datetimepicker1.Datetime);
open;
s:=ADOQuery1.Recordcount;
end;
DBChart1.Title.Text.Text:='『' +formatdatetime('yyyy年MM月dd日',datetimepicker1.datetime)+ '』时产量趋势图';
DBChart1.Series[0].XLabelsSource:='时间';
DBChart1.Series[0].YValues.valuesource:='产量';
DBChart1.Series[0].DataSource:=ADOQuery1;
TempI:=0;
for i:=0 to s do
begin
DBChart1.Series[0].XLabelsSource:='时间';
DBChart1.Series[0].YValues.valuesource:='产量';
DBChart1.Series[0].DataSource:=ADOQuery1;
TempI:=TempI+1;
end;
end;
procedure TForm1.DBChart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
TempX:Double;
begin
//TempX:=-1;
TempX:=StrToFloat(CurrToStr(dbChart1.BottomAxis.CalcPosPoint(X-5))); //X-5为3D图形的X轴偏移量
if TempX<StrToFloat(inttostr(tempi))-1 then
begin
if TempX>=0 then
begin
if (TempX-Trunc(TempX))<0.5 then
TempX:=Trunc(TempX)
else
TempX:=Trunc(TempX)+1;
Label1.Caption:=dbChart1.Series[0].ValueMarkText[strtoint(FloatToStr(TempX))];
end
else
Label1.Caption:='';
end
else
Label1.Caption:='';
end;

Label1.Caption:=dbChart1.Series[0].ValueMarkText[strtoint(FloatToStr(TempX))]。这句出错。。。我想从数据库中调出数据,并DBChart显示,鼠标放在曲线上是能显示出横纵坐标。横坐标是时间,纵坐标是产量。数据库两个字段分别为时间,产量。
...全文
237 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oraclers 2012-11-29
  • 打赏
  • 举报
回复
for i:=0 to s-1 do //这里超出了记录的下标,改为s-1 begin DBChart1.Series[0].XLabelsSource:='时间'; DBChart1.Series[0].YValues.valuesource:='产量'; DBChart1.Series[0].DataSource:=ADOQuery1; TempI:=TempI+1; end;
lahm_ 2012-11-29
  • 打赏
  • 举报
回复
tempi和s定义为了integer。
lahm_ 2012-11-29
  • 打赏
  • 举报
回复
图行显示没有问题,主要是想当鼠标放在曲线上时能显示对应的时间和产量。这个没有想出来到底应该怎么才能方便显示出来,所以就想了很多“曲线救国”的方法。
Oraclers 2012-11-29
  • 打赏
  • 举报
回复
引用 4 楼 w329248452 的回复:
或者说我根据这个时间去数据库中找到对应的产量,再输出来吗?虽然这个应该可以,但是我觉得有点麻烦
按说用DBChart很简单,只要设置好数据源及对应的坐标字段及图类型,打开数据源后自动就会显示图形。没那么复杂吧!
lahm_ 2012-11-29
  • 打赏
  • 举报
回复
或者说我根据这个时间去数据库中找到对应的产量,再输出来吗?虽然这个应该可以,但是我觉得有点麻烦
lahm_ 2012-11-29
  • 打赏
  • 举报
回复
首先谢谢你,那个list index out of bounds问题解决了,但是还有个问题没有解决掉,就是显示出来的没有产量,只有时间,请问能再帮忙下吗?

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧