Comment afficher des données issues d'une grille dans un graphe en Delphi?

cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008 - 13 déc. 2007 à 16:50
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 13 juil. 2008 à 17:57
Bonjour,


J'ai des données issues d'un fichier que j'ai stocké dans une grille. Mais je n'arrive pas à les afficher sur un graphe (Outils TeeChart utilisant l'objet TChart). J' ai choisie une représentation TlineSeries mais je n'arrive pas à transferer les données de la grille et a les afficher.


Voici le code que j'ai écrie:




Procedure TForm1.Series1Click(Sender: TChartSeries; ValueIndex: Integer;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  var
     i, long_list:Integer;


begin
  long_list:= ComboBox1.Items.Count;
  for i:=0 to long_list do
  begin
     Series1.XValues.Value[i]:=strtofloat(StringGrid1.Cells[1,i]);
     Series1.YValues.Value[i]:=strtofloat(StringGrid1.Cells[2,i]);


  end;


end;

15 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 déc. 2007 à 18:23
essaie comme çà :

procedure TForm1.Chart1BeforeDrawSeries(Sender: TObject);
var
    i;
begin
series1.Active := false;
 for i:=0 (ComboBox1.Items.Count - 1) do
do
begin
series1.XValues.Value[0] := strtofloat(StringGrid1.Cells[1,i]);
Series1.YValues.Value[3]:= strtofloat(StringGrid1.Cells[2,i]);
series1.Active := true;
end;
end;

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 déc. 2007 à 18:25
désolé j'ai dérapé :

procedure TForm1.Chart1BeforeDrawSeries(Sender: TObject);
var
    i : integer;
begin
series1.Active := false;
 for i:=0 (ComboBox1.Items.Count - 1) do
do
begin
series1.XValues.Value[0] := strtofloat(StringGrid1.Cells[1,i]);
Series1.YValues.Value[3]:= strtofloat(StringGrid1.Cells[2,i]);
series1.Active := true;
end;
end;

nb : mets les series en manuel

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 déc. 2007 à 18:29
Je vais y arriver..

procedure TForm1.Chart1BeforeDrawSeries(Sender: TObject);
var
    i : integer;
begin
series1.Active := false;
 for i:=0 (ComboBox1.Items.Count - 1) do
begin
series1.XValues.Value[i] := strtofloat(StringGrid1.Cells[1,i]);
Series1.YValues.Value[i]:= strtofloat(StringGrid1.Cells[2,i]);
series1.Active := true;
end;
end;

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 déc. 2007 à 18:32
Cette fois-ci , c'est la bonne !

procedure TForm1.Chart1BeforeDrawSeries(Sender: TObject);
var
    i : integer;
begin
series1.Active := false;
 for i:=0 (ComboBox1.Items.Count - 1) do
begin
series1.XValues.Value[i] := strtofloat(StringGrid1.Cells[1,i]);
Series1.YValues.Value[i]:= strtofloat(StringGrid1.Cells[2,i]);
end;
series1.Active := true;
end;

çà marche ?

cantador
0

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

Posez votre question
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
14 déc. 2007 à 11:52
Bonjour,

Je vous remercie pour les informations; dans tous les cas, je les testerais et vous tiendrait informé.

Bonne journée.
0
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
17 déc. 2007 à 12:07
Bonjour,

Excuse moi, je n'ai pas repondu de suite car je n'ai pas de connexion chez moi en ce moment.
Mais en utilisant ton code, les points ne s'affichent toujours pas sur le Tchart; Par contre, quand j'utilise AddXY en entrant des vrais valeurs a i, j'arrive à tracer la ligne.
Par contre en utilisant une boucle avec : series1.AddXY(strtofloat(StringGrid1.Cells[1,i]), strtofloat(StringGrid1.Cells[2,i]));
j'ai un message d'erreur qui me dit que j'ai un problème avec des virgules flottantes.

bon début de semaine. 
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
17 déc. 2007 à 13:15
"j'ai un message d'erreur qui me dit que j'ai un problème avec des virgules flottantes."
çà vient vraisemblablement du séparateur décimal :
il faut le fixer dès le départ..

initialization
  DecimalSeparator := '.';
ou := ','; selon la configuration choisie dans ton panneau de configuration

un petit test :
    DecimalSeparator := '.';
    test := StrToFloat('4.03');
    showmessage(floatToStr(test));


il faudra aussi faire attention comment présenter les données dans l'écriture :

series1.XValues.Value[i] := ??????

Mais tu devrais t'en sortir..

cantador
0
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
17 déc. 2007 à 15:37
Ok, merci

Je vais le faire en entrant chez moi.

Bonne fin de journée.
0
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
30 juin 2008 à 15:59
Bonjour à tous,

j'ai écris un programme en Delphi qui affiche les coordonnées des points dans un stringGrid, je voudrais maintenant ajouter une valeur fixe à chacune des colonnes de mon stringGrid mais ça ne passe pas.
Exemple: ici j'ai des nombres à virgule

x y z

2 6 5
8 6 9

si la colonne des x je dois ajouter 2.3 , j'aurais donc

4.3 6 5
10.3 6 9

Cordiales salutations.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
1 juil. 2008 à 09:25
pour Afficher le graphe d'une série de données qui bougent dans le temps
(ajout, modification, suppression) il est préférable de construire une Table.
Ensuite, tu utilises le DBChart que tu relies à un Dataset.

Ainsi, ton chart s'affichera dynamiquement en fonction de l'évolution de tes données.
Les écritures seront celles concernant les tables.
C'est beaucoup plus simple.

Pour  le StringGrid, voilà un bout de code que tu pourras adapter :
procedure TForm1.Button1Click(Sender: TObject);
var
Incr,total :Extended;
begin
Incr := 2.3;
StringGrid1.Cells[2,2] := '2';
total := StrToInt(StringGrid1.Cells[2,2]) + Incr;
StringGrid1.Cells[2,2] := FloatToStr(total);
end;

cantador
0
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
1 juil. 2008 à 11:40
Bonjour et merci pour les indications, sauf que j'ai pû résoudre le problème dans la nuit en utilisant deux stringGrid. Donc je mettrais le bout de code sur le forum demain.
0
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
13 juil. 2008 à 11:56
Bonjour à tous,

Je reviens sur un problème que j'avais posé il y'a longtemps et que je n'ai toujours pas trouver de solution. En effet, j'affiche des résultats sur un stringgride sur quatre colonnes et plusieurs lignes que je voudrais envoyer ensuite dans un fichier text ou excel.

Merci de m'orienter et bon dimanche à tous.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 juil. 2008 à 13:13
C'est un problème récurent sur le site..
Cherche un peu, il y a plein d'exemples un peu partout.

cantador
0
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
13 juil. 2008 à 15:38
Bonjour,

j'ai essayé de fouiller mais je trouve par contre comment passer d'un fichier text pour un stringgrid mais l'opération inverse je ne trouve pas. Dans tous les cas je vais continuer a chercher.

Merci et bonne journée.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 juil. 2008 à 17:57
StringGrid vers EXCEL




bonne fin de week-end à toi aussi

cantador
0
Rejoignez-nous