防止系列使用clWhite和Delphi TChart

时间:2008-10-14 22:55:21

标签: delphi charts colors teechart

我有一份使用我正在维护的TChart的报告。其中一个自动添加的TLineSeries被赋予颜色clWhite,它太靠近背景(clBtnFace)。

如果我改变它,那么下一个添加的系列就会变成clWhite。在创建了所有其他系列之后,没有返回并更改它,是否有一些方法告诉TChart我不希望我的任何系列都是clWhite?

当系列添加到TChart时,TChart会为其指定颜色。我希望它不要分配clWhite。

3 个答案:

答案 0 :(得分:6)

确定没有人轻易放弃,我做了一些搜索。 TeeProcs 单元中有一个名为 ColorPalette 的单元变量 TColorArray 。如果我找到并用不同的颜色替换白色来修复它。可能有它的实例副本。我会继续寻找,因为那将是首选。

要恢复 ColorPalette ,只需在同一单元中调用单位方法 SetDefaultColorPalette

SetDefaultColorPalette; // Make sure we start with the default
ColorPalette[4] := $007FFF; // Change White to Orange
try
  // add series to the chart
finally
  SetDefaultColorPalette;  // Set it back to Default
end;
顺便说一句,我不能接受答案,因为我也问了这个问题,但我测试了它并且它有效。

答案 1 :(得分:2)

我可以从TeeCharts模块中看出来;不,你不能指定它出货时不应该的颜色 您可以以编程方式遍历所有TLineSeries条目,确保在运行时它们不使用clWhite。 假设您有一组可接受的颜色clArray,您可以使用以下代码在运行时设置每个tLineSeries条目的颜色。

procedure TForm1.setColors(aChart: TChart; aColorArray: array of TColor);
var
  chi : Integer;
  coi : Integer;
begin
  coi := low(aColorArray);
  for chi := 0 to aChart.SeriesList.Count - 1 do begin
    aChart.SeriesList[chi].Color := aColorArray[coi];
    inc(coi);
    if coi > high(aColorArray) then
      coi := low(aColorArray);
  end;
end;

procedure TForm1.FormShow(Sender: TObject);
var
  ca : array of TColor;
begin
  setLength(ca, 3);
  ca[0] := clRed;
  ca[1] := clBlue;
  ca[2] := clGreen;
  setColors(Chart1, ca);
end;

答案 2 :(得分:0)

您可以使用系列方法ClearPalette然后使用AddPalette来创建自定义调色板。