Une boucle pour scanner des Tedit

MasterJ Messages postés 37 Date d'inscription jeudi 27 juin 2002 Statut Membre Dernière intervention 13 août 2002 - 10 juil. 2002 à 15:53
garnotte Messages postés 14 Date d'inscription mardi 29 janvier 2002 Statut Membre Dernière intervention 18 février 2016 - 10 juil. 2002 à 22:49
Bonjour tt le monde,

je me demandais s'il est possible de scanner plusieurs Tedit ayant un nom composé d'une racine similaire et d'un numéro ordinal a l'aide d'un for.

EX.: tab1,tab2,tab3,tab4,TEMP: Tedit;

for j := 0 to 4 do
begin
TEMP:= 'tab' + j;
if temp.text = '' then
(...)
end;

Merci
Jeff

6 réponses

PhGORMAND Messages postés 54 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 20 juillet 2006
10 juil. 2002 à 18:01
Le seul moyent, est de créer un tableau de TEdit.

Exemple :

Var
TabEdit : Array[1..10] Of TEdit;

Procedure TForm1.CreeEdit(Sender : TObject);
Var
I : Integer;

Begin
For I:=1 to 10 Do
begin
TabEdit[1]:=TEdit.Create(Self);
With TabEdit[I] Do
begin
Top:=I + 20;
left:=10;
Parent:=Form1;
.....
Etc....
.....
end;
end;

Plus loin : TabEdit[1].Text := ' Toto';

Il faut penser aussi à détruire le tableau
quand on en a plus besoin :

For I:=1 to 10 Do TabEdit[I].free;

http://philippe.gormand.free.fr

Tu verras sur mon site WEB, dans la section
DELPHI\ Exemples la création d'un tableau de
boutons.
A+
0
MasterJ Messages postés 37 Date d'inscription jeudi 27 juin 2002 Statut Membre Dernière intervention 13 août 2002
10 juil. 2002 à 19:13
Salut phGORMAND
De cette facon, je ne peux pas utiliser mes Tedit deja creer. Y aurait-il une facon d'utiliser mes Tedit car je ai exactement 50 sur lequelles je dois faire du traitement. Ils sont répartient sur 5 onglets.

Merci
Jeff
0
garnotte Messages postés 14 Date d'inscription mardi 29 janvier 2002 Statut Membre Dernière intervention 18 février 2016 1
10 juil. 2002 à 21:09
Salut MasterJ,

Tu peux faire ton itération avec la méthode FindComponent. Cette méthode attend que tu passes en paramètre le nom du composant à rechercher, comme dans l'exemple ci-dessous:

var
j :Integer;
c : TComponent;

for j := 0 to 4 do
begin
{ Récupérer le composant }
c := oMaForm.FindComponent( 'nom_du_composant' ++ StrToInt( j ) );

{ Maintenant, tu fais ton traitement avec c, sans oublier de le caster en TEdit pour ton problème }
TEdit( c ).Text := 'Salut bonhomme';
end;

J'espère que ça va t'aider.

Bonne journée!
0
cs_Manu93 Messages postés 19 Date d'inscription lundi 3 juin 2002 Statut Membre Dernière intervention 26 mai 2003
10 juil. 2002 à 21:29
Je veux juste corriger une petite erreur de garnotte.

c := oMaForm.FindComponent( 'nom_du_composant' ++ StrToInt( j ) );

IL faut remplacer le StrToInt par IntToStr.
Et ca marchera
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MasterJ Messages postés 37 Date d'inscription jeudi 27 juin 2002 Statut Membre Dernière intervention 13 août 2002
10 juil. 2002 à 21:49
Merci Garnotte

C'est exactement ce que je voulais et cela fonctionne a la perfection.

Une petite correction s'impose !!!
Dans la ligne suivante :

c := oMaForm.FindComponent( 'nom_du_composant' ++ StrToInt( j ) );

il faut caster j dans un string avec inttostr() et pour concaténer on utilise seulement un + donc ca donne ceci :

c := MaForm.FindComponent( 'nom_du_composant' + IntToStr( j ) );

Et le code fonctionne a merveille

@later
Jeff
0
garnotte Messages postés 14 Date d'inscription mardi 29 janvier 2002 Statut Membre Dernière intervention 18 février 2016 1
10 juil. 2002 à 22:49
Ah, je pense que j'me suis accroché dans le + deux fois. Je me suis gourré aussi dans le nom de la fonction à appeler. C'est ça qui arrive quand tu n'essaie pas de compiler ton code avant de l'envoyer à quelqu'un! :big)
0
Rejoignez-nous