TChart 系列值的鼠标悬停提示

Obi*_*obi 0 delphi teechart

我在 Delphi 7 中使用 TChart,我想显示一些条形图。我使用以下代码来设置数据库查询中的系列值:

  chart1.FreeAllSeries;

  chart1.SeriesList.Clear;

  chart1.AddSeries(TBarSeries.Create(Self));
  TBarSeries(chart1.Series[0]).BarStyle:=bsRectGradient;

  with query1 do
    begin
      Close;
      Execute;

      while not EoF do
        begin
          chart1.Series[0].Add(FieldAsFloat('sum_actual_days'), FieldAsString('contract_no'));
          Next;
        end;

    end;
Run Code Online (Sandbox Code Playgroud)

现在,每个条形图(值)都在条形图下方和条形图上方的黄色矩形中显示标签。

我不想重复标签值两次,而是从查询中获得了一些附加信息,我希望将其显示在栏上方而不是标签上(或者最好作为鼠标悬停提示)。这可以用 TChart 完成吗?如何... ?

小智 6

这可以通过使用 TChart 图表的 OnMouseMove 事件来完成。像这样的事情应该让你开始:

procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
  SeriesIndex: Integer;
begin
  SeriesIndex := Series1.Clicked(X, Y);

  Chart1.ShowHint := SeriesIndex <> -1;

  if Chart1.ShowHint then
  begin
    query1.RecNo := SeriesIndex; { this may need to be SeriesIndex + 1 }
    Chart1.Hint := query1.FieldByName('YourFieldNameHere').AsString;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

当然,用于填充图表的查询必须仍然打开,此代码才能工作。