REMPLIR UN STRINGGRID AVEC UN MEMO

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 - 28 juin 2004 à 18:50
 tim12 - 21 juin 2015 à 00:55
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/24102-remplir-un-stringgrid-avec-un-memo

until l =StringGrid1.RowCount; pas until l=z+1;
medbtt Messages postés 2 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 17 avril 2010
17 avril 2010 à 20:34
merci a vous A+++++++++++
cs_julverne Messages postés 1 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 31 mai 2008
31 mai 2008 à 18:17
merci Moricio
cs_esby Messages postés 1 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 24 octobre 2004
24 oct. 2004 à 04:40
euuuuh

je trouve que c'est bien compliqué pour ce que ca doit faire...

Bon deja on ENLEVE le 'l' des noms de variables, vu qu'on peut le confondre avec un 1, ... ce qui facilite ni la lecture d'un code ni sa comprehension.

Ensuite c := c+1;
ca peut s'ecrire inc(c);
C'est censé etre un poil plus rapide en execution... mais bon maintenant on est plus à ça prêt...

Ensuite plutot que de se casser la tete, on peut utiliser deux boucle 'for' imbriqués, en prenant le probleme a l envers.

for i... for j... stringgrid[i,j] := memo1.lines[i*3+j]

enfin si on veut utiliser qu'une boucle, y a plus élégant:

const t=3; // nbre de colonnes - on peut le specifier en parametre de la procedure aussi.
var 
 i : integer; // compteur
begin
   StringGrid1.RowCount:= memo1.lines.Count div t +1;
   for i:= 0 to memo1.lines.count-1 
   do StringGrid1.cells[i div t,i mod t] := memo1.lines[i];
// on peut intervertir 'div' et 'mod' suivant le sens que l on souhaîte, mod etant le reste de la division entiere.
end;
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
28 juin 2004 à 18:50
C' est sûr qu' en mettant :
until l=5;
ton code va s' arreter à la ligne 5!

fait plutôt :
z:= memo1.lines.Count div 3;
StringGrid1.RowCount := z+1;
c:=0;
l:=0;
z:=0;
for z := 0 to memo1.lines.count - 1 do
begin
StringGrid1.cells[c,l]:=memo1.lines[z];
c:=c+1;
if c=3 then
begin
c:=0;
l:=l+1;
end;
end;
Rejoignez-nous