Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : TChart [ Archives / J'AI BESOIN D'AIDE !!!! :O ] (yannba)

samedi 18 février 2006 à 18:56:25 | TChart

yannba

J'utilise un graphique avec une base de données :

procedure CalculGraphique;
var i,j:integer;
    donnees : array [0..1000] of real;
begin
    With Form5.Chart1 do
        Begin
            Series1.Clear;
            for i:=0 to 1000 do donnees[i]:=0;
            i:=0;
            j:=0;
            DM.ADOTableOperations.First;
            With DM.ADOTableOperations do
                While not Eof do
                    begin
                        donnees[i]:=FieldByName('Montant').Value;
                        i:=i+1;
                        Next;
                    end;
            j:=i-1;
            for i:=0 to j do Series1.Add(donnees[i]); // Ligne
            for i:=0 to j do Series2.Add(donnees[i]); // Histogramme
            for i:=0 to j do Series3.Add(donnees[i]); // Sectoriel
            for i:=0 to j do Series4.Add(donnees[i]); // Aire
        end;
end;

procedure TForm5.FormCreate(Sender: TObject);
Begin
    CalculGraphique;
End;

N'ayant pas trouvé de tuto sur les graphiques + ADO, j'ai essayé d'écrire le code. Si vous connaissez plus simple, ou des tutos sur le web, je suis preneur ...

Ceci dit, comprend pas pourquoi :
identificateur non declaré : series1 dans ma procedure calculgraphique ?


samedi 18 février 2006 à 19:17:43 | Re : TChart

cirec

Membre Club Administrateur CodeS-SourceS
Salut,
si tu as un message identificateur non déclarer c'est que tu as oublier de le faire où il est pas visible dans cette procedure.
si c'est un composant que tu as déposé sur la form dans ce cas il faut faire :

Form5.Serie1..... puisque ta procédure est extèrne à Form5 " procedure CalculGraphique;"

Pour que le composant soit visible à l'intérieur de ta procédure il aurait fallu que tu la déclares comme ceci:

procedure TForm5.CalculGraphique;


@+
Cirec


samedi 18 février 2006 à 19:25:40 | Re : TChart

yannba

Je l'avais deja fait et ca marchait pas, et je viens de redemarrer Delphi, et là ca marche ... C'est pas la 1° fois qu'il me fait ca ! Fa falloir que je reinstalle delphi, moi !

Sinon, que penses tu de ce code ? Y a pas moyen de faire mieux ?

samedi 18 février 2006 à 19:33:09 | Re : TChart

cirec

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,
je suppose que Series est un TChart si non il faut remplacer par le bon composant
      For X := 1 To 4 Do
        With TChart(FindComponent('Series' + IntToStr(X))) Do
            For i:=0 to j do Add(donnees[i]); // Ligne

 

@+
Cirec

samedi 18 février 2006 à 19:50:01 | Re : TChart

yannba

procedure Tform5.CalculGraphique;
var i,j,x:integer;
    donnees : array [0..1000] of real;
begin
    With Chart1 do
        Begin
            Series1.Clear;
            for i:=0 to 1000 do donnees[i]:=0;
            i:=0;
            j:=0;
            DM.ADOTableOperations.First;
            With DM.ADOTableOperations do
                While not Eof do
                    begin
                        donnees[i]:=FieldByName('Montant').Value;
                        i:=i+1;
                        Next;
                    end;
            For X := 1 To 4 Do
              With TChart(FindComponent('Series' + IntToStr(X))) Do
                For i:=0 to j do Add(donnees[i]); // Ligne
        end;
end;

Series est bien un TChart.
add : identificateur non déclaré ... toujours le meme probleme ....


samedi 18 février 2006 à 23:11:09 | Re : TChart

Delphiprog

Administrateur CodeS-SourceS
Réponse acceptée !
Il faut ajouter une série à la liste des séries et non au graphique lui-même :

procedure Tform1.CalculGraphique;
var
  i, j, x: integer;
  donnees:
arrayof real; //tableau dynamique
  s: TChartSeries;
begin
with Chart1 do
begin
    Series1.Clear;
   
//plus rapide qu'une boucle
    FillChar(donnees, SizeOf(Donnees), 0);
    i :=
0;
    j :=
0;
    DM.ADOTableOperations.First;
   
//dimensionner le tableau
    SetLength(donnees, DM.ADOTableOperations.RecordCount);

   
with DM.ADOTableOperations do
whilenot Eof do
begin
        donnees[i] := FieldByName('Montant').AsFloat;
        inc(i);
        Next;
     
end;
   
for X := 1to4do
begin
if FindComponent('Series' + intToStr(X)) is TChartSeries then
begin
        S := FindComponent('Series' + intToStr(X)) as TChartSeries;
       
with S do
//attention : j est toujours égal à zéro
for i := 0to j do
            Add(donnees[i]); // Ligne
end;
   
end;
 
end;
end;

Comme je ne comprends pas bien ton algorithme, je ne l'ai pas retouché. En effet, je ne vois pas pourquoi tu veux stocker les données dans un tableau avant de les affecter aux séries. De plus, la variable J est initialisée à zéro, ce qui fait que dans la dernière boucle, il ne se passera rien. Sans doute as-tu oublié d'affecter i à j quelque part...

A mon avis, t'es pas tiré d'affaire et un peu de réflexion avant de poser un tas de questions sur le forum serait une bonne formule pour apprendre.

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

vendredi 3 mars 2006 à 11:20:44 | Re : TChart

yannba

Pour Delphiprog :
"A mon avis, t'es pas tiré d'affaire et un peu de réflexion avant de poser un tas de questions sur le forum serait une bonne formule pour apprendre"

Le problème était que j'avais trouvé des codes sur le net, et qu'ils utilisaient tous un tableau ... Vu que l'aide de Delphi, à moins d'etre un informaticien, on n'y comprend rien, je suis obligé de m'inspirer du savoir-faire des autres pour avancer ... J'ai juste derrière moi que 2 MOIS d'informatique en PROGRAMMATION.
Ceci dit :
- J'ai reglé effectivement mon problème en enlevant le tableau
- Ton code, m'a permis de comprendre comment fonctionner le "array" que j'ai aussitot mis en application, avec pour cette fois une utilisation adéquate !

Merci également à Cirec !! ... avec un peu de retard, certes, mais j'avance doucement.

samedi 4 mars 2006 à 23:52:17 | Re : TChart

Delphiprog

Administrateur CodeS-SourceS
Excuse-moi si ma remarque t'a blessé. Mais le mélange de problèmes avec un algorithme qui ne semblait mener nul part me faisait penser que tu avais les idées confuses. Mais s'il s'agit de code récupéré sur le net, sois prudent. Même dans les bouquins les codes fournis ne marchent pas souvent tels quels.

Dire que l'aide en ligne fournie avec Delphi est mal fichue c'est parler un peu vite.
Et d'une, elle est en français. Et de deux, c'est surement l'une des plus claires. En revanche, elle n'est pas toujours en phase avec les nouvelles classes proposées dans chacune des versions. Certains concepts ou fonctionnalités avancés sont bien souvent restés dans l'ombre faute de documentation. Il ne suffit pas de faire un bon produit ou un bon composant. Sans documentation il n'est rien et tombe vite dans les oubliettes.
Imagine que le composant TChart ait été livré sans documentation !
Ce magnifique et puissant composant aurait été relégué au 10e sous-sol.
C'est vrai que, pour quelqu'un qui débute, s'attaquer à l'utilisation de TChart ça ne doit pas être évident si on ne possède pas les bases.
Courage, tiens bon


Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

mercredi 28 mars 2007 à 14:59:40 | TChart et séries

ibrahimakhalil


    je travail sur un projet avec tchart et je dois tracer beaucoup de droites en les lier avec des points que j'ai designé comme un série de points les autres séries sont des lignes, mais je n'arrive pas à joindre aux points les lignes
je veux qu'à chaque fois qu'on clique sur le bouton qui trace la droite qu'une série se crée automatiquement mais mis
 Tpoint=record
    x:integer;
    y:integer;end;
dans la procedure qui place les points j'ai mis
with serie1 do
addxy(strtoint(edit1.text),strtoint(edit2.text),edit3.text,clteecolor);
// edit3.text est le nom du noeud
et dans celui qui tarce les droites j'i mis
series:=Tlineseris.create(self);
series.parentChart:=chart1;
addxy(c.x,c.y,'',clteecolor);// c.x,c.y sont les point qui séront joint

si j'execute le côte gauche du chart se bouré de chiffre
priere de bien vouloir m'aider







Cette discussion est classé dans : donnees, do, to, for, begin


Répondre à ce message

Sujets en rapport avec ce message

garder plusieurs images en memoire [ par valkyrie ] Bonjourj aimerais garder en memoire plusieurs images en meme temps du genrej ai une fenetre avec 6 boutons d opendialogje rentre le nom de l image dan exo sur les tableau pour les debutents [ par aom2009 ] ce programme c'est pour s'exercer sur les tableaux ecrit par aom2009 program tab_de_2dimension; uses crt; {itroduction For i :=0 to 3 do ! [ par Delphiturbo ] Salutou puis je ajouter und autre (begin, End) dans le Code ?procedure TForm1.FormCreate(Sender: TObject);var node: TTreeNode;I: Integer;data: PMyData Casting de TList [ par Nicolas___ ] Bonjour , Bon j'ai d'abord une premiere qestion : En delphi , est ce que TList est l'equivalent de Vector en Java (pour ceux qui connaissent ) c'est à pus capable [ par Le Néophyte ] Salut j'essaie de faire un "minable" de petit programme, qui lorsqu'on pèse sur exécuter ça fera apparaître à l'écran (fenêtre dos)les nombres premier Tchart Series [ par ryadus ] 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'+intt A nono40 [ par apz ] Salut,le code suivant me donne l'erreur suivante:Trop de parametres regionaux dans la fonction delete(s, pos(' ',s),1);je crois que le compilateur pou Boucle FOR avec un pas defferent [ par apz ] Salut, Comment specifier un pas a pas dans la boucle For. For i:=1 to 10 ---> avec un (STEP) pas=2 i: 1, 3, 5, 7, 9 l'inverse de For i:=10 to 1 Downto Index d'un table Dbase [ par webazard ] Bonjour, je crée un base Dbase indiqué dans l'aide de delphi en remplacant ttparadox par ttdbase.en supprimant la construction d'index min prog marche for n:=0 to... [ par MoveX ] Je comprend vraiment pas pourquoi la memo2 n affiche que l ord du dernier caractere : n: Integer; text: String; text:= Memo1.Text; for n:=0 to Len


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.