Affectation parentale d'un composant créé dynamiquement sur image [Résolu]

Signaler
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
-
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
-
Yo les delphistes,

Si je pose un composant TListBox sur une image, cela va de soi. Par défaut, la propriété Parent du TListBox se fait en toute transparence pour le programmeur.

Par contre si j'utilise un TlistBox créé dynamiquement, il me faut définir la propriété parent du composant créé.

si je fais :

TMaListBox.Create(Self);
With MaListBox do
begin
  ...
  Parent := Image1;
  ... 
end;


Le compilateur me génère une erreur TWinControl et TImage: logique.
j'utilise alors une astuce en prenant un autre composant qui est déposé sur l'image et ça marche.

With MaListBox do
begin
  ...
  Parent := Panel1.Parent;
  ... 
end;


Mais je préfèrerai une écriture plus propre. J'ai pas trouvé...

Merci aux puristes qui ont une idée.

Jean_Jean

7 réponses

Messages postés
251
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
19 juin 2020
5
Salut,
pour moi tu ne peux pas avoir un TImage comme parent
Ton ListBox aura toujours un TWinControl comme parent, donc si tu pose un TListBox sur un TImage son parent est un TWinControl donc la Form par exemple...
Après quand tu pose ton TPanel, son parent est pour moi pas TImage mais la Form...
Un petit test avec un bouton par exemple pour être sur ShowMessage(Panel1.Parent.Name);
Après c'est mon avis personnel...
@+
Messages postés
251
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
19 juin 2020
5
Salut,
petite précision sur le LBT.Free, c'est carrément vrai, création, suppression mais ici il me semble que le parent le libère à la fermeture...
Quand je te parle de génération d'erreur à la fermeture c'est que j'ai vu dans le code le style à lbOwnerDrawFixed et ayant déjà utiliser ce genre de style avec les composants créer dynamiquement, il me semblait avoir eu un problème à la libération avec les styles différent du lbStandard...et après avoir fait l'essai ce matin avec ton code j'ai effectivement un message d'erreur ! Donc pour ne pas avoir de message d'erreur à la libération, j'utilisais une petite pirouette pourri en repassant le style à lbStandard dans le destructor...
Ah oui et quand je mettais un composant non créée dynamiquement qui avait la même propriété style sur la form je n'avais plus le problème...
Je n'avais pas regardé plus en profondeur à l’époque pour trouver le pourquoi du comment...
Mais bon apparemment toi tu n'as pas le problème
Bon courage @+
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
Yo,

Si je comprends bien, j'ai pas d'autre solution que d'utiliser mon astuce!

Je suis sûr qu'on peut référencer ça par autre chose que mon TPanel...

A+

Jean_Jean
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
Il faut nécessairement un conteneur :

- TForm
- TPanel
- TGroupBox
- TFrame
- TTabControl
- TPageControl
- ?
et j'en oublie certainement..

cantador
Messages postés
251
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
19 juin 2020
5
J'ai regardé ton essai...
Tu mets LBT.Free; dans FormClose, ben pas utile il me semble, et génère peut-être même une erreur à la fermeture...
Après pour que ta TTransparentListBox soit derrière l'image c'est que l'image a été redessinée et pas ton TTransparentListBox ou...
Pour être sûr de ce que je pense, ajouter un Image1.Refresh dans ton LBTclic
Voilà peut-être une piste...
@+
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
Merci yan pour ta remarque! Je vais y regarder...

A parir du moment ou tu créer un objet toi-même tu dois le détruire. Mon code ne génère pas d'erreur à la fermeture...

Ton commentaire aurait mieux sur le code qu'ici mais pas grave!

Jean_Jean
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
Si yanb, j'ai eu exactement le même prob que toi!
Je confirme ton dernier post

Je répond la suite des commentaires sur le code c'est mieux je trouve pour d'éventuels autres delphistes...

Bien à toi


Jean_Jean