带有嵌入式Teechart控件的Delphi 10.1 Pro VCL。
CalcClickedPart在将标记设置为隐藏在先前显示的位置之后显示cpSeriesMarks。
我可能无法正确删除标记,只能将其隐藏,否则CalcClickedPart中存在错误。请指教。
我在左上方添加了tLabel,其中显示了CalcClickedPart零件结果。
还有一个按钮,用于切换“标记”可见性。
系列和商标的创作:
procedure TForm2.FormCreate(Sender: TObject);
var i: Integer;
begin
Chart1.View3D:=false;
with Chart1.AddSeries(TLineSeries) as TLineSeries do
begin
for i := 0 to 9 do
begin
AddXY(i, 10);
Marks.Item[i].Visible := false; // Hide all Marks
end;
Marks.Show; // A global Marks enabled.
Marks.Item[5].Visible := true;
end;
end;
CalcClickedPart测试:
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;
标记可见性切换:
procedure TForm2.btnMarksToggleClick(Sender: TObject);
begin
with (Chart1[0] as tLineSeries).Marks.Item[5] do
Visible := not Visible;
end;
Marks is visible. A correct cpSeriesMarks (cursor in Red arrow):
按下按钮以隐藏标记。将得到以下错误的CalcClickedPart。
Marks is NOT visible. An incorrect cpSeriesMarks (cursor in Red arrow):
您有解决的想法吗?
ps我以前在CalcVisiblePoints:= false时发现了CalcClickedPart的错误。
这是另一个问题,与CalcVisiblePoints根本无关。
谢谢
雷隆
最佳答案
我已经能够在这里重现该问题,因此已将其添加到公共跟踪器(#2092)中。
注意问题出在TSeriesMarks.Clicked
函数。
我已经为下一个版本修复了它。
解决方法是,您可以设置Positions.Item[5]:=nil
:
procedure TForm2.btnMarksToggleClick(Sender: TObject);
const aMarksIndex = 5;
begin
with (Chart1[0] as tLineSeries).Marks do
begin
with Item[aMarksIndex] do
Visible := not Visible;
if not Item[aMarksIndex].Visible then
Positions.Items[aMarksIndex]:=nil;
end;
end;
关于delphi - TeeChart CalcClickedPart Marks.Item [nPoint] .Visible之后的错误:= false,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52461216/