J'ai créé pour m'entraîner à l'objet Ambient, un UserControl avec un textbox
dont je voudrais changer la couleur de fond en fonction du container.
Pour ce faire, j'utilise l'objet Ambient dans mon contrôle activex. Cet
objet est censé me renvoyer (entre autres), la propriété BackColor de mon
container lorsque je place mon usercontrol dans une appli.
Tout fonctionne parfaitement si je place mon contrôle activex sur une
feuille bleue par exemple, alors mon contrôle prend lui aussi la couleur
bleue. Mais si sur cette feuille je dispose un Frame par exemple, avec un
fond gris et que je lui colle mon ocx dessus pour qu'il devienne le
container de mon contrôle, alors ce dernier est bleu comme le fond de la
feuille et non pas gris comme le container !!?? Et cela est systématique dès
lors que ce n'est plus la feuille le container direct de mon contrôle.
J'ai du râter quelque chose.
J'espère avoir été assez clair pour que quelqu'un me vienne en aide :-)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fabrice MALAINGRE
Bonsoir Christophe,
Si ma mémoire est bonne, le problème vient du fait qu'il n'y a qu'un seul objet "Ambient" pour l'ensemble des contrôles situés sur le "Form" VB (alors qu'il y bien a un "Extender" par contrôle).
Tous les contrôles récupèrent donc les changements du "Form" et non ceux d'un éventuel conteneur (comme un "Frame", "PictureBox" ou tout autre "UserControl").
Il existe bien un moyen de récupérer la couleur de ton vrai conteneur grâce à une ligne de code suivante : "UserControl.BackColor = UserControl.Extender.Container.BackColor"
Mais, tu ne possèdes a priori aucun moyen automatique d'être averti quant à ce changement de couleur.
Cordialement
____________________________ Fabrice MALAINGRE Architecte Logiciel - Chef de Projet THEORIS - www.theoris.fr
Bonsoir Christophe,
Si ma mémoire est bonne, le problème vient du fait qu'il n'y a qu'un seul
objet "Ambient" pour l'ensemble des contrôles situés sur le "Form" VB (alors
qu'il y bien a un "Extender" par contrôle).
Tous les contrôles récupèrent donc les changements du "Form" et non ceux
d'un éventuel conteneur (comme un "Frame", "PictureBox" ou tout autre
"UserControl").
Il existe bien un moyen de récupérer la couleur de ton vrai conteneur grâce
à une ligne de code suivante :
"UserControl.BackColor = UserControl.Extender.Container.BackColor"
Mais, tu ne possèdes a priori aucun moyen automatique d'être averti quant à
ce changement de couleur.
Cordialement
____________________________
Fabrice MALAINGRE
Architecte Logiciel - Chef de Projet
THEORIS - www.theoris.fr
Si ma mémoire est bonne, le problème vient du fait qu'il n'y a qu'un seul objet "Ambient" pour l'ensemble des contrôles situés sur le "Form" VB (alors qu'il y bien a un "Extender" par contrôle).
Tous les contrôles récupèrent donc les changements du "Form" et non ceux d'un éventuel conteneur (comme un "Frame", "PictureBox" ou tout autre "UserControl").
Il existe bien un moyen de récupérer la couleur de ton vrai conteneur grâce à une ligne de code suivante : "UserControl.BackColor = UserControl.Extender.Container.BackColor"
Mais, tu ne possèdes a priori aucun moyen automatique d'être averti quant à ce changement de couleur.
Cordialement
____________________________ Fabrice MALAINGRE Architecte Logiciel - Chef de Projet THEORIS - www.theoris.fr
Christophe QUEVAL
Je te remercie pour ta réponse. C'est en effet la seule méthode que j'avais trouvé pour solutionner mon problème. Dans l'évènement Paint de mon contrôle, j'ai mis la ligne de code que tu cites. Et lorsque je change mon user control de container, je fais un refresh de celui-ci. C'est dommage que l'objet ambient soit si limité, d'autant que la doc en ligne est assez pauvre à ce sujet. Encore merci. Christophe
"Fabrice MALAINGRE" a écrit dans le message de news:
Bonsoir Christophe,
Si ma mémoire est bonne, le problème vient du fait qu'il n'y a qu'un seul objet "Ambient" pour l'ensemble des contrôles situés sur le "Form" VB
(alors
qu'il y bien a un "Extender" par contrôle).
Tous les contrôles récupèrent donc les changements du "Form" et non ceux d'un éventuel conteneur (comme un "Frame", "PictureBox" ou tout autre "UserControl").
Il existe bien un moyen de récupérer la couleur de ton vrai conteneur
grâce
à une ligne de code suivante : "UserControl.BackColor = UserControl.Extender.Container.BackColor"
Mais, tu ne possèdes a priori aucun moyen automatique d'être averti quant
à
ce changement de couleur.
Cordialement
____________________________ Fabrice MALAINGRE Architecte Logiciel - Chef de Projet THEORIS - www.theoris.fr
Je te remercie pour ta réponse.
C'est en effet la seule méthode que j'avais trouvé pour solutionner mon
problème. Dans l'évènement Paint de mon contrôle, j'ai mis la ligne de code
que tu cites. Et lorsque je change mon user control de container, je fais un
refresh de celui-ci.
C'est dommage que l'objet ambient soit si limité, d'autant que la doc en
ligne est assez pauvre à ce sujet.
Encore merci.
Christophe
"Fabrice MALAINGRE" <nospam@theoris.fr> a écrit dans le message de
news:e36M4TYxDHA.2408@tk2msftngp13.phx.gbl...
Bonsoir Christophe,
Si ma mémoire est bonne, le problème vient du fait qu'il n'y a qu'un seul
objet "Ambient" pour l'ensemble des contrôles situés sur le "Form" VB
(alors
qu'il y bien a un "Extender" par contrôle).
Tous les contrôles récupèrent donc les changements du "Form" et non ceux
d'un éventuel conteneur (comme un "Frame", "PictureBox" ou tout autre
"UserControl").
Il existe bien un moyen de récupérer la couleur de ton vrai conteneur
grâce
à une ligne de code suivante :
"UserControl.BackColor = UserControl.Extender.Container.BackColor"
Mais, tu ne possèdes a priori aucun moyen automatique d'être averti quant
à
ce changement de couleur.
Cordialement
____________________________
Fabrice MALAINGRE
Architecte Logiciel - Chef de Projet
THEORIS - www.theoris.fr
Je te remercie pour ta réponse. C'est en effet la seule méthode que j'avais trouvé pour solutionner mon problème. Dans l'évènement Paint de mon contrôle, j'ai mis la ligne de code que tu cites. Et lorsque je change mon user control de container, je fais un refresh de celui-ci. C'est dommage que l'objet ambient soit si limité, d'autant que la doc en ligne est assez pauvre à ce sujet. Encore merci. Christophe
"Fabrice MALAINGRE" a écrit dans le message de news:
Bonsoir Christophe,
Si ma mémoire est bonne, le problème vient du fait qu'il n'y a qu'un seul objet "Ambient" pour l'ensemble des contrôles situés sur le "Form" VB
(alors
qu'il y bien a un "Extender" par contrôle).
Tous les contrôles récupèrent donc les changements du "Form" et non ceux d'un éventuel conteneur (comme un "Frame", "PictureBox" ou tout autre "UserControl").
Il existe bien un moyen de récupérer la couleur de ton vrai conteneur
grâce
à une ligne de code suivante : "UserControl.BackColor = UserControl.Extender.Container.BackColor"
Mais, tu ne possèdes a priori aucun moyen automatique d'être averti quant
à
ce changement de couleur.
Cordialement
____________________________ Fabrice MALAINGRE Architecte Logiciel - Chef de Projet THEORIS - www.theoris.fr