一个DBChart的问题 ( 积分: 200 )

  • 主题发起人 主题发起人 maryths
  • 开始时间 开始时间
M

maryths

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库中有如下数据:
日期 数值
01.01 2
01.02 3
01.03 7
... ...
02.01 2
02.03 3
... ...
05.01 7
... ...
能不能用表示成以下形式:就是横轴只显示1月,2月...纵轴显示所有数据并连成曲线.
如果可以,请问应该怎么设置?谢谢
 
数据库中有如下数据:
日期 数值
01.01 2
01.02 3
01.03 7
... ...
02.01 2
02.03 3
... ...
05.01 7
... ...
能不能用表示成以下形式:就是横轴只显示1月,2月...纵轴显示所有数据并连成曲线.
如果可以,请问应该怎么设置?谢谢
 
没有人愿意说吗?....
 
可以,你可以在同一个DBChart中 将每年的数据建立一个TLineSeries实例。每个实例只画出当年的曲线。
 
不懂你的意思,是不是要只显示1,2月的label,而其它月的不显示呢,你可以自己定义label的
 
to alangm_new:
不是只显示1,2月,一年所有月都要显示的.也就是说横轴显示1到12月.
如果自己定义label,该怎么做?我刚用这个组件,不熟悉啊.
 
to guvexie:
如果建立每年的TLineSeries实例,怎样控制横轴?
 
你把你的表首先根据所在月份形成三列.包括月份,日期和数值.
然后建立LineSeries.并且把需要XLable设置为月份.就可以了.XValue = 日期,YValue = 数值
另外一个办法就是建立数据立方体形式的Chart比较繁琐...
 
真的不太明白你的意思:横轴只显示1月-12月,但你一月有N个数,是不是要横轴显示“1月1月1月……1月 2月2月……”,又或者每个月显示一个Label,然后在其上显示同一个月的不同数值——那要怎样连线?
 
1.Series设置General-->Horizontal下的DateTime打钩
2.Chart的Axis中选择Bottom,Scales中Automatic前去钩,并改变最大值和最小值(max:2005-12-1,min:2005-1-1)(如果最小值设不成日期请到object Inspector的bottomAxis中将Maximum和minimum都设成大于1的值就可以了),再Change desired increment为one month
3.在labels页上改变DateTimeFormat为M,Style为Value
[:)]成功,不知满意否
 
to lhc4000:
横轴每月只显示一个label,重复的label省略不可见.
 
to nownoknow:
设置了数据集之后好像就不成了!
 
补充:
series.add(strToDate('2005-1-1'),2,'',color);
series.add(strToDate('2005-1-2'),3,'',color);
series.add(strToDate('2005-1-3'),7,'',color);
...
 
不用DB行吗
while ado.eofdo
begin
x:=strToDate(年+数据库中日期);
y:=FieldbyName('数值').asstring;
series.addxy(x,y,'',color);
next;
end;
 
这样如果记录多了的话,速度会比较慢吧!
 
怎么不成说来听听
 
就是什么都没画出来!
 
你的日期字段是01.01还是01-01
如果是后者你也可以用StrToDate('01-01')但结果和你的系统时间有关得出来的是系统时间的年份即2005-1-1所以你设最小值时用2005-1-1
 
用nownoknow提供的方法吧,灵活:
while ado.eofdo
begin
x:=strToDate(年+数据库中日期);
y:=FieldbyName('数值').asstring;
series.addxy(x,y,'',color);
next;
end;

速度应该也不会很慢的。
 
while not ado.eofdo
...
 
后退
顶部