Numéro d'un composant dans une boucle

Résolu
cs_ridertart
Messages postés
8
Date d'inscription
lundi 11 décembre 2006
Statut
Membre
Dernière intervention
19 décembre 2006
- 18 déc. 2006 à 17:41
cs_Loda
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
- 19 déc. 2006 à 09:31
Bonjour,
J'ai une petite question en delphi, je suppose que ce doit pas être très compliqué mais je ne sais pas comment faire et ca pourrait réduire la taille de mon programme !
Voila par exemple dans un boucle,
Je dois faire


        StringGrid2.Cells[a,0] := ...


        StringGrid3.Cells[a,0] := ...


        StringGrid4.Cells[a,0] := ...


        StringGrid5.Cells[a,0] := ...


        StringGrid6.Cells[a,0] := ...

Et je cherche le moyen de nommé les composant dans la boucle par exemple
    For i:=2 to 6 do

    begin

        StringGrid[i].Cells[a,0] := ...
    end;

Or je sais que le [i] n'est pas bon (StringGrid[i].Cells[a,0] := ...)

Quelqu'un peut il m'aider ?

Merci d'avance.

3 réponses

WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
18 déc. 2006 à 18:22
Bonsoir,

Une solution serait d'utiliser FindComponent pour lister tes StringGrid :

For i:=0 to Form1.ComponentCount-1 do
begin
  if (Form1.Components[i] is TStringGrid) then
  begin
    TStringGrid(Form1.Components[i]).Cells[a,0] := ...
  end ;
end;

Cordialement.

<hr />"L'imbécile prétentieux est celui qui se croit plus intelligent que ceux qui sont aussi bêtes que lui"/STRONG>
3
WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
18 déc. 2006 à 18:25
Tu peux également utiliser le FindComponent :

For i:=2 to 6 do
begin

  TStringGrid(FindComponent('StringGrid'+IntToStr(i))).Cells[a,0] := ...
end;

Cordialement.

<hr />"L'imbécile prétentieux est celui qui se croit plus intelligent que ceux qui sont aussi bêtes que lui"/STRONG>
3
cs_Loda
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
19 déc. 2006 à 09:31
salut,

si tu dois faire des acces frequent, une autre solution plus efficace qu'une recherche serrait d'avoir un tableau de TStringGrid.

genre

MesStringGrid : array[0..6] of TStringGrid;

et soit tu les crée dynamiquement (fait des recherch sur la création de composant dynamique),
soit tu init le tableau dans le form create (le plus simple pour toi je supose).

MesStringGrid[0] := StringGrid0;
MesStringGrid[1] := StringGrid1;
...

ensuite, c'est un tableau normal:

for i:=low(MesStringGrid ) to high(MesStringGrid ) do begin
  MesStringGrid[i].Xxx
end;

en esperant t'avoir aider,

Loda

PS: au cas ou cela ne serrait pas clair pour toi, tu n'as pas besoin de detruire le tableau dans le form destroy.
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
3