我在 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)
当然,用于填充图表的查询必须仍然打开,此代码才能工作。
| 归档时间: |
|
| 查看次数: |
14224 次 |
| 最近记录: |