如何用折线图表做一个图(100分)

  • 主题发起人 主题发起人 秦余
  • 开始时间 开始时间

秦余

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用一个图表来显示一个数据表里的几个字段,并能打印,而且具有比例缩发功能!!
 
用TDBChart啦
 
同意dq,tdbchart的功能很强,可以满足你的要求
 
用Tdbchart做也可以,要不然自己画一个?
 
但是如何做啊,各位高手能不能说详细一点,而且要在图上画一些平行线,该如何用啊,现在
关于这个控件的介绍好象很少,能不能介绍什么资料上有啊??谢谢!!1
 
能不能把你的数据结构写出来,并且把要求写的详细一些,让大家更有的放矢,可以帮你写段代码出来。
 
这是一个分析水质的图表,允许用户输入数据,主要字段有四个,输入X1,X2,要求出平均制,
还有一个序号字段,但要在图表中画出几条平行线,用于标记是否超出警戒
范围,还要在线的旁边加上注释,并且需要动态生成,然后以序号为横坐标,平均制为纵坐标
,画出图表,并且有按比例缩放功能,在图表下方显示数据,当用户点中某条记录时,这条
记录就以高亮度显示,并且不列入图表的生成数据中,然后将这个打印出来。
顺便问一下,能否将几个SERIES合为一起呢?具体该如何操作?谢谢!!!!

 
>>以序号为横坐标,平均制为纵坐标,画出图表
>>能否将几个SERIES合为一起呢?
可以的:在DBChart上放三个Series,在DBChart的可视化编辑窗口中将其中两个的DataSource设为DataSet,
指定X为序号字段,指定Y分别为X1和X2,把这两个的Active置为False;把第三个Series的
DataSource设为Function,Average,把那两个加进来就行了
>>但要在图表中画出几条平行线,用于标记是否超出警戒范围,还要在线的旁边加上注释,并且需要动态生成
在DBChart的OnAfterDraw里(以一条警戒线为例):
procedure TForm1.DBChart1AfterDraw(Sender: TObject);
const
Danger:do
uble = 10.5;//警戒水位
DColor: TColor = clRed;//平行线的颜色
DInfo: String = '警戒线';//注释信息
var
X1, X2, Y: Longint;
R: TRect;
begin
with Series1do
begin
//Series1为一TLineSeries
X1 := CalcXPosValue(0);
X2 := CalcXPosValue(MaxXValue);
Y := CalcYPosValue(Danger);
end;
with DBChart1.Canvasdo
begin
Pen.Color := DColor;
MoveTo(X1, Y);
LineTo(X2, Y);
Pen.Color := clInfoText;
Brush.Color := clInfoBk;
R := Rect((X1 + X2) div 2, Y - TextHeight(DInfo), (X1 + X2) div 2
+ TextWidth(DInfo) + 4, Y + 4);//显示注释的矩形框,具体大小和位置根据实际情况确定
FillRect(R);
TextOut(R.Left + 2, R.Top + 2, DInfo);
end;
end;
比例缩放用DBChart1.View3DOptions.Zoom控制。打印用DBChart.Print。
>>并且不列入图表的生成数据中
什么意思?
 
很奇怪哦,按照你的方法将这段代码加入之后,没有任何效用哦,请指教,是不是在数据集的设置中
中有点问题呢?还有就是不显示数据指用户点中TDBGRID中的一条或几条数据时,然后再按显示
图表的BUTTON时,这几条数据不列入生成图表的数据中,另外不知你知不知道哪有关于CHART
的详尽资料,谢谢指教!!!!
 
如果你看不到正常的数据折线显示,应该是数据的设置问题(那段代码和数据源无关,它只是负责画线)。
那你就得在双击DBChart后的编辑框里好好检查一下各个Series的DataSource的设置了。
注意检查两个和数据相连的Series的X和Y字段设置以及另一个Series的Function里是不是把
那两个Series加入了它的Selected Series下面。
不显示某些记录的要求我觉得对DBChart比较困难,弄不好就得换TChart了,不过TChart是麻烦一些,
要Button的Click里自己动态的添加X和Y的值(用和数据关联的Series的Add方法实现),
这样可以根据DBGrid的SelectedRows控制哪些记录不添加。(看看别人还有没有用DBChart实现的高招)
>>哪有关于CHART的详尽资料
Delphi的帮助里,我就是一直看的帮助。
 
谢谢指教,不知能否将信箱相告,以后有什么问题可以直接请教啊???
 
yqzt@263.net
“请教”不敢,交流一下吧。
 
后退
顶部