Code valide dans toutes lignes d'un StringGrid

Résolu
cs_micmar Messages postés 4 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 5 mai 2010 - 5 mai 2010 à 09:44
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 - 5 mai 2010 à 12:05
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

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
5 mai 2010 à 12:05
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
3
Rejoignez-nous