TChartSeries [Résolu]

xzenou 9 Messages postés samedi 4 mars 2006Date d'inscription 9 juin 2007 Dernière intervention - 7 juin 2007 à 17:20 - Dernière réponse : cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention
- 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 ..
 
@+
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 8 juin 2007 à 09:26
3
Merci
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.

Merci cs_Loda 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de cs_Loda
xzenou 9 Messages postés samedi 4 mars 2006Date d'inscription 9 juin 2007 Dernière intervention - 8 juin 2007 à 12:08
0
Merci
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 !!!
 
Commenter la réponse de xzenou
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 8 juin 2007 à 12:51
0
Merci
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.
Commenter la réponse de cs_Loda
xzenou 9 Messages postés samedi 4 mars 2006Date d'inscription 9 juin 2007 Dernière intervention - 9 juin 2007 à 00:54
0
Merci
  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.
Commenter la réponse de xzenou
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 11 juin 2007 à 09:10
0
Merci
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.
Commenter la réponse de cs_Loda
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 11 juin 2007 à 09:19
0
Merci
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.
Commenter la réponse de cs_Loda

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.