dbchart问题(100分)

L

lzx268

Unregistered / Unconfirmed
GUEST, unregistred user!
有想要dbchart中动态管理一图形,其对应的表中有时间,价格,物品名称,公司名称,
每一个物品可以由很多个公司提供,但多少个公司提供是不一定的,现在要画出一个同一物品名称
对应的各公司的价格比较图其X轴为时间,y轴为价格,一条线代表一个公司
 
当然可以:
有多少个公司就在dbchat中增加几个线(point),{//建议用柱状图(pie),我觉得比线更直观的体现出你的需求}
然后以query作为series的Data Source,Qurey的SQL可以这样写
select 公司1价格,公司2价格,公司3价格,公司4价格 from 价格表 where 时间 between 时间1 and 时间2
将各个series的Y设为相对应的价格,X为时间,即可轻松搞定
 
这样子如何去取公司1价格 公司2价格 公司3价格,这样子根本取不出来的
还有在dbchart中如何加一个series,比如是增加一个bar呢?
您能否帮我说的具体一点?
如何才能很好的分配y轴上的数值好????
 
上面的语句有问题。
应该是SELECT 物品名称,价格,公司名称,时间 from 价格表 where 时间 between 时间1 and 时间2 AND 物品名称=X
X为你要确定做曲线分析的物品名称。
然后参考道长说的DBCHART里SERIES的设置,就可以了。
如果要动态控制SERIES,你可以参考:
SOS!!!!!!!!!十万火急!!!!如何实现动态建立SERIES,同时改变形状。如折线,饼形
我的回答。
 
借块宝地一用:
to 816:
我用下列代码实现了形状的动态改变,可是出了一个问题,不知道怎么解决?
var
series:TChartSeries;
i:integer;
begin
for i:=0 to DBchart1.seriescount-1do
begin
Series:=TPieSeries.create(nil);//饼图,要实现别的图形,只要调用相应的类名,
//如Tbarseries.create,TFastlineSeries即可实现不同的图形
Series.AssignValue(DBchart1.series(0));//复制series的值
DbChart1.RemoveSeries(DBchart1.Series(0));
DBChart1.addSeries(Series);
end;
可是上述代码有一大问题,即Series 的datasource没有了,这样就无法再和数据集
相关联了,我用代码series.datasource:=DBchart1.Series(0)结果出错,不知道为什么?
而用代码series.assign(dbchart1.series(0))可以把series的属性复制过去,
可是x轴的值却没了,变成了0,1,2等等,而以前的属性却不见了,不知为什么?
有好的办法没有?

 
to book523,
TAreaSeries
TBarSeries
TCircledSeries
TCustomBarSeries
TCustomSeries
TFastLineSeries
THorizBarSeries
TLineSeries
TPieSeries
TPointSeries
TSeriesPointer
总共有11个SERIES可供选择。
创建一个FORM,放DBCHART组件,TABLE组件,两个按钮。TABLE组件连接表,当然你也可以用QUERY等。
看以下例子:
procedure TForm1.Button1Click(Sender: TObject);// 曲线
var myseries:TLineSeries;
begin
dbchart2.SeriesList.Clear;
myseries:= TLineSeries.Create(self);
myseries.ParentChart:=dbchart2;
myseries.DataSource:=table1;
myseries.XValues.ValueSource:='yf';
myseries.YValues.ValueSource:='gz';
end;

procedure TForm1.Button2Click(Sender: TObject);// 柱状
var myseries:TBarSeries;
begin
dbchart2.SeriesList.Clear;
myseries:= TBarSeries.Create(self);
myseries.ParentChart:=dbchart2;
myseries.DataSource:=table1;
myseries.XValues.ValueSource:='yf';
myseries.YValues.ValueSource:='gz';
end;
其他的,看了这个,原理是一样的。
 
顶部