Delphi 10.1 Pro, VCL со встроенными элементами управления Teechart.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;
Отметки видны.Правильный cpSeriesMarks (курсор в красной стрелке):
Нажмите кнопку, чтобы скрыть метки.Получите следующее неправильно CalcClickedPart. Метки НЕ видны.Неправильный cpSeriesMarks (курсор в красной стрелке):
Есть ли у вас какие-либо идеи для обхода?
ps Ранее я обнаружил ошибку с CalcClickedPart, когда CalcVisiblePoints: = false.Это еще одна проблема, совсем не связанная с CalcVisiblePoints.
Спасибо, Рерон