TChartSeries

Résolu
xzenou Messages postés 9 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 9 juin 2007 - 7 juin 2007 à 17:20
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 - 11 juin 2007 à 09:19
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

cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
8 juin 2007 à 09:26
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.
3
xzenou Messages postés 9 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 9 juin 2007
8 juin 2007 à 12:08
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 !!!
 
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
8 juin 2007 à 12:51
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.
0
xzenou Messages postés 9 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 9 juin 2007
9 juin 2007 à 00:54
  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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
11 juin 2007 à 09:10
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.
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
11 juin 2007 à 09:19
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.
0