Groupe de controle

Résolu
papi jim Messages postés 42 Date d'inscription vendredi 27 mai 2005 Statut Membre Dernière intervention 31 décembre 2005 - 30 déc. 2005 à 21:05
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 31 déc. 2005 à 21:52
Bonjour,

je voudrais savoir s'il est possible de créer des groupes de controles a la maniere de VB.

Mon but est d'avoir plusieurs labels et de pouvoir recuperer le champ
caption de l'un d'eux a nimporte quel moment, selon une varible i.

Du style

montexte := label(i).caption;



comment faire...???

merci d'avance.

8 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
30 déc. 2005 à 21:35
Salut,

>> f0xi t'es pas malade au moins ?

Function TForm1.GetLabel(Index : Integer): String;
Begin
Result := EmptyStr;
With TLabel(FindComponent('Label' + IntToStr(Index))) Do
Result : = Caption;
End;

Procedure TForm1.Button1Click(Sender : TObject);
Var I : Integer;
Begin
I := 2; // Bien sur I est là pour répondre à l'exemple;
montexte := GetLabel(I);
End;


@+
Cirec
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
30 déc. 2005 à 23:01
salut,

tu peux aussi regrouper les labels dans un groupbox et utiliser les
propriétés groupbox.control et groupbox.controlcount pour parcourir les
labels.

@+

jlen
3
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
31 déc. 2005 à 12:02
Je précise simplement leurs réponses :

1° por la méthode à Cirec :

si tu nommes tes labels "label1","label2", ...
alors tu peux faire simplement :
tlabel(findcomponent('label'+inttostr(i)))
pour avoir le label n°i, findcomponent te renvoit un TComponent correspondant au nom qui lui est passé en paramètre, qu'il faut ensuite transtyper en TLabel.
En fait Findcomponent est une méthode de TComponent, ici c'est la fiche Form1, qui lui est attribuée par défaut, sinon tu pourrais faire :
tlabel(form1.findcomponent('label'+inttostr(i))) pour le forcer

2° pour la méthode à jlen100, rien à ajouter à part que c'est plutôt groupbox1.controls[i] que groupbox1.control[i].

Exemple :
//affiche tous les caption des tgroupbox d'un tgroupbox :

with groupbox1 do
for i:=0 to controlcount-1 do
try
showmessage(tlabel(controls[i]).caption);
except
//excepton silencieuse
end;

Cordialement.



SISI231
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
30 déc. 2005 à 21:15
a ma connaissance il n'existe pas nativement de composant de ce type dans Delphi.

mais tu peux toujours le créer.

La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
0

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

Posez votre question
papi jim Messages postés 42 Date d'inscription vendredi 27 mai 2005 Statut Membre Dernière intervention 31 décembre 2005
31 déc. 2005 à 12:09
Merci beaucoup pour vos reponses, ca m'a beaucoup aidé.
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
31 déc. 2005 à 13:31
Salut,
je précise la précision de sisi231 si la GroupBox contient aussi d'autres Composants (pas seulement des TLabels) et pour éviter le déclanchement d'une exception (même silencieuse en faisant F9 elle se déclanchera quand même ce qui est toujours désagréable) on peut tester de quel type de composant il sagit
Ex. : If Controls[I] is TLabel Then

Procedure TForm1.Button1Click(Sender: TObject);
Var I : Integer;
Begin
With GroupBox1 Do
For I := 0 To ControlCount-1 Do // avec tous les controles de GroupBox1 fait
If Controls[I] is TLabel Then // si Controls[I] et un TLabel alors
Showmessage(TLabel(Controls[I]).Caption); // on affiche le Texte
End;

Je vous souhaite à toutes et à tous une bonne fin d'année 2005 et un bon début pour l'année 2006


@+
Cirec
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
31 déc. 2005 à 15:38
Bien Cirec, j'ai dit ça car je ne savais pas comment m'y prendre mais ta méthode est en effet plus propre...

SISI231
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
31 déc. 2005 à 21:52
oui cirec, pour une fois que j'ai pas fais d'exemple demonstration ect... etonnant de ma part ... la fatigue surrement ou trop d'abus de SHL sur mes neuronnes.

La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
0
Rejoignez-nous