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 (Series[0])显然没有任何作用。Series[0]似乎喜欢坐在教室的后面。

以上可能是我实现的结果。在这种情况下,更多的细节:

在我的TChart组件我有多个系列。系列类型可以动态更改。修改系列的类型仅限于TLineSeriesTBarSeries

我总是希望TLineSeries在前面

关于如何做到这一点,有什么建议吗?

(我们会看到难以捉摸的TChartSeries.BringToFront()函数吗?):)

关于如何做到这一点,有什么建议吗?

看起来混合系列风格和改变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;

行系列被带到前面,但条形系列样式仍然在那里。我也尝试过StackGroups bar系列:然而,它并没有太大的区别。对于这项工作,我们还需要StackGroups用于line series。

(我们会看到难以捉摸的TChartSeries.BringToFront()函数吗?):)

为什么不呢?我已将您的请求添加到Steema Software的bugzilla平台:http://bugs.teechart.net/show_bug.cgi?id=853。请随时注册并将自己添加到抄送列表中,以接收自动问题更新。

相关内容

  • 没有找到相关文章

最新更新