【问题标题】:Get Series Index under cursor when TChart is clicked单击 TChart 时获取光标下的系列索引
【发布时间】:2013-12-25 11:05:14
【问题描述】:

点击TChart时如何从光标位置获取系列索引?

谢谢。

【问题讨论】:

  • 所以,如果我有很多 Series 作为数组,我需要循环所有系列并打印出计数器,如果我从 Series[I].Clicked(x, Y) 功能?

标签: delphi delphi-xe teechart


【解决方案1】:

从您的点击事件中,您将获得X,Y 鼠标位置。

var
  SeriesIndex: Integer;
begin
  SeriesIndex := Series1.Clicked(X,Y);
  if (SeriesIndex <> -1) then
  begin
    // Do something with SeriesIndex
  end;
  ...
end;

还可以将OnClickSeries 事件分配给图表。

procedure TForm1.Chart1ClickSeries(Sender: TCustomChart;
  Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

【讨论】:

    【解决方案2】:

    如果系列不在 (X,Y) 位置(以像素为单位)之下,系列的 Clicked(X,Y) 函数将返回 -1。如果系列在 (X,Y) 位置(以像素为单位)下,则返回系列下点的索引。

    这里有一个使用 OnMouseMove 事件的简单示例:

    uses Series;
    
    procedure TForm1.FormCreate(Sender: TObject);
    var i: Integer;
    begin
      Chart1.View3D:=false;
    
      for i:=0 to 2 do
        Chart1.AddSeries(TBarSeries).FillSampleValues(3);
    end;
    
    procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var seriesIndex, valueIndex: Integer;
    begin
      Caption:='No series under the mouse';
    
      for seriesIndex:=Chart1.SeriesCount-1 downto 0 do
      begin
        valueIndex:=Chart1[seriesIndex].Clicked(X,Y);
        if valueIndex>-1 then
          Caption:='Series under the mouse. SeriesIndex: ' + IntToStr(seriesIndex) + ', ValueIndex: ' + IntToStr(valueIndex);
      end;
    end;
    

    【讨论】:

    • 您能否重新发布您的答案here,好吗?这是一个更好的地方;-)
    猜你喜欢
    • 1970-01-01
    • 2016-07-15
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多