begin process at 2010 02 10 11:12:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Windows

 > 

ActiveX / COM

 > 

Utilisation de ImageList dans un UserControl


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Utilisation de ImageList dans un UserControl

mardi 9 janvier 2007 à 16:05:45 | Utilisation de ImageList dans un UserControl

Djedj

Bonjour!

Je souhaiterais pouvoir utiliser un contrôle ImageList dans mon UserControl, à l'instar de TreeView, TabView, ListView, etc... de la librairie mscomctl : ce ImageList est donc un contrôle placé sur le Form qui contient mon UserControl.

Voici le code et l'explication du problème :

Dim s_imagelist As MSComctlLib.ImageList

Public Property Get ImageList() As Object
Set ImageList = s_imagelist
End Property

Public Property Set ImageList(ByRef New_ImageList As Object)
If TypeOf New_ImageList Is MSComctlLib.ImageList Then Set s_imagelist = New_ImageList
End Property

...ainsi que WriteProperties et ReadProperties qui enregistrent ou récupèrent la propriété Name du ImageList associé à mon UserControl

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
If s_imagelist Is Nothing Then
    Call PropBag.WriteProperty("ImageList", "<Aucun>", "<Aucun>")
Else
    Call PropBag.WriteProperty("ImageList", s_imagelist.Name, "<Aucun>")
End If
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Set s_imagelist = GetParentImageList(PropBag.ReadProperty("ImageList", "<Aucun>"))
End Sub

La fonction GetParentImageList (aussi appelée depuis une page de propriété) est la suivante :

Friend Function GetParentImageList(ByVal imlName As String) As Object
If imlName = "<Aucun>" Then
    Set GetParentImageList = Nothing
Else
    Dim imlCtrl As Object
    For Each imlCtrl In UserControl.ParentControls
        If
imlCtrl.Name = imlName Then Set GetParentImageList = imlCtrl
    Next
End If
End Function


Cette fonction retourne donc un objet ImageList à partir de son nom... Appelée depuis la procédure ApplyChanges() de ma page de propriétés, aucun problème, la propriété ImageList de mon UserControl correspond bien au contrôle ImageList désigné dans la liste déroulante. Par contre, le problème est que, lorsqu'elle est appelée depuis ReadProperties (après avoir fermé puis rouvert un Form contenant une instance de mon UserControl, le tout en mode Création), cette fonction ne marche pas, car le contrôle ImageList désigné par la propriété de mon UserControl n'est pas encore chargé, et n'appartient donc pas encore à la collection ParentControls ...! Ainsi, GetParentImageList renvoie Nothing, alors que le paramètre imlName est valide...

Comment dois-je procéder? Suis-je obligé d'utiliser un String dans la propriété ImageList du UserControl, et d'appeler ma fonction GetParentImageList uniquement lors de l'utilisation du contrôle ImageList?

Merci à ceux qui auront le courage de se plonger dans le problème (et tant pis pour les autres )

gRömK
mardi 9 janvier 2007 à 18:21:53 | Re : Utilisation de ImageList dans un UserControl

jack

Administrateur CodeS-SourceS
Salut
Sans essayer, je commencerais par changer le nom de la propriété Get ImageList car ce nom, ImageList, est réservé à un objet.
Le problème peut venir de là ...
D'autre part, si ton objet est une ImageList, dis lui que c'est une ImageList au lieu de Object, plus logique, non ?
Public Property Get xImageList() As Object
Essaye
Public Property Get xImageList() As MSComctlLib.ImageList

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
mardi 9 janvier 2007 à 20:06:35 | Re : Utilisation de ImageList dans un UserControl

Djedj

Salut!

Non, le nom ImageList fonctionne bien (même si je conçois que ça puisse gêner certains)
Non, ImageList à la place de Object de fonctionne pas

Le problème vient vraiment du fait que dans le contexte de ReadProperties, lorsqu'une nouvelle instance du UserControl vient d'être créée, ParentControls ne contient pas encore le contrôle ImageList...

J'ai résolu le problème en procédant comme je l'avais évoqué : la fonction GetParentImageList n'est plus appelée dès la création de l'instance, mais plutôt lorsqu'il y a besoin de dessiner les images... Je ne suis pas complètement satisfait, mais ça marche parfaitement, et le code n'est que légèrement allourdi.

Merci de ton aide

gRömK


Cette discussion est classée dans : set, contrôle, usercontrol, imagelist, getparentimagelist


Répondre à ce message

Sujets en rapport avec ce message

POUR LES BOSS DU IMAGELIST [ par Nico ] Comment utiliser le contrôle imagelist associé à un listview? En fait j'ai une erreur: "Le contrôle ImageList doit être initialisé avant d'être utilis contrôle activeX UserControl.Picture [ par jacques34 ] Jacques34Votre texte ICI2 questions :1) bien qu'ayant une licence officielle VB6, je ne trouve pas dans les compléments, "Assistant de contrôle active Ajouter image à imagelist par code impossible [ par JMKPROD ] Salut à tous de la Guadeloupe J'ai un problème avec un contrôle (imagelist), je n'arrive pas à y ajouter des images. La ligne suivante que j'ai trouvé Comment enregistrer les modifications apportées au contrôle imagelist [ par JMKPROD ] Salut à tous,Je reviens à la charge, j'ajoute par code de nouvelles images dans une imagelist. Comment enregistrer ces modifications de façon durable créer 1 userControl [ par RDX ] Salut a tous :)J'aimerais savoir comment on fait un contrôle, j'ai cherché un tuto et j'en ai trouvé un sur .net, mais c'est tout.Si quelqu'un sait ou [VB6] Usercontrol : "supprimer" certaines propriétés [ par PhilocheMan ] Bonjour,Je cherche un moyen, pour un contrôle utilisateur, à masquer certaines propriétés qui apparaissent systématiquement, comme :- DragIcon, DragMo [Conseils] Faire fonctionner correctement une ImageList [ par violent_ken ] Violent Ken Bonjour, j'aimerais avoir des précisions sur le contrôle ImageList. Rassurez vous, j'ai déjà recherché (en vain) des infos sur le UserControl WPF / XAML qui hérite q'un contrôle existant [ par Afyn ] BonjourJ'ai essayé de construire un contrôle personnalisé pour WPF qui hérite d'un contrôle ToolBar.Je suis parti de l'ajout dans le Projet d'un UserC Utiliser le contrôle maskedit avec un textbox dans un usercontrol [ par esoso ] Salut, Voilà, je suis nouveau ici et j'espère que vous allez pouvoir m'aider. En fait, je développe une application sous VB6 qui utilise un userco VB.NET usercontrol erreur ! :-( [ par scortex84 ] Bonjour, Je développe en VB.NET. J'ai fais plusieurs usercontrol dans mon projet, et tout marche nickel chrome. Mais parfois, et c'est le cas, j'essay


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales