Utiliser les composants par leurs numéros

Description

Le principe :
1. Parcourir tous les composants d'une forme.
2. Y choisir le composant voulu et l'inscrire dans un listbox avec son numéro. Le ListBox doit avoir Sorted:=True et les composants nommés 001,002,003... De cette façon, l'item 0 est égal au composant 001 et ainsi de suite. Les composants non désirés dans le tableau doivent commencer par un X.
3. En partant de la fin du ListBox, on efface les composants commençant par un X. Il ne reste que les composants à inscrirent dans un tableau.
4. Avec une boucle, On inscrit les numéros des composants dans un tableau.
5. Il ne reste plus qu'à se servir des composants par leurs numéros. Ex : Components[0,0].Visible:=false;
6. En démarrant cette routine à chaque démarrage de la forme principale de votre application, vos composants retrouveront leurs numéros même si vous ajoutez ou retirez un ou plusieurs composants du même type.

Source / Exemple :


procedure TForm1.Composant();
var i:integer;
    Labelx:TLabel; 
    Image:Timage;
    Button:TButton;
begin
  // Pour les images //
  ListBoxArray.Clear;
  for i:=0 to ComponentCount-1 do
  begin
    if Components[i] is TImage then
    begin
      Image:=Components[i] as TImage;
      ListBoxArray.Items.Add(Image.name+' -'+inttostr(i));
    end;
  end;
  for i:=ListBoxArray.Count-1 downto 0 do
  begin
    if LeftStr(ListBoxArray.Items.Strings[i],1)='X' then ListBoxArray.Items.Delete(i);
  end;
  for i:=0 to ListBoxArray.Count-1 do
  begin
    ListBoxArray.Items[i]:=Droite('-',ListBoxArray.Items[i]);
    CompoNos[0,i]:=StrToInt(ListBoxArray.Items[i]);
  end;
end;

//Voir le démo dans le zip pour mieux comprendre.

Conclusion :


Ce que vous devez faire :
1. Nommer les composants à placer dans le tableau
Ex : Label001, Label002... Image001, Image002...
Nommer les autres XLabel, XImage nom choisi
Ex : XLabelTitre,XImageTitre.
Si un type de composant n'est pas choisi pour le tableau, vous n'avez pas besoin de le nommer en commençant par X.
2. Ajouter un ListBox caché avec Stored:=True.
3. Ajouter dans les Uses : StrUtils. Pour fonction Droite().
4. Créer un tableau CompoNos:array[0..2,0..10] of integer;
0..2 = 3 types de composant.
0..10 = 10 TImage, TLabel et TBuuton maximum.
[0,0] = Valeur du premier composant TImage.
[1,0] = Valeur du premier composant TLabel.
[2,0] = Valeur du premier composant TButton.
5. Ajouter la fonction droite(substr: string; s: string): string; Pour choisir seulement ce qui est à droite du «-» soit le numéros du composant.
6. Ajouter la procédure TForm1.Composant(); Celle qui est dans la démo.
7. Ajouté dans FormActivate Composant(); Pour activer la routine au démarrage de la forme principale.

Pour appeler un composant :
TImage(Components[CompoNos[0,0]]).Picture:=NIL;
TLabel(Components[CompoNos[1,0]]).Caption:='Test';
TLabel(Components[CompoNos[1,0]]).Color:=clRed;

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.