Code valide dans toutes lignes d'un StringGrid [Résolu]

Signaler
Messages postés
4
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
5 mai 2010
-
ThWilliam
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
-
Bonjour,
J'ai le code suivant,qui à trois cellules pour les données et trois autres pour les résultats sur la même ligne. Sachant que je prend un chiffre d'une cellule de la ligne au-dessus pour calculer et que le focus revient à la ligne de dessous, première colonne.Déplacement avec la touche Entrée.

var Tableau:array[0..5,0..6] of real;
begin
//récupère les données dans le tableau
Tableau[2,0]:=StrToFloat(Grille.Cells[2,0]);
Tableau[0,1]:=StrToFloat(Grille.Cells[0,1]);
Tableau[1,1]:=StrToFloat(Grille.Cells[1,1]);
Tableau[2,1]:=StrToFloat(Grille.Cells[2,1]);
//calculs
Tableau[4,1]:=Tableau[0,1]/Tableau[1,1];
Tableau[5,1]:=Tableau[2,1]-Tableau[2,0];
Tableau[3,1]:=Tableau[1,1]/Tableau[5,1]*100;
//Affiche les résultats
Grille.Cells[3,1]:=FloatToStr(Tableau[3,1]);
Grille.Cells[4,1]:=FloatToStr(Tableau[4,1]);
Grille.Cells[5,1]:=FloatToStr(Tableau[5,1]);
end;

Comment avoir le code qui est valide dans toutes les 200 lignes du StringGrid.
Merci

1 réponse

Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
2
Bonjour.

Il te suffit de travailler en coordonnées relatives.
Tu as par exemple les propriétés Col et Row qui te donnent les coordonnées de la cellule active.
Donc tu peux faire : Grille.Cells[Grille.Col + 1, Grille.Row - 1]

Attention dans ce cas à vérifier auparavant la validité des indices:
ligne >= 0 et < RowCount
colonne >= 0 et < ColCount

Une remarque : as-tu réellement besoin d'un array ? Il me semble que dans ton exemple, 3 variables seraient suffisantes.

A +
Thierry