TeeChart X轴标签格式

时间:2013-04-16 18:06:15

标签: c++builder vcl teechart

我的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的事实对这个问题并不重要。

1 个答案:

答案 0 :(得分:2)

  

我已将LabelStyle更改为talMark并正在处理图表   OnGetAxisLabel。问题是我的事件处理程序被调用   每个X轴点而不仅仅是显示标签的点   当我将LabelStyle设置为talAuto时。

是的,使用talMark LabelStyle,轴将绘制与系列中的点一样多的标签。 您可以使用talAuto LabelStyle获取所需的标签数量,您仍然可以在OnGetAxisLabel事件中设置标签格式。


更新:

  

当我使用talAuto时,ValueIndex总是-1,所以我不知道哪个   数据点与事件相关联。

设置talAuto且系列有标签时,其行为类似于talTexttalMark:这些字符串用于底部轴,ValueIndex用于OnGetAxisLabel可以使用1}}事件。 设置talAuto但系列没有标签时,其行为类似talValue:底轴计算标签,以显示MinimumMaximum和{{ 1}}。无法使用Increment事件中的ValueIndex,因为轴标签与序列点不对应。

我猜你的系列中没有标签。否则,从OnGetAxisLabel更改为talAuto不应更改任何内容。

所以你必须在一个或另一个之间做出决定。也许你可以使用talMark(或talValue没有标签)来获得你想要的标签数量,并从将要绘制的字符串中提取你需要的信息。


或者,使用talAuto可能更容易。它们将允许您控制轴标签的位置和文本,而无需任何事件。例如:

CustomLabels