我的TeeChart看起来非常好,网格线/刻度出现在我希望的位置等等(X轴标签风格设置为talAuto)。现在我需要格式化X轴标签,使它们显示时间偏移而不是数据点编号。
我已将LabelStyle更改为talMark并正在处理图表的OnGetAxisLabel。问题是我的每个X轴点都调用了我的事件处理程序,而不仅仅是当我将LabelStyle设置为talAuto时显示标签的点。
如何进行设置,以便只为LabelStyle为talAuto时绘制的标签调用我的事件处理程序?
我正在使用C ++ Builder XE3和IDE附带的TeeChart版本。
更新灵感来自Yeray的评论:
将LabelStyle设置为talAuto我总是将ValueIndex传递给我的事件处理程序。在查看LabelText时,我看到了我在ValueIndex中预期的值,但是我也得到了相同数量的不正确值(忽略非X轴值)。例如......
我的图表显示5个X轴值:200,400,600,800,1000。我的事件处理程序按以下顺序调用10次:
ValueIndex LabelText
-1 937.5
-1 0
-1 240,000
-1 200
-1 239,800
-1 1,000
-1 800
-1 600
-1 400
-1 200
我不知道前5个值来自哪里或为什么我的事件处理程序被调用。
注意:我删除了C ++ Builder标记,因为任何使用TeeChart的人都可以回答这个问题,无论他们的语言如何;我使用BCB的事实对这个问题并不重要。
答案 0 :(得分:2)
我已将LabelStyle更改为talMark并正在处理图表 OnGetAxisLabel。问题是我的事件处理程序被调用 每个X轴点而不仅仅是显示标签的点 当我将LabelStyle设置为talAuto时。
是的,使用talMark
LabelStyle
,轴将绘制与系列中的点一样多的标签。
您可以使用talAuto
LabelStyle
获取所需的标签数量,您仍然可以在OnGetAxisLabel
事件中设置标签格式。
更新:
当我使用talAuto时,ValueIndex总是-1,所以我不知道哪个 数据点与事件相关联。
设置talAuto
且系列有标签时,其行为类似于talText
和talMark
:这些字符串用于底部轴,ValueIndex
用于OnGetAxisLabel
可以使用1}}事件。
设置talAuto
但系列没有标签时,其行为类似talValue
:底轴计算标签,以显示Minimum
,Maximum
和{{ 1}}。无法使用Increment
事件中的ValueIndex
,因为轴标签与序列点不对应。
我猜你的系列中没有标签。否则,从OnGetAxisLabel
更改为talAuto
不应更改任何内容。
所以你必须在一个或另一个之间做出决定。也许你可以使用talMark
(或talValue
没有标签)来获得你想要的标签数量,并从将要绘制的字符串中提取你需要的信息。
或者,使用talAuto
可能更容易。它们将允许您控制轴标签的位置和文本,而无需任何事件。例如:
CustomLabels