Comment afficher des données issues d'une grille dans un graphe en Delphi?
cs_edlain
Messages postés21Date d'inscriptionlundi 7 mai 2007StatutMembreDernière intervention15 août 2008
-
13 déc. 2007 à 16:50
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 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;
A voir également:
Comment afficher des données issues d'une grille dans un graphe en Delphi?
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 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;
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 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;
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 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;
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_edlain
Messages postés21Date d'inscriptionlundi 7 mai 2007StatutMembreDernière intervention15 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.
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 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 :
cs_edlain
Messages postés21Date d'inscriptionlundi 7 mai 2007StatutMembreDernière intervention15 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
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 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;
cs_edlain
Messages postés21Date d'inscriptionlundi 7 mai 2007StatutMembreDernière intervention15 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.
cs_edlain
Messages postés21Date d'inscriptionlundi 7 mai 2007StatutMembreDernière intervention15 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.
cs_edlain
Messages postés21Date d'inscriptionlundi 7 mai 2007StatutMembreDernière intervention15 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.