【发布时间】:2013-12-25 11:05:14
【问题描述】:
点击TChart时如何从光标位置获取系列索引?
谢谢。
【问题讨论】:
-
所以,如果我有很多 Series 作为数组,我需要循环所有系列并打印出计数器,如果我从 Series[I].Clicked(x, Y) 功能?
点击TChart时如何从光标位置获取系列索引?
谢谢。
【问题讨论】:
从您的点击事件中,您将获得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);
【讨论】:
如果系列不在 (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,好吗?这是一个更好的地方;-)