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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top