当前位置:主页>Delphi教程>文章内容
TChart使用经验小结
来源: 作者: 发布时间:2007-04-29  

1、问题:通过Addxy方法给TChart添加标记(Mark)时,发现在TChart的横坐标会随着Mark而变化,后来发现通过以下方法可避免这种情况:双击TChart,点击Axis-> top or bottom ->labels,在styles中将labels的形式改为Value即可!

2、几个有用的属性:
        图表上的每个点都是有索引的,就象一个数组一样,在OnClickSeries事件中有个ValueIndex属性,该属性可以得到鼠标所点击的点的索引值(必须将Series的Point设置为可见,鼠标点击到那个点时才可以触发该事件)。

        xValue[index]、yValue[index]分别表示图表的索引为index的横纵坐标值,用这两个属性可以读取和设置索引为index的点的值,注意:不要用xValues和yValues,这两个属性也可以达到同样的目的,但是速度非常的慢。因为后两个在进行操作的时候可能要遍历整个图表上的值(个人观点)

      在MouseDown,MouseMove,Mouseup中,可以利用xScreentoValue(x),yScreentoValue(y)得到鼠标当时所在点对应在图表上的横纵坐标值。

e.g.

.......

private
  Nowindex:Integer;
  Cantuo:boolean;

........

procedure TfrmMain.Chart1ClickSeries(Sender: TCustomChart;
  Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  NowIndex:=ValueIndex;
end;

procedure TfrmMain.Chart1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Cantuo:=true;

end;

procedure TfrmMain.Chart1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Cantuo:=false;
end;

procedure TfrmMain.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if Cantuo then
begin
  Series1.yValue[NowIndex]:=  Series1.yScreenToValue(y) ;
end;
end;

这里即实现了可以在图表中拖动某一个点使其在纵轴上变化位置



 
上一篇:序列化FastReport   下一篇:用Delphi开发DLL来代替8581协议控制和采集华为PSM—A10电源(二)
 
  相关文章
·序列化FastReport
·用Delphi开发DLL来代替8581协议控制和
·用FASTREPORT实现WEB应用中自定义报表
·使用break与continue语句和for与contin
·FastReport问题集
·检测你的程序是否运行在虚拟机(VMware)
·让Fastreport3.x支持中文PDF的输出
·OTA:使用本地IDE对象[D4]
·如何使用Delphi设计强大的服务器程序
·再谈后台调用外部程序的完美实现
·ReportBuilder设置打印页范围技巧
·关于TButton类型不能响应OnDBClick事件
 
【关闭窗口】
推荐本站资源
最新文章