Delphi 10.1 Pro,VCL,带有嵌入式Teechart控件。 我的Line系列有很多要点,远不止屏幕分辨率。 我也在使用Marks。 为了使标记始终可见,将CalcVisiblePoints设置为false。 但是,它会导致Chart1MouseMove事件中的CalcClickedPart行为不正确。 我在左上方添加了tLabel,其中显示了CalcClickedPart零件结果。 光标不在图表中,在下图用垂直红色箭头标记: 该部分为 cpNone 。
在PAN /滚动图表后发生问题(在以下示例中向右)。 光标与以前一样,位于聊天本身右侧的外面。 这次报告的部分是 cpSeriesPointer ,这是错误的。 还选择了图例,这也不正确。
系列创建如下:
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