cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 2018
-
12 oct. 2006 à 08:17
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 2018
-
15 oct. 2006 à 22:02
[javascript:Insert_Emoticon('/imgs2/smile.gif');
] Bonjour,
[javascript:Insert_Emoticon('/imgs2/smile_question.gif'); ] Je voudrais trouver le moyen de ne pas écrire une ligne d'affectation pour les labels 5 à 13 d'une fiche.
[javascript:Insert_Emoticon('/imgs2/smile_blush.gif'); ] 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; [javascript:Insert_Emoticon('/imgs2/smile_angry.gif'); ] 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
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 14 oct. 2006 à 08:10
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 ...
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;
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 12 oct. 2006 à 09:29
Bonjour Japee,
Merci pour ta réponse.
OK pour la propriété name!
Mais en vérifiant :
[javascript:Insert_Emoticon('/imgs2/smile.gif'); ] 1. if Components[i] is TLabel then showmessage(Components[i].Name); fonctionne et liste tous les noms de Labels
[javascript:Insert_Emoticon('/imgs2/smile_sad.gif'); ] 2. showmessage((Components[i] as TLabel).Name); refuse à cause d'un pb de transtypage ! Pourtant name est de type ansistring
[javascript:Insert_Emoticon('/imgs2/smile_tongue.gif'); ] 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
[javascript:Insert_Emoticon('/imgs2/smile.gif'); ]Jean_jean
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 12 oct. 2006 à 09:47
[javascript:Insert_Emoticon('/imgs2/smile.gif');
]Merci loulibier, c'est ce que je cherchais.[javascript:Insert_Emoticon('/imgs2/smile.gif'); ]
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
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 14 oct. 2006 à 09:23
@ Foxi
[javascript:Insert_Emoticon('/imgs2/smile_approve.gif'); ]Je viens de m'apercevoir que mon dernier post n'a pas été envoyé.
[javascript:Insert_Emoticon('/imgs2/smile.gif'); ]OK pour l'instruction FindCompo ... qui effectivement me parait un peu lourd! Par ailleurs, je ne devrais pas avoir besoin de <gras>if Assigned(...</gras> non plus car en fait les Labels existent et ne sont pas créés dynamiquement.
[javascript:Insert_Emoticon('/imgs2/smile.gif'); ]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.
]Ho qu'il est bon ce Foxi!
[javascript:Insert_Emoticon('/imgs2/smile_cool.gif'); ]D'avoir des professeurs comme ça, ça donne envie de bien travailler n'est pas?
[javascript:Insert_Emoticon('/imgs2/smile_wink.gif'); ]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!!!
[javascript:Insert_Emoticon('/imgs2/smile.gif'); ]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.
[javascript:Insert_Emoticon('/imgs2/smile_shock.gif'); ]Bonne nuit et merci encore Foxi.
Jean_jean