Pour remplir un StringGrid grace un memo
Il suffit d'un StringGrid(ici appelé StringGrid1) et d'un memo(Memo1)
Cet exemple est fait pour un tableau de 3 collones et d'une infinité de lignes.
Vous pouver l'adapter pour un plus de colonnes en changant la ligne if c=3 then ou le 3 défini le nombre de collones
Source / Exemple :
procedure TForm1.RemplirTableau();
var z,c,l : integer;
begin
z:= memo1.lines.Count DIV 3;
StringGrid1.RowCount := z+1;
c:=0;
l:=0;
z:=0;
repeat;
StringGrid1.cells[c,l]:=memo1.lines[z];
z:=z+1;
c:=c+1;
if c=3 then
begin
c:=0;
l:=l+1;
end;
until l=z+1;
end;
Conclusion :
Voila c'est tout con mais ca marche.
21 juin 2015 à 00:55
17 avril 2010 à 20:34
31 mai 2008 à 18:17
24 oct. 2004 à 04:40
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:
28 juin 2004 à 18:50
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;
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.