Récupérer toutes les valeurs de différentes textbox avec une boucle?

Résolu
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 - 29 août 2005 à 08:24
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 - 29 août 2005 à 14:59
Bonjour,



J'ai une 20 aine de textbox, qui ont leur nom formatées pareil, sauf un chiffre à la fin.



Comment récupérer toutes ces textbox avec une boucle? On ma dit qu'il y
avait une astuce, mais la personne en question ne se rappelait plus.



Parce qu'en plus, sur chaque textbox, je dois effectuer un controle...



Merci!

9 réponses

cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
29 août 2005 à 14:32
Je te code en live un truc, car çà devient sans fin cette histoire.

var i : integer;
Cp : TComponent;
Tbl : array[1..20] of string;
begin
for i:= 1 to 20 do
begin
Cp: =Form1.FindComponent('a'+IntToStr(i));
if Cp is TEdit then
Tbl[i]:= (Cp as TEdit).Text;
end;
end;

=============
Validez les réponses si ok...

ViewVite XP : HTML
3
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
29 août 2005 à 09:44
juste:



if Form1.Components[x] is TShape then



pour les champs Edit, ya quelquechose devant, style Tedit???



Merci
0
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
29 août 2005 à 10:15
L'exemple que je t'ai donné fonctionne avec TShape. Par analogie, ça marche avec tous les composants du moment qu'ils sont considérés comme ce qu'ils sont.

var Edt : TEdit;
begin
Edt:= nil;
if Form1.Components[IndexSouhaité] is TEdit then
begin
Edt: =Form1.Components[IndexSouhaité] as TEdit;
//ensuite, Edt se comporte comme si tu avais Edit1, Edit2, ... ou Edit20
end;
end;

===========
Validez les réponses si ok...

ViewVite XP : HTML
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
29 août 2005 à 11:22
ok, et comment l'on sait que mon "edit" qui se nomme a2 a l'index 2?
0

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

Posez votre question
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
29 août 2005 à 11:38
var Edt : TEdit;
NomDuComposant : string;
begin
Edt:= nil ;
if Form1.Components[IndexSouhaité] is TEdit then
begin
Edt: =Form1.Components[IndexSouhaité] as TEdit;
NomDuComposant:= LowerCase(Edt.Name);
if NomDuComposant ='a2' then
{faire qqch} ;
end;
end;

Ou même encore :

var Edt : TEdit;
NumeroDuComposant : byte; //de 0 à 255
begin
Edt:= nil ;
if Form1.Components[IndexSouhaité] is TEdit then
begin
Edt: =Form1.Components[IndexSouhaité] as TEdit;
NumeroDuComposant:= StrToInt(Copy(Edt.Name,2,Length(Edt.Name))); //ne marche que pour un nom type "[UneLettre][UnNombre]"
case NumeroDuComposant of
0: {edit N°0} ;
1: {edit N°1} ;
[...]
end;
end;
end;

=============
Validez les réponses si ok...

ViewVite XP : HTML
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
29 août 2005 à 11:50
ouais mais si je dois mettre un select case pour chaque solution,
ou un if pour chaque solution, j'y gagne plus grand chose...
non?
0
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
29 août 2005 à 12:36
Je crois que tu ne vois pas l'astuce...

Le CASE que je viens juste de te donner sert si tu veux faire un traitement particulier sur un édit particulier. Mais du moment que la ligne Edt:= Form1.... est SUCCESSFUL, que Edt pointe sur Edit1, Edit2 ou le reste, son comportement sera celui du composant désigné par Form1.Machin

Prenons la ligne...
Edt:=Form1.Components[IndexSouhaité] as TEdit;
...et supposons que Form1.Components[IndexSouhaité] =Edit4.

Alors, si tu fais par exemple: Edt.Color:=clBlack, c'est comme si tu faisais Edit4.Color:=clBlack.

Edt n'est qu'un composant virtuel qui se fait passer pour le composant qu'il désigne.

Ce que je comprend dans ta question, c'est que tu veux récupérer l'objet d'après son nom. Voilà, c'est fait ! Tu n'as plus qu'à considérer le composant dont tu connais le nom via la variable Edt.

===========
Validez les réponses si ok...

ViewVite XP : HTML
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
29 août 2005 à 14:21
oui mais je dois mettre les différents a1, a2---> a20 dans un
tableau nommé a[] et ayant les meme identifiants, ca eut dire que je
dois faire 20 différents cas dans le select case
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
29 août 2005 à 14:59
ah je connnaissais pas "findcomponent"!!! Merci bien pour ta réponse, tout s'éclaire!
0
Rejoignez-nous