Modifier le style des series dans un TChart

SxProg Messages postés 1 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 17 septembre 2008 - 17 sept. 2008 à 14:26
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 - 18 sept. 2008 à 09:27
Bonjour à tous!

Je developpe une application sous Delphi win32 qui permet d'éditer un PV de test à partir d'un fichier de mesure en .xml. Jusqu'ici tout va bien, et je dirais meme plus j'ai presque finis. Il ne me restent qu'un point à finaliser (enfin deux mais le second je pense que c'est une "boulette" de ma part mais je ne sais pas ou...).

Ne trainons pas plus en palabre, et rentrons dans le vif du sujet. J'utilise donc un graphique TChart dans lequel j'ai plusieurs courbes afficher: 3 courbes de mesures et 2 courbes de gabarit. Le problème intervient sur cette dernière. J'arrive à afficher mes 2 courbes (valeurs positives et négatives). Cependant je n'affiche qu'une seule légende et j'aimerais donc que mes deux courbes est le meme "style" (carré, rond, triangle....peut importe la couleur).

Mon code, que j'ai largement simplifier pour une meilleure compréhension , est le suivant:

for i := 0 to 5 do Form1.Chart1.Series[i].Clear;
for Cptcourbe := 0 to NbCourbe do //Compteur du nombre de courbes
   begin
      for CptMesure := 0 to 10 do //compteur du nombre de mesures
         begin
            ValeurX := Cpt; //Valeur en X
            ValeurY := Mesure[CptCourbe][CptMesure]; //Valeur en Y
            Form1.Chart1.Series[Cptcourbe].AddXY(ValeurY,ValeurX,''); //Affectation des valeurs X et Y pour la série correspondante
            if RechercheGabarit = 'Gabarit' then //Si la courbe est un gabarit
               begin
                  ValeurY := - ValeurY; //Inversion de la valeur de Y
                  Form1.Chart1.Series[Cptcourbe+1].AddXY(ValeurY,ValeurX,''); //Affectation des valeurs X et Y pour la série suivante
               end;
         end;
   if RechercheGabarit = 'Gabarit' then  >>>>
   end;

Nota: Peut etre que certains d'entre vous aurons remarquer que dans mon code, s'il y'a un gabarit et une courbe après, la courbe négative du gabarit est effacée. Partons du principe que ma courbe de gabarit est toujours la dernière.

La ou il y'a la pseudo flèche rouge (>>>>) j'ai tenté les possibilités suivantes, sans succès:

Form1.Chart1.Series[CptCourbe+1].Style : = Form1.Chart1.Series[CptCourbe].Style;
Form1.Chart1.Series[CptCourbe+1].Cursor := Form1.Chart1.Series[CptCourbe].Cursor;

J'en appel donc aux lumières des genies de Codes-Sources pour solutionner mon problème. Je suis sacrément mal barré, je doit terminer mon projet pour....lundi dernier!
Je reste a votre disposition pour plus d'info!

Merci a tous!

1 réponse

cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
18 sept. 2008 à 09:27
salut,

je suppose que tu utilise des TSeriesPointer series.

donc, je suppose que ton problème est que le chart.series[] returne des TChartSeries. Donc il te faut la transtyper TSeriesPointer avant de changer le  TSeriesPointer.Style.

un tucs genre (pas compiler)

var
  Sp, Sp2 : TSeriesPointer;
begin
....

if ( Form1.Chart1.Series[CptCourbe+1] is TSeriesPointer) then begin
  SP := Form1.Chart1.Series[CptCourbe+1] as TSeriesPointer;
end else continue;
if ( Form1.Chart1.Series[CptCourbe] is TSeriesPointer) then begin
  SP2 := Form1.Chart1.Series[CptCourbe] as TSeriesPointer;
end else continue;
sp2.style := sp.style;

un lien très utile [ENG]:
http://www.teechart.net/support/viewforum.php?f=3

bon code,

Loda

PS: la prochaine fois, "j'ai tenté les possibilités suivantes, sans
succès" indique la cause de "l'echec" (erreur de
compilation/execution/mauvais resultat + copie du message)

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
0
Rejoignez-nous