TeeChart:如何将系列带到前面

时间:2014-07-18 10:27:21

标签: c++builder teechart

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]组件上,我有多个系列。系列类型可以动态更改。系列可以更改的类型仅限于TChartTLineSeries

我总是希望前面的TBarSeries

关于如何做到这一点的任何建议?

(我们是否会看到难以捉摸的TLineSeries功能?):)

1 个答案:

答案 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列表以接收自动问题更新。