IDE:c++ Builder XE5 Update 2
TeeChart Build:2014.11.140512
我正在尝试将TChart
组件上的某些系列放到前面(就像通常使用BringToFront()
函数一样)。
我做了一些阅读并找到了以下选项/建议:
一个。更改系列的ZOrder
属性。
B中。使用TChart.ExchangeSeries()
使用TChart.ExchangeSeries()
不是更改系列的z顺序的正确方法。它的主要功能是在TChart
组件SeriesList
中交换两个系列(然后固有地更改这些系列的z顺序)。如果您需要修复系列排序(SeriesList
中的固定排序),那么这将不起作用。
更改系列的ZOrder
属性可带来更好的效果。但是,更改第一个系列ZOrder
的{{1}}显然无效。 Series[0]
似乎喜欢坐在课堂后面。
以上可能是我实施的结果。在这种情况下,还有一些细节:
在我的Series[0]
组件上,我有多个系列。系列类型可以动态更改。系列可以更改的类型仅限于TChart
和TLineSeries
。
我总是希望前面的TBarSeries
。
关于如何做到这一点的任何建议?
(我们是否会看到难以捉摸的TLineSeries
功能?):)
答案 0 :(得分:0)
关于如何做到这一点的任何建议?
看起来混合系列样式和更改ZOrder效果不佳。例如,使用此代码段:
uses Series;
procedure TForm1.FormCreate(Sender: TObject);
begin
Chart1.AddSeries(TLineSeries.Create(Self)).FillSampleValues(10);
Chart1.AddSeries(TLineSeries.Create(Self)).FillSampleValues(10);
Chart1.AddSeries(TBarSeries.Create(Self)).FillSampleValues(10);
Chart1.AddSeries(TBarSeries.Create(Self)).FillSampleValues(10);
Chart1.AddSeries(TBarSeries.Create(Self)).FillSampleValues(10);
end;
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
for i:=0 to Chart1.SeriesCount-1 do
begin
Chart1[i].Marks.Visible:=False;
if Chart1[i] is TLineSeries then
Chart1[i].ZOrder:=Chart1.SeriesCount - 1 - i
else
Chart1[i].ZOrder:=i;
end;
end;
线系列被带到前面,但是系列风格仍然存在。我也试过过Bar系列StackGroups:然而,它并没有太大的区别。我们还需要StackGroups作为系列作品。
(我们会看到难以捉摸的TChartSeries.BringToFront()函数吗?) :)
为什么不呢?我已将您的请求添加到Steema Software的bugzilla平台:http://bugs.teechart.net/show_bug.cgi?id=853。随意注册并将自己添加到CC列表以接收自动问题更新。