关于chart,teechart的问题(200分)

L

ludemin

Unregistered / Unconfirmed
GUEST, unregistred user!
谁能关于chart 即图表的开发讲讲课啊?这方面的资料太少了,提供资料,原码,都有分,先那
200分,不够再加.
 
你现在想解决什么问题啊。这个题目,应该有相关的帖子吧。这个是我以前贴的一个,
如何实现动态建立SERIES,同时改变形状。如折线,饼形
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;
其他的,看了这个,原理是一样的。
如果不用挂数据库,那,省略掉数据连接就可以了,可以手工指定横轴和纵轴的每个点的值。
这个在DELPHI6下,调试没有问题。
 
可以直接到delphi的安装路径下、demos/teechart/里面有有关teechart用法的详细例子,
基本上用到teechart的所有功能,非常使用,方便
 
to 816:
你的x轴只能是浮点型数据啊?,如果是字符型应怎么办啊?比如我想统计某一时间段的各种产品
的销售数量,应怎么办啊?再加上每个部门的比较,即从同一图表上看出各部门的业绩?
 
x轴不一定非要浮点型的啊,我程序中对应的,是数据库里字段的内容。
你说的统计某一时间段的各种产品
的销售数量,这个横轴是时间,纵轴是数量,没有什么不可以啊,而每个点的标签,显示的就是这个
时间段的商品名称。
比如你用的是线型的SERIES,你统计两个部门,那就是两条线,横轴和纵轴一个是时间,一个是数量,这个是不会变的。
 
关注,有什么好的思路或新的发现时我重提该问题,然后发分。
 
to 816:
首先谢谢你,我试过,不行,报错
 
抱什么错呢?
 
报什么错误?没有问题啊,这个在D6环境下测试过的。
那个YF和别的是数据库里字段,我用的ACCESS做的.
机器上DEMO已经删除了,你自己做个表吧.
 
错误信息就是说X轴不能为FLOAT型数据.
 
试试下列代码:
series1.Addy(20 ,'市场部',clteecolor);
series2.Addy(40 ,'生产部',clteecolor);
 
一直出差,忙啊。
 
贴一段我自己的程序,动态改变形状,希望对你有帮助!
要改变的chart为sourcechart,deschart只是一个中间变量!
//改变chart的形状
procedure ChangeSeries(SourceChart:TDBChart;DesChart:TDBChart;SeriesType:String);//改变图表形状
var
i,j:integer;
Series:TchartSeries;
begin

if SourceChart.Series[0].ClassName=SeriesType then
exit;
if DesChart=nil then
DesChart:=TDBChart.Create(nil);
if SeriesType='TPieSeries' then
DesChart.Assign(SourceChart);
if desChart=nil then
DesChart.Assign(SourceChart);
if SourceChart.Series[0].ClassName='TPieSeries' then
SourceChart.Assign(DesChart);
for i:=0 to SourceChart.SeriesCount-1do
begin
if SeriesType='TPieSeries' then
Series:=TPieSeries.Create(nil)
else
if SeriesType='TBarSeries' then
series:=TBarSeries.Create(nil)
else
if SeriesType='TFastLineSeries' then
Series:=TFastLineSeries.Create(nil)
else
Exit;
//Series.AssignValues(SourceChart.Series[0]);
//Series.DataSource:=SourceChart.Series[0].DataSource;
Series.Assign(SourceChart.Series[0]);
{
for j:=0 to Series.Count-1do
begin
Series.XLabel[j]:=SourceChart.Series[0].XLabel[j];
end;
}
Series.Active :=SourceChart.Series[0].Active;
SourceChart.RemoveSeries(SourceChart.Series[0]);
SourceChart.AddSeries(Series);
end;

end;
 
谢谢大家的参与!!!
请各位继续发表意见
 
我觉得看看例子算了
 
TeeChart的例子编译通不过,说缺少Spin.dcu文件,怎么办?
 
不会啊,可以编译啊
要不重装一次,要不发给你一个?
 
我 最近 也在学呢
我把 相关的属性看了一下,并整理了一下
你的Email 呢,我给你发一个
 
ludemin@sina.com
 
顶部