Предотвратите использование серии clWhite с помощью Delphi TChart

У меня есть отчет, в котором используется TChart, который я поддерживаю. Одному из TLineSeries, который добавляется автоматически, присваивается цвет clWhite, который слишком близко к фону (clBtnFace).

Если я его изменю, следующая добавленная серия добавит clWhite. Так что, не вернувшись и изменив его после создания других серий, есть ли способ сказать TChart, что я не хочу, чтобы какая-либо из моих серий была clWhite?

Когда в TChart добавляется серия, TChart присваивает ей цвет. Я хочу, чтобы он не назначал clWhite.

delphi,charts,colors,teechart,

2

Ответов: 3


6 ов принято

Хорошо, чтобы никто не сдавался, я сделал еще несколько поисков. Существует переменная единица называется ColorPalette типа TColorArray в TeeProcs блоке. Если я нахожу и заменяю белый цвет другим цветом, который его исправляет. Может быть экземпляр экземпляра. Я буду продолжать смотреть, так как это было бы предпочтительнее.

Чтобы вернуть обратно ColorPalette, просто вызовите метод unit 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;

Кстати, я не могу принять в качестве ответа, потому что я тоже задал вопрос, но я его протестировал, и он работает.


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;

0

Вы можете использовать методы серии ClearPalette, затем AddPalette, чтобы создать свою пользовательскую палитру.

Делая, графики, цвет, TeeChart,
Похожие вопросы