cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 2018
-
24 mai 2012 à 12:05
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 2018
-
25 mai 2012 à 14:57
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
A voir également:
Affectation parentale d'un composant créé dynamiquement sur image
cs_yanb
Messages postés271Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention 7 juillet 202214 24 mai 2012 à 12:45
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...
@+
cs_yanb
Messages postés271Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention 7 juillet 202214 25 mai 2012 à 11:44
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 @+
cs_yanb
Messages postés271Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention 7 juillet 202214 24 mai 2012 à 17:01
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...
@+