Verhindern Serie verwenden clWhite mit Delphi TChart
Frage
Ich habe einen Bericht, der eine TChart verwendet, die ich beibehalten werde. Einer der TLineSeries, die die Farbe clWhite, die in den Hintergrund (clBtnFace) zu nah wird automatisch zugewiesen hinzugefügt wird.
Wenn ich es ändern, dann wird die nächste Serie, die hinzugefügt wird nimmt clWhite. So kurz, zurückzugehen und es, nachdem alles andere Serie zu ändern erstellt wird, ist es eine Möglichkeit, der TChart zu sagen, dass ich will nicht von meiner Serie clWhite sein?
Wenn eine Reihe mit dem TChart hinzugefügt wird, die TChart weist sie eine Farbe. Ich will es nicht clWhite zuweisen.
Lösung
OK nicht eins geben leicht nach oben, ich habe einige mehr auf der Suche. Es ist eine Einheit Variable mit dem Namen Colorpalette vom Typ TColorArray in TeeProcs Einheit. Wenn wir finden und ersetzen weiß mit einer anderen Farbe, die es festlegt. Es kann eine Instanz Kopie davon sein. Ich werde schauen halten, da das würde bevorzugt werden.
Um die Colorpalette zurück rufen Sie einfach an dem Gerät Methode SetDefaultColorPalette in der gleichen Einheit zurück.
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;
BTW, ich kann nicht akzeptiert als Antwort , weil ich die Frage auch gefragt, aber ich es getestet und es funktioniert.
Andere Tipps
In der Nähe, wie ich aus dem TeeCharts Modul sagen kann; Nein, Sie können nicht eine Farbe angeben, dass es nicht, wie es Schiffe sein soll.
Sie können zur Laufzeit alle TLineSeries Einträge dafür, dass programmatisch zu Fuß durch die sie clWhite nicht verwenden.
Sagen Sie bitte eine Reihe von akzeptablen Farben clArray haben, können Sie den folgenden Code verwenden, um die Farben jedes der tLineSeries Einträge zur Laufzeit einzustellen.
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;
Sie können die Serie Methoden ClearPalette verwenden dann AddPalette Ihre eigene Palette zu erstellen.