2010-11-08 140 views
1

我有一个概率,我的TChart附带的“标记”隐藏在酒吧后面......我添加了标记,并将它自己绘制在酒吧后面。任何方式把它放在前面?我希望有人可以帮助me..thanks在条形图前显示标签

alt text

+0

如果您还可以让我们知道您用于图表的哪个组件,这将非常有帮助。 – iamjoosy 2010-11-08 14:02:39

回答

4

,我不知道是你的图巴实例化什么课,但我知道的TLabel是TGraphicControl后裔。从TGraphicControl降序的控件没有任何窗口句柄;因此,他们的父母负责将其绘制在自己的画布上。

当您在窗体上放置标签时,窗体就是您的标签的父级,并将在其自己的画布上绘制标签。如果删除一个窗口控件(控件派生自TWinControl类,例如TButton或TProgressBar),它们将在父画布上处理它们自己的图形。这意味着,TGraphicControl的后代将始终在具有相同父窗口的TWinControl类的后代后面绘制。

最简单的解决方案是使用TStaticText,它提供与TLabel相同的功能,但是是TWinControl后代。

也可能有其他解决方案,例如:您可以在窗体上放置一个面板,然后将该标签添加到面板,然后将面板放在前面,以将其显示在图形栏上方。当您将标签添加到面板时,其父项将被设置为该面板控件,并且该面板将负责绘制标签;或者将图形栏设置为标签的父级;或者派生一个新的图形栏类,并处理其Paint方法直接在其画布上绘制文本。

+2

TStaticText是一个真正的TWinControl,可以用来代替TLabel。 – gabr 2010-11-08 08:35:54

+0

@gabr;是的,谢谢!我几乎忘了StaticText。 – vcldeveloper 2010-11-08 09:07:20

+0

@gabr:完成;-) – vcldeveloper 2010-11-08 09:18:20

0

好的,现在我明白了什么是错的。你有三个小节系列,但第三个系列是从第二个小节中划分出来的。填充你的3条系列后,尝试:

barseries2.marks.visible:=False; 
barseries2.marks.visible:=True; 

这应该重新绘制标记(虽然未经过测试)。