2

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

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

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

4

3 に答える 3

6

簡単にあきらめるわけにはいかないので、さらに検索しました。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;

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

于 2008-10-15T00:49:11.017 に答える
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;
于 2008-10-14T23:41:08.190 に答える
0

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

于 2008-10-15T01:10:13.613 に答える