在我的项目中,我有几个TChart,每个系列有2个系列和2个条形图。[][1](https://i.stack.imgur.com/Zu2SX.png)
在它们的每一个上,我需要显示鼠标悬停在它们上面的系列栏的价值。我正在使用onMouseMove事件:
procedure TfrmBoard.chartCountMouseMove(Sender: TObject; Shift:
TShiftState; X, Y: Integer);
var
SeriesIndex : Integer;
begin
with Tcontrol(Sender) do
begin
seriesIndex := (Sender as TChart).series[0].clicked(X,Y);
ShowHint := SeriesIndex <> -1;
if ShowHint then
Hint := FloatToStr((Sender as TChart).series[0].YValues.Value[seriesIndex]);
end;
end;
此代码显示图表中第一个序列的值,但不显示第二个序列的值。
如果我添加一个循环,该事件将只显示第二个序列的值。
procedure TfrmBoard.chartCountMouseMove(Sender: TObject; Shift:
TShiftState; X, Y: Integer);
var
SeriesIndex : Integer;
i: Integer;
begin
with Tcontrol(Sender) do
begin
for I := 0 to (Sender as TChart).SeriesCount - 1 do
begin
seriesIndex := (Sender as TChart).series[i].clicked(X,Y);
ShowHint := SeriesIndex <> -1;
if ShowHint then
Hint := FloatToStr((Sender as TChart).series[i].YValues.Value[seriesIndex]);
end;
end;
end;
有人能帮我解释一下如何显示这两个系列的价值吗?
1条答案
按热度按时间k5ifujac1#
当
ShowHint
变为True
时,您必须中断循环,否则它可能会被下一个False
值覆盖顺便问一下,您的
TChart
有SeriesXX对象的事件OnMouseEnter
吗?