Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : identifier des Labels par leur nom dynamique [ Divers / Débutant(e) ] (Jean_Jean)

jeudi 12 octobre 2006 à 08:17:48 | identifier des Labels par leur nom dynamique

Jean_Jean

Bonjour,
  Je voudrais trouver le moyen de ne pas écrire une ligne d'affectation pour les labels 5 à 13 d'une fiche.
J'ai trouvé le moyen de savoir si le composant est un Label
       for i := 0 to pred(ComponentCount) do if Components[i] is TLabel then  with (Components[i] as TLabel) do  Update;
Mais je n'ai pas trouvé le moyen d'identifier précisément un Label. Je ne trouve pas de propriété ou de méthod renvoyant Label13 par exemple...!
      j'ai pourtant souvenir l'avoir déjà fait! 
      Merci à vous!
      Jean_Jean


jeudi 12 octobre 2006 à 08:47:33 | Re : identifier des Labels par leur nom dynamique

japee

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Bonjour,

(Components[i] as TLabel).Name

(propriété "Name")me semble être ce que tu cherches ?

Bonne prog'

jeudi 12 octobre 2006 à 09:29:40 | Re : identifier des Labels par leur nom dynamique

Jean_Jean

Bonjour Japee,
Merci pour ta réponse.
OK pour la propriété name!
Mais en vérifiant :
     1. if Components[i] is TLabel then showmessage(Components[i].Name);  fonctionne et liste tous les noms de Labels
     2. showmessage((Components[i] as TLabel).Name); refuse à cause d'un pb de transtypage ! Pourtant name est de type ansistring
     3. Mais la question est comment en ne faisant pas trop long, affecter de manière itérative, les numéros de Label au nom
                POUR  nLab  =  MonPremier  TO  MonDernier_Concerné  TLabel  FAIRE  TLabelnLab  := valeur;
j'avais fait ça à une époque,mais jene sais plus où c'est!
c'est très pratique
Jean_jean

jeudi 12 octobre 2006 à 09:30:35 | Re : identifier des Labels par leur nom dynamique

Loulibier

Membre Club
Réponse acceptée !
Bonjour Jean-Jean,

pour identifier le composant voulu, il suffit de faire :

for i := 5 to 13 do
begin
  if Assigned(FindComponent('Label' + IntToStr(i))) then
    TLabel(FindComponent('Label13' + IntToStr(i))).Update;
end;

Bonne Prog, [;)] Olivier PS : Lorsqu'une [b]réponse[/b] vous convient, n'oubliez pas de la valider.

jeudi 12 octobre 2006 à 09:47:34 | Re : identifier des Labels par leur nom dynamique

Jean_Jean

Merci loulibier, c'est ce que je cherchais.
Je rectifie unepetite erreur dans ton code pour d'éventuels autres lecteurs:
for i := 5 to 13 do
begin
  if Assigned(FindComponent('Label' + IntToStr(i))) then
    TLabel(FindComponent('Label' + IntToStr(i))).Update;
end;
Bien à vous
Jean_jean

samedi 14 octobre 2006 à 08:10:27 | Re : identifier des Labels par leur nom dynamique

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

si tu crée des composant dynamique, utilise plutot des tableaux ou encore des TObjectList.
ce serat plus simple pour les manipuler qu'avec FindCompo ...


Croc (click me)

samedi 14 octobre 2006 à 09:23:26 | Re : identifier des Labels par leur nom dynamique

Jean_Jean

@ Foxi
Je viens de m'apercevoir que mon dernier post n'a pas été envoyé.
OK pour l'instruction FindCompo ... qui effectivement me parait un peu lourd! Par ailleurs, je ne devrais pas avoir besoin de if Assigned(...  non plus car en fait les Labels existent et ne sont pas créés dynamiquement.
OK, je note tableaux ou TObjectList pour la création dynamique. Je crois qu'il y a pas mal d'exemple sur le site.
Je voulais simplement économiser des lignes de codes, ce qui ne veut pas dire gain à l'éxécution!
Bon en tout cas, ce tuto m'emmène plus loin que je ne le pensais. c'est pour moi, l'occasion de me réapproprier les bonnes méthodes. On verra peut-être dans une 2ème version, car jai presque fini dans sa version simple qui aidera certains débutants.
Je l'ai fait aussi pour un des aspects d'une appli plus complexe en cours.

Bien à toi.
Jean_jean

dimanche 15 octobre 2006 à 17:40:48 | Re : identifier des Labels par leur nom dynamique

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

avec un tableau tu peu faire :

si les TLabel sont deja créés :

var
   LabelArray = array[0..n] of TLabel;

procedure TForm1.FormCreate(Sender : TObject);
begin
  LabelArray[0] := Label1;
  LabelArray[1] := Label2;
  LabelArray[2] := Label3;
  LabelArray[3] := Label4;
  ...
end;


si les TLabel ne sont pas existant :

var
   LabelArray = array[0..n] of TLabel;

procedure CreateLabels;
var n : integer;
begin
  for n := 0 to high(LabelArray) do begin
      LabelArray[n] := TLabel.Create(Self);
      with LabelArray[n] do begin
         Left := ..;
         Top  := ..;
         Caption := ..;
         Parent  := ..;
      end;
  end;
end;

procedure FreeLabels;
var n : integer;
begin
  for n := 0 to high(LabelArray) do
      LabelArray[n].Free; // ou FreeAndNil(LabelArray[n]);
end;

procedure TForm1.FormCreate(...);
begin
  CreateLabels;
end;
 
Procedure TForm1.Destroy(...);
begin
  FreeLabels;
end;



Croc (click me)

dimanche 15 octobre 2006 à 22:02:35 | Re : identifier des Labels par leur nom dynamique

Jean_Jean

Ho qu'il est bon ce Foxi!
D'avoir des professeurs comme ça, ça donne envie de bien travailler n'est pas?
Bon, je n'ai pas le choix.
Je n'avais jamais pensé à cette solution! Jaime bien ce genre de truc: propre, optimisé, simple!...
D'ailleurs, je me dis que je ne suis pas pressé et j'ai décidé de faire une gestion mémoire en plus! Pas pour les labels, mais pour un stockage de données importante dans un stringgrid.
Donc, on va essayer de bien transformer l'idée.
Que j'aimerai avoir 20 ans de moins pour la programmation. Je découvre les posibilités du code. Génail!!!
D'ailleurs j'ai une suggestion à faire aux administrateurs du site, car malgré la richesse des codes existants et ma visite de sites similaires, celui-ci me parait avoir une spécificité que l'on pourrait booster pour attirer encore des codes qui au regard du nombre d'abonnés reste modeste, malgré les énormes richesses contenus, j'en suis sûr dans les tiroirs de certains. Mais je la réserve dans un autre post.
Bonne nuit et merci encore Foxi.
Jean_jean





Cette discussion est classé dans : moyen, dynamique, trouvé, identifier, labels


Répondre à ce message

Sujets en rapport avec ce message

uniformiser la taille de plusieurs Labels de manière dynamique [ par stigmate101 ] Salut, Je cherche une solution pour uniformiser la taille de plusieurs labels de manière dynamique.@+ Creation dynamique d'objets [ par Dreuteu ] Salut a tous... Voila, j'ai defini une classe dans mon programme, et je voudrais pouvoir rajouter un nombre potentiellement infini d'objets (dans la m Création dynamique de Lien dans une WebForm [ par lbensch ] Salut,Je n'arrives pas a créer des Controls en dynamique dans une WebForm sous Delphi 2005 .Net :Ma procédure est la suivante :var  MyHyperLink : Hype tableau dynamique à deux dimensions dans une classe [ par Koraluv ] Salut à tous!Je suis débutante en delphi et je voudrai créer une classe qui ai comme attribut un tableau dynamique à deux dimentions de TCellule.je l' Comment limiter le débit avec Indy [ par EricLeRouge ] Bonjour,je développe une fonction qui doit me permettre de transferer des fichiers sur un ftp avec un débit limité fixé. J'ai trouvé des tutos pour fa Récupérer une page dynamique ? TWebBrowser ? [ par Indelphini ] Bonjour, une 1ere constatation : j'y connais pas grd chose en réseau ! Mon pb : récupérer ma page de stats sur geocities par programme. J'ai essayé av Tableau dynamique et depassement de capacité ??? [ par elguevel ] Voila pour être bref, j'utilise une fonction recursive qui va charger tout les fichiers de mon disque dans un Tableau. (déja vous vous dite.. "ce mec Objet dynamique dans objet dynamique [ par alexis2015 ] Slt à tous, voilà mon premier souhait est de créer un TTabSheet dans un TPageControl (jusque là rien de mal, tout va bien, la suite ne va plu ...). Mo supprimer tableau dynamique multidimensionnel [ par richarddum ] Salut, Est-il possible de supprimer un tableau dynamique ?  tableau : array of array [0..1] of string; affectation par la commande setlength(tablea [!] Suite d'Objet dynamique dans objet dynamique [ par alexis2015 ] Re bonjour, J'ai une autre question ... tjs ds le même sujet (suite de celui-ci ) Maintenant je désire mettre mon TTabSheet et Mon TLabel dans une un


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.