如何实现鼠标放在柱状图上面的时候,显示该柱子的value值(不是XY轴的坐标),因为柱子多的时候,固定显示的value值会出现重叠的情况,看不见被盖住的值

解决方案 »

  1.   

    一般画这种图,都是以序号作为x轴的坐标,y轴显示柱状的高度,也就是value值。如果你这样设定后,就可以用series1.yvalues[i]的方式来表示第几个柱条的value值,这个值是个double型的值,如果要用整形的,就自己转换一下round(series1.yvalues[i])
      

  2.   

    我的意思是:鼠标放到柱子上的时候,就像按钮的hint那样提示这个柱子的value值。
      

  3.   

    可以自己把值画上去,但是视觉效果不太好,参考下面的方法:
    先在Chart里添加一个ChartTool, 双击Chart - Tools - Add - Cursor
    之后在ChartTool的OnSnapChange事件里写代码:
    procedure TForm1.ChartTool1SnapChange(Sender: TCursorTool; x, y: Integer;
      const XValue, YValue: Double; Series: TChartSeries; ValueIndex: Integer);
    begin
      Chart1.Repaint;
      Chart1.Canvas.Brush.Color := clWhite;
      Chart1.Canvas.Font.Color := clBlack;
      Chart1.Canvas.Font.Size := 11;
      Chart1.Canvas.TextOut(x, y - 30, FloatToStr(YValue));
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      i: Integer;
    begin
      Series1.Marks.Visible := False;
      ChartTool1.Series := Series1;
      ChartTool1.Snap := True;
      ChartTool1.SnapStyle := ssHorizontal;
      ChartTool1.Active := True;
      ChartTool1.FollowMouse := True;
      Randomize;
      for i := 0 to 10 do
      Series1.AddXY(i, Random(500) + 500);
    end;
      

  4.   

    procedure ChartZiLiaoClickSeries(Sender: TCustomChart;
      Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    beginend;
    参考这个函数利用x y可以获取相关信息转换到series   然后有了ValueIndex就能知道数据
      

  5.   

    你好,這個問題我也遇到過,但我的做法是使用dbchart內的tools顯示該柱狀圖x軸的字,因為柱狀圖太多,會導致文字無法完全顯示,謝謝。
    請愛用dbchart內附的tools功能。
      

  6.   

    柱子是什么?chart吗?如果是可以使用MouseMove记录要显示的内容,再配合Hint显示出来
      

  7.   

       DELPHI中图表中的属性应该也可以配合hint和showhint来使用的吧。