Question

J'ai un rapport qui utilise un TChart que je tiens à jour. L'un des TLineSeries ajoutés est automatiquement affecté de la couleur clWhite, trop proche de l'arrière-plan (clBtnFace).

Si je le modifie, la prochaine série ajoutée sera prise en blanc. Donc, à moins de revenir en arrière et de le changer une fois que toutes les autres séries ont été créées, y a-t-il un moyen de dire à TChart que je ne veux pas qu’une de mes séries soit blanche?

Quand une série est ajoutée au graphique, ce dernier lui attribue une couleur. Je veux qu'il ne soit pas attribué à ClWhite.

Était-ce utile?

La solution

OK, pas du genre à abandonner facilement, j’ai fait quelques recherches supplémentaires. Il existe une variable d'unité appelée ColorPalette de type TColorArray dans l'unité TeeProcs . Si je trouve et remplace le blanc avec une couleur différente qui le corrige. Il peut y avoir une copie d'instance de celui-ci. Je continuerai à chercher car cela serait préféré.

Pour rétablir ColorPalette , il suffit d'appeler la méthode d'unité SetDefaultColorPalette dans la même unité.

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, je ne peux pas accepter comme réponse car j'ai également posé la question, mais je l'ai testée et cela fonctionne.

Autres conseils

Comme je peux le dire à partir du module TeeCharts; non, vous ne pouvez pas spécifier une couleur qui ne devrait pas être telle qu'elle est livrée.
Vous pouvez parcourir par programmation toutes les entrées TLineSeries en vous assurant au moment de l'exécution qu'elles n'utilisent pas clWhite. Supposons que vous ayez un tableau de couleurs acceptables clArray, vous pouvez utiliser le code suivant pour définir les couleurs de chacune des entrées du tLineSeries au moment de l'exécution.

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;

Vous pouvez utiliser les méthodes de série ClearPalette, puis AddPalette pour créer votre palette personnalisée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top