2013-04-05 75 views
1

我想创建与堆积系列的条形图。每个酒吧由两部分组成。主要部分有正常的颜色和黑色边框,“超限”部分有较亮的颜色和红色边框。在IDE(Delphi XE3)中配置此行为没有问题。当我有太小的“超限”栏时,配置的行为开始变差。如果此栏高1px,则红色边框会消失,只有1px的笔刷颜色线会呈现。我需要渲染边框颜色线。所以我试图改变这个酒吧的颜色。获取vertiacal酒吧的高度为具体的价值

这里是我的代码部分:

Series1.AddY((RamTotal-RamAvailable-memover)/mb, titlemem); 
if memover > 0 then 
    Series2.AddY(memover/mb, titlememover); 
if (memover > 0) and (Series2.CalcBarBounds(0).Height <= 2) then 
    Series2.ValueColor[0] := FSmallOverColor; 

问题是CalcBarBounds功能。只有在图表已经显示之后它才返回正确的值。这是第一次返回0.这会导致将边框颜色应用到每个“超限”栏,而不管第一次显示时它的高度如何。当我按下重载按钮清除所有系列并调用与以前相同的代码时,一切都看起来很好。如果我从代码调用重新加载,它不起作用。调用刷新,重绘或任何不起作用。尝试在AfterDraw事件上更改颜色也不起作用。

每个系列只有一个值。我有TeeChart标准v2012.06.120613 32位。

回答

1

问题在于CalcBarBounds函数。已经显示图表后,它仅返回正确的值 。第一次返回0. 结果将边框颜色应用于每个“超出限制”栏,无论 它是第一次显示时的高度。当我按下重新加载 按钮清除所有系列,并调用相同的代码, 一切看起来不错。如果我从代码调用重新加载,它不起作用。

在调用CalcBarBounds之前,您可能必须强制重新绘制图表。 某些内部值未被初始化或在图表完成第一次绘制之前没有有效值。

调用刷新,重绘或任何不利于

你有没有打过电话Draw功能?

+0

这不是一个答案。这是一个信息请求,应该作为评论发布。任何发布在“您的答案”文本区域的内容都应该这样做 - 为问题提供答案。你应该扩大这个解释并使之成为一个声明,以便它看起来像一个答案,或将其转移到对原始问题的评论。 [faq]有关于两者之间的区别的信息。 :-) – 2013-04-05 20:53:32

+0

我写它作为答案,因为它可能是解决主要问题的关键。我同意这可能会更好,但我优先考虑质量问题。我想这应该是创作者应该说是否足以解决问题。无论如何,我会尽力改善它。 – Yeray 2013-04-08 08:19:06