我有一个带有可见标记的 TContour系列,并希望以自定义格式显示百分比值。因此,我创建了一个方法 GetMarkText 并将其分配给 OnGetMarkText 属性。让我们假设它看起来像这样(简化):
...
serContourLines.OnGetMarkText := GetMarkText;
...
procedure TForm1.GetMarkText(Sender: TChartSeries;
ValueIndex: Integer; var MarkText: string);
begin
MarkText := MarkText + ' %';
end;
但该方法永远不会被调用。等高线上的标记显示正常,但文本只是来自数据的值。它甚至涉及该系列的价值格式。但它不显示事件方法中定义的文本。
代码标记为已编译(蓝点),但永远不会到达方法中的断点。
我正在从这里复制回复:
轮廓系列有点特别,它不像其他系列那样画出标记。它在内部计算级别并为每个级别绘制标记,而不是为每个点绘制标记。 但是,我相信它可以毫无问题地使用OnGetMarkText
事件,所以我已将其添加到公共跟踪器 (#2253)。
既然您有源代码,您能否尝试将这两行代码添加到 TeeSurfa.pas 的TContourSeries.DrawAllValues.DrawLevelLines
方法中?
if tmpDrawMarks then
begin
// Get mark text:
case Marks.Style of
smsSeriesTitle: tmpSt:=SeriesTitleOrName(Self);
smsPointIndex: tmpSt:=IntToStr(TheLevel);
else
tmpSt:=FormatFloat(ValueFormat,UpToValue);
end;
if Assigned(OnGetMarkText) then //Fix for #2253, Line 5429
OnGetMarkText(Self,TheLevel,tmpSt);
// Get mark size:
CalculateMarkPosition(Marks,tmpSt,0,0,Position);
tmpSize.X:=Position.Width;
tmpSize.Y:=Position.Height;
end;