TChartSeries

Résolu
Signaler
Messages postés
9
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
9 juin 2007
-
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
-
Bonjour,
J'ai quelques petits problèmes avec le composant TChartSeries.
Dans mon programme je créais un composant Tchart et un composant TChartSeries dynamiquement dans un nouveau Ttabsheet aussi créé dynamiquement... ca en fait du dynamique ! :)
Tout marche bien seulement les données ne s'affiche pas dans la série, la légende est bien la mais pas le graph' ..
Je vous copie le code :
---------------------
var
  T:Ttabsheet;
  C:TChart;
  i:integer;
  S:TChartSeries;
begin
  T:=Ttabsheet.Create(page_control);
  T.Enabled:=true;
  T.Name:='Tab';
  T.Parent:=page_control;
  T.PageControl := page_control
  T.Caption := 'tab1';
  C := Tchart.Create(T);
  C.Parent:=T;
  C.Align:=alclient; //Align sur le Ttabsheet
  c.SeriesList.Clear;
  S := TChartSeries.Create(T);
  s.Parentchart := C ;
  s.Name:= 'Serie1';
  c.AddSeries(S);

 {  creation_serie(s,'Bla') ;
  s.Add(random(50),'Dupon', Clyellow);
  s.Add(random(50),'Dupon', Clblue);
  s.Add(random(50),'Dupon', Clred);
  }
  for i:=0 to 10 do
    s.Add(random(50));
end;

---------------------------

Voila donc je vous remercie par avance car j'ai beau chercher sur internet, je ne comprend pas pourquoi cela ne marche pas ..
 
@+

6 réponses

Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

rempalce
TChartSeries
par
un descendant de TCustomLineSeries. Ex: TLineSeries.

et cela devrait marcher snas problem.

aussi:
tu veux peut-etre rempalcer .name par .title
et il n'est pas nlécessaire d'appler addserie si tu affect le parentSerie.

bon code,

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
9
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
9 juin 2007

Je te remerci, je suis trop content car ca fais depuis un petit moment que je cherche .
A part ca pour le .name c'est pour pouvoir retrouver le composant quand je fais une recherche sur tout les composants , car je vais ajouter au Top un numéro spécifique  au séries  (Histoire d'avoir toujours la main sur les composants, car je vais surement les supprimer ultérieurement..) .

Merci encore !!!
 
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

si c'est pour le retrouver, tu peux:
- parcourire le MonChart.Series[i]
- garder un pointeur sur tes series créees dynamiquement dans un tableau / ou un champ d'object.
(genre si t'as une série par TPersonne, ajouter un champs de type TCustomChartSerie dans le TPersonne). C'est une bonne méthode. (perso, j'aime pas parcourir les compo par nom. c'est pas propre et lent)

bon code!

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
9
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
9 juin 2007

  Suite à ton commentaire j'ai réalisé ceci :
    P_graphique_objet:array [0..10] of  ^TLineSeries;
..
..
  S : TLineSeries ;
begin
P_graphique_objet[0].Ls := @S;

Mais je ne sais pas comment accéder au composant, exemple afin de le supprimer .. donc si tu pouvais un peux m'éclairer car les pointeurs sur type de base je comprend mais sur des objets l'accès doit etre différent je pense.
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

les instances de class sont déjà des pointeurs (au contraire des records). tu n'as pas besoin de "^" et de "@"

Graphique_objet:array [0..10] of TLineSeries;
..
S : TLineSeries ;
begin
S : = TLineSeries.Create;
...
Graphique_objet[0] := S;

A+

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
oups...un exemple:

procedure MonCreateSeries:
for i := low(...  to high(...
S:= TLineSeries.Create;
...
Graphique_objet[i] := S;
end;//For

procedure MonAddPoint (aAddValue:double):
for i := low(...  to high(...
  
Graphique_Object[i].AnAddMethod(aAddValue);

si tu les crée avec un owner<>nil (ex: le chart) le destroy est automatique.

"je ne sais pas comment accéder au composant":
"Graphique_Object[i]" est compleetement equivalement à "S".

note: il te faut, juste faire gaffe que la var est assignée (assigned)  avant de t'en servire. Sinon -> Acces Violation

A+

Loda
<hr size ="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.