papi jim
Messages postés42Date d'inscriptionvendredi 27 mai 2005StatutMembreDernière intervention31 décembre 2005
-
30 déc. 2005 à 21:05
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 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.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 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;
sisi231
Messages postés207Date d'inscriptionmercredi 5 mars 2003StatutMembreDernière intervention29 mars 20135 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;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 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
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 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>