質問

私が管理しているTChartを使用するレポートがあります。追加されるTLineSeriesの1つには、背景に近すぎるclWhite(clBtnFace)の色が割り当てられます。

変更すると、追加される次のシリーズはclWhiteになります。他のすべてのシリーズが作成された後に戻って変更するのではなく、シリーズのいずれもclWhiteにしたくないことをTChartに伝える方法はありますか?

シリーズがTChartに追加されると、TChartはそれに色を割り当てます。 clWhiteを割り当てないようにします。

役に立ちましたか?

解決

簡単にgiveめるのではなく、もう少し検索しました。 TeeProcs ユニットには、タイプ TColorArray ColorPalette というユニット変数があります。白を見つけて、それを修正する別の色に置き換えた場合。インスタンスのコピーが存在する場合があります。それが好まれるので、私は探し続けます。

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;

ところで、私も質問をしたので回答として受け入れることはできませんが、テストしましたが動作します。

他のヒント

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;

一連のメソッドClearPaletteを使用してからAddPaletteを使用して、カスタムパレットを作成できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top