Rendre visible un objet [Résolu]

gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 22 juin 2007 à 12:46 - Dernière réponse : cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention
- 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.

est ce que quelqu'un peut m'aider ??
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 22 juin 2007 à 13:44
3
Merci
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

Merci WhiteHippo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de WhiteHippo
Meilleure réponse
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 22 juin 2007 à 14:57
3
Merci
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.

En Delphi les tableaux dynamiques sont sensés être aussi désalloués automatiquement.

Merci cs_rt15 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_rt15
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 22 juin 2007 à 13:11
0
Merci
Bonjour,

Soit j'ai pas tout compris , soit tu as juste à employer la propriété Visible de ton composant (par exemple, Label1.Visible := TRUE;)

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Commenter la réponse de WhiteHippo
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 22 juin 2007 à 13:28
0
Merci
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;
Commenter la réponse de gabs77
Commenter la réponse de cs_rt15
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 22 juin 2007 à 14:02
0
Merci
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
Commenter la réponse de gabs77

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.