Tchart Series

cs_ryadus Messages postés 64 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 21 octobre 2008 - 10 avril 2003 à 11:12
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 1 mai 2003 à 14:01
Si il y a par exemple 30 series,

le probléme est que je ne sais pas comment utiliser
for i:=1 to 30 do
begin TLineSeries(FindComponent('series'+inttostr(i))).clear;
for j:=0 to 9 do
TLineSeries(FindComponent('series'+inttostr(i))).addxy(landa[j],NbSCD[i-1,j]

,'',ClYellow);
end;

dans une unité qui ne contient pas les series; ie: les Chart sont dans Form2 et moi je veux les utilsés dans unit1; ???
comment dois-je faire ???
Merci

3 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
10 avril 2003 à 20:24
Comme TLineSeries est un descendant de TList, tu peux donc utiliser la méthode Assign :
procedure Assign(ListA: TList; AOperator: TListAssignOp laCopy; ListB: TList nil);

Ainsi, tu crées dynamiquement (dans Unit1) tes séries et tu les affectes par copie au composant TChart déclaré dans Unit2.
- créer un Composant TLineSeries
- Ajouter les séries
- affecter par Assign les séries à TChart dans Unit2
- libérer ton composant TLineSeries

Ceci est une démarche comme une autre.
May Delphi be with you
0
cs_ryadus Messages postés 64 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 21 octobre 2008
1 mai 2003 à 12:37
Resalut;
pouvez svp être plus clair sur la fct Assign, je n'ai pas su comment lutiliser, si c possible donner moi un exmple;
merci infiniment;
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
1 mai 2003 à 14:01
Le fait que le graphique TChart figure sur une autre fiche n'a aucune importance dans l'exemplede code qui suit :
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j : integer;
  cs : TChartSeries;
const
  SeriesNames : array[0..5] of string = 
   ('blé', 'orge', 'pommes de terre', 'betteraves', 'avoine',
    'colza');
begin
  //Remplissage aléatoire du TStringGrid
  for i := 1 to StringGrid1.RowCount - 1 do
  begin
    {le nom de la série sera pris aléatoirement dans le tableau
    pour le jeu de tests}
    StringGrid1.Cells[0, i] := IntToStr(i) + ':' + SeriesNames[Random(6)];

    for j := 1 to StringGrid1.ColCount - 1 do
    begin
      //Ligne du haut remplie avec des "années"
      StringGrid1.Cells[j, 0] := IntToStr(2000 + j);
      //Remplissage avec des valeurs aléatoires
      StringGrid1.Cells[j, i] := IntToStr(Random(60) + 40);
    end;
  end;

  // [1] Effacement des séries
  Chart1.SeriesList.Clear;
  for i : = 1 to StringGrid1.RowCount - 1 do
  begin
    //[2]1 ligne =  1 série
    cs := TLineSeries.Create(Chart1);
    cs.Title := StringGrid1.Cells[0, i];
    // [3] Don't forget this :
    cs.ParentChart : = Chart1;
    for j :=  1 to StringGrid1.ColCount - 1 do
      //Ajout des valeurs à la série
      cs.Add(StrToIntDef(StringGrid1.Cells[j, i], 0), StringGrid1.Cells[j, 0]);
  end;
end;

Explication des chiffres figurant en gras et entre crochets :
[1] : Chart1.SeriesList.Clear;
Inutile de parcourir la liste des éries pour les effaces. L'appel de la méthode Clear suffit pour celà.

[2] cs : = TLineSeries.Create(Chart1);Ici on crée, au sein d'une boucle, des séries de type lignes en leur affectant un propriétaire (Chart1).

[3] cs.ParentChart := Chart1;
SURTOUT, ne pas oublier cette instruction sinon tu ne verras rien s'afficher.
Est-ce suffisamment clair comme exemple ?
May Delphi be with you
0
Rejoignez-nous