Delphi 10 со встроенным TeeChart.
Я хотел бы скрыть часть tLineSeries и обнаруживать ТОЛЬКО видимые части с помощью CalcClickedPart.
Предположим, что несортированная линия XY со множеством перекрестков между ними, некоторые точки могут быть выбраны пользователем как невидимые. Я делаю это, устанавливая цвет «скрытых» точек на clNone. Когда пользователь перемещает мышь, при событии MouseMove вызывается CalcClickedPart, но он также является ответом на «скрытые» точки, поскольку это не настоящий скрытый путь.
Создание диаграммы:
procedure TForm1.FormCreate(Sender: TObject);
const
clHideColor = {clDefault}clNone; // clNone, clDefault
begin
Chart1.View3D := false;
with Chart1.AddSeries(TLineSeries) as TLineSeries do
begin
// AddXY(Const AXValue, AYValue: TChartValue; Const ALabel: String; AColor: TColor):
XValues.Order := loNone;
YValues.Order := loNone;
AddXY( 0, 0, '', clHideColor); // Origin point
AddXY( 50, 50, '', clHideColor); // / Cross point
AddXY(100, 100); // /
AddXY(100, 0); // |
AddXY( 50, 50); // \ Cross point
AddXY( 0, 100); // \ End point
end;
end;
Код CalcClickedPart в событии MouseMove диаграммы
procedure TForm1.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' +
ClickedPart.PointIndex.ToString;
cpSubTitle : sCursorText := 'cpSubTitle';
cpSubFoot : sCursorText := 'cpSubFoot';
cpAxisTitle : sCursorText := 'cpAxisTitle';
end;
Chart1.Title.Text.Text := sCursorText;
end;
В приведенном выше примере, когда указатель мыши находится посередине (50, 50), показанная точка будет # 1 (которая скрыта) вместо 4.
Я мог бы пройти через все точки серии и найти другие более близкие точки, но есть ли «чистый» способ скрыть частичные серии?
Вся серия видна:
Первые две точки «скрыты», см. Заголовок с индексом точки 1 вместо 4 (круглый красный круг)
![enter image description here](https://i.stack.imgur.com/M2Kju.png)