gabs77
Messages postés379Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention 8 octobre 2008
-
22 juin 2007 à 12:46
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
22 juin 2007 à 14:57
Bonjour,
je cherche à rendre visible dans une form un objet déjà existant dans delphi que je créé
Par exemple : quand je clique sur un bouton, il y a des labels qui s'affichent aléatoirement partout sur toute la form un par un.
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 22 juin 2007 à 13:44
Donc ce n'est pas les rendre visible, c'est plutot une création dynamique de tes composants.
Il faut modifier ton code comme suit :
const
LABELS_MAX = 500 ;
var
i : integer;
Lbl : array of TLabel;
begin
randomize; // Appel une seul fois
setlength(Lbl,LABELS_MAX); // Dimensionner ton tableau dynamique
for i := 0 to LABELS_MAX-1 do
begin
Lbl[i] := TLabel.Create(form1);
with Lbl[i] do
begin
Parent := form1 ;
Top := random(Form1.Height);
Left := random(Form1.Width);
Width := 100 ;
Height := 13;
Caption := ' !! Test !! ';
Visible := true ;
Application.ProcessMessages; // Pour rendre la main au système
end ;
end;
end;
ATTENTION !!! Je modifier ton code pour le faire fonctionner, mais il ne faudra pas oublier de libérer les labels ainsi que le tableau dynamique. Ne sachant pas ce que tu comptes en faire, je te laisse le soin de le faire.
Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 22 juin 2007 à 14:57
Petite précision concernant la libération : dans le Create du label, on met le owner. Le owner devient responsable de la libérationde l'objet, et le libérerat quand lui (le owner) serat détruit.
Autrement dit, les labels sont détruits proprement à la destruction de Form1 dans l'exemple ci-dessus.
gabs77
Messages postés379Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention 8 octobre 2008 22 juin 2007 à 13:28
désolé, je me suis mal exprimé, effectivement la méthode que tu me propose fonctionne mais si je défini sur la form le composant.
Ce que j'aimerai savoir c'est plus un truc qui doit ressembler à ça, je pense :
var
i : integer;
Lbl : array of TLabel;
begin
for i := 0 to 500 do
begin
Lbl[i] := TLabel.Create(???);
randomize;
Lbl[i].Top := random(Form1.Top);
randomize;
Lbl[i].Left := random(Form1.Left);
Lbl[i].Caption := ' !! Test !! ';
end;
Vous n’avez pas trouvé la réponse que vous recherchez ?
gabs77
Messages postés379Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention 8 octobre 2008 22 juin 2007 à 14:02
Super, merci !!
c'est surtout ceci : Create(form1) et parent := Form1 qui me manquait
je m'occupe du reste pour mon problème sans problème !!
encore merci