シリーズがDelphi TChartでclWhiteを使用しないようにします
質問
私が管理している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を使用して、カスタムパレットを作成できます。