TeeChart解决由于CalcVisiblePoints而导致的CalcClickedPart错误:= false

时间:2018-08-30 22:07:07

标签: delphi teechart

Delphi 10.1 Pro,VCL,带有嵌入式Teechart控件。 我的Line系列有很多要点,远不止屏幕分辨率。 我也在使用Marks。 为了使标记始终可见,将CalcVisiblePoints设置为false。 但是,它会导致Chart1MouseMove事件中的CalcClickedPart行为不正确。 我在左上方添加了tLabel,其中显示了CalcClickedPart零件结果。 光标不在图表中,在下图用垂直红色箭头标记: embedded image 该部分为 cpNone

在PAN /滚动图表后发生问题(在以下示例中向右)。 光标与以前一样,位于聊天本身右侧的外面。 这次报告的部分是 cpSeriesPointer ,这是错误的。 还选择了图例,这也不正确。 embedded image

系列创建如下:

procedure TForm2.FormCreate(Sender: TObject);
var i: Integer;
begin
  // Chart setting
  Chart1.View3D:=false;
  Chart1.Legend.Visible := true;
  Chart1.Legend.CheckBoxes := true;
  // Left Axis
  Chart1.Axes.Left.Automatic:= false;
  Chart1.Axes.Left.Minimum := 0;
  Chart1.Axes.Left.Maximum := 20;

  // Adding a Line Series
  with Chart1.AddSeries(TLineSeries) as TLineSeries do
    begin
      for i := 1 to 1000 do
        AddXY(i, 10);
      CalcVisiblePoints := false; // <- THE Problematic property
      Pen.Width:= 3;
    end;
end;

Chart1MouseMove事件:

procedure TForm2.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
Var
  ClickedPart: tChartClickedPart;
  sCursorText: string;
begin
  sCursorText := '';

  Chart1.CalcClickedPart(Point(X, Y), ClickedPart); // Return information about the TeeChart component below the Mouse pointer at an X,Y location.
  Case ClickedPart.Part of
    cpNone          : sCursorText := 'cpNone';
    cpLegend        : sCursorText := 'cpLegend';
    cpAxis          : sCursorText := 'cpAxis';
    cpSeries        : sCursorText := 'cpSeries';
    cpTitle         : sCursorText := 'cpTitle';
    cpFoot          : sCursorText := 'cpFoot';
    cpChartRect     : sCursorText := 'cpChartRect';
    cpSeriesMarks   : sCursorText := 'cpSeriesMarks';
    cpSeriesPointer : sCursorText := 'cpSeriesPointer ';
    cpSubTitle      : sCursorText := 'cpSubTitle';
    cpSubFoot       : sCursorText := 'cpSubFoot';
    cpAxisTitle     : sCursorText := 'cpAxisTitle';
  end;

  Label1.Caption := sCursorText;
end;

任何想法如何解决?

谢谢 Reron

0 个答案:

没有答案