你可以设两个全局变量CXCY
然后在mousemove中对其赋值
在onclick中处理就行

解决方案 »

  1.   

    procedure TForm1.Chart1Click(Sender: TObject);
    var t : tpoint;
    begin
    t:=chart1.GetCursorPos;
    showmessage(inttostr(chart1.Series[0].CalcYPosValue(t.x)));
    end;
      

  2.   

    好象不行,再帮我想想办法!!!
    我再讲以下我的目的和思路:
    1、我再CHART控件中动态画了几条曲线:
      var Series1:TLineSeries
      begin
        //for i:=0 to RouteCounts-1 do
        for i:=0 to 0 do    //假如我只画一条
        begin
          Series1:=TLineSeries.Create(self);
          Series1.ParentChart:=Chart1;
          Series1.Title:='车道'+inttostr(i+1);
          Series1.SeriesColor := clRed;
          Series1.XValues.DateTime := True ;      StoredProc1.First;
          while not StoredProc1.eof do
          begin
            Chart1.Series[i].AddXY(StoredProc1.Fieldbyname('rqsj').value,
                                   StoredProc1.Fields[i+2].value,
                                   '',
                                   Chart1.Series[i].SeriesColor);
            StoredProc1.next;
          end;
        end;
      end;
    2、我在Chart1MouseMove()事件中编写如下代码,以实现鼠标在CHART1中移动时动态画一条竖线,CHART1的横坐标是时间型的,竖线以半小时为单位随鼠标跳动;同时,竖线与曲线的交点的值动态显示在一个 LABEL 控件上(它是指某一时间的流量值)。
    Var
      tmpX,tmpY:Double;
      P1:TPoint;
    begin
      if PtInRect( Chart1.ChartRect, Point(X-Chart1.Width3D,Y+Chart1.Height3D)  ) then
        begin
          With Series1 do
            begin
              GetCursorValues(tmpX,tmpY);
              Present:=strtodatetime(GetHorizAxis.LabelValue(tmpX));
            end;
          PresentDate:=round(Present);      DecodeTime(Present, Hour, Min, Sec, MSec);
          if Min<30 then Min:=0;
          if Min>=30 then Min:=30;
          PresentTime:=EncodeTime(Hour, Min, Sec, MSec);      NewPresent:=strtodatetime(datetostr(PresentDate)+' '+timetostr(PresentTime));
          if NewPresent<>OldPresent then
            begin
              OldPresent:=NewPresent;
              if (OldX<>-1) then
                begin
                  DrawCross(OldX,OldY);
                  OldX:=-1;
                end;
              DrawCross(x,y);
              OldX:=x;
              OldY:=y;
              Label1.Caption:='时间'+#13+datetimetostr(NewPresent)
                              +#13+Series1.GetVertAxis.LabelValue(tmpY);
           //此时Series1.GetVertAxis.LabelValue(tmpY)为鼠标位置值,而非我要的
            end;
        end;
    end;
      

  3.   

    lovewangj(lllll)
    能否讲得详细点,我是个初学者
      

  4.   

    难道各位高手没有看见吗?拜托,帮帮忙!!!
    我再补充一下:解决下面这个问题也一样
    能否将得到的 X 值转化为(或者通过什么方法求出)它在CHARTSERIES中的 INDEX ?