IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[ActiveX] Propriété "Picture" dans un contrôle util


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Par défaut [ActiveX] Propriété "Picture" dans un contrôle util
    Salut,

    J'ai créé un contrôle utilisateur contenant deux contrôles : une image (icoCtrl) et un label (lblCtrl)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    'Version light
    Public Property Get Caption() As String
    Caption = lblCtrl.Caption
    End Property
     
    Public Property Let Caption(ByVal NewCaption As String)
    lblCtrl.Caption = NewCaption
    End Property
     
    Public Property Let BackColor(ByVal Couleur As OLE_COLOR)
    lblCtrl.BackColor = Couleur
    End Property
     
    Public Property Get BackColor() As OLE_COLOR
    BackColor = lblCtrl.BackColor
    End Property
     
    Public Property Let Picture(ByVal Img As String)
    Img = UCase(Img)
    icoCtrl.Tag = Img
    If Img = "" Then
        icoCtrl.Picture = LoadPicture
    Else
        icoCtrl.Picture = LoadPicture(Img)
    End If
    End Property
     
    Public Property Get Picture() As String
    Picture = icoCtrl.Tag
    End Property
    De l'extérieur, j'ai accès aux propriétés "Caption", "BackColor" et "Picture". J'ai réussi à obtenir la flèche déroulante et la palette de couleur sur la propriété BackColor en la définissant de type OLE_COLOR.
    Pour Picture, je me contente pour l'instant de fournir le nom du fichier image à charger.

    J'aimerais obtenir une gestion identique à celle des propriété Picture des composant Vb (image, Form...).
    J'ai réussi à obtenir le bouton avec "..." dans le cadre de la propriété qui ouvre la boite de dialogue de recherche de fichier avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Property Let Picture(ByRef Img As StdPicture)
    (même type pour Get) mais j'obtiens, dès que j'ai choisi un fichier image, une erreur "Nombre d'arguments incorrect ou affectation de propriété incorrecte" et je n'arrive donc pas à récupéré l'image pour la mettre dans icoCtrl. J'ai forcément une erreur de syntaxe ou de type mais le message arrive avant même d'executer la méthode Let associée à la propriété.

    D'ailleurs, cette erreur intervient même si le corps de la méthode est vide.
    J'ai également essayé avec le type IPictureDisp (celui utilisé par le controle "Image") mais c'est la même chose.

    Quelqu'un aurait-il réussi à le faire.

    Merci

  2. #2
    Membre confirmé Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Par défaut
    Vous avez bien dû créer un controle perso au moins une fois :

  3. #3
    Membre confirmé Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Par défaut
    C'est cool, je fais des post avec questions et réponses à moi tout seul.

    J'ai trouvé la solution sur un autre forum.

    Alors je me tate pour savoir si je vous la donne ou non...

  4. #4
    Membre confirmé Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Par défaut
    Bon allez, je vais être sympa.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    ' Exemple avec une PictureBox
    ' Set une nouvelle image
    Property Set Picture(ByVal NewPicture As Picture)
     
    Set PictureBox1.Picture = NewPicture
    PropertyChanged "Picture"
     
    End Property
     
    ' Pour 'récupérer' l'image
    Public Property Get Picture() As Picture
     
    Set Picture = PictureBox1.Picture
     
    End Property
     
    ' Sauvegarde le tout
    Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
     
    PropBag.WriteProperty "Picture", PictureBox1.Picture, Nothing
     
    End Sub
     
    ' Récupère le tout!
    Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
     
    Set PictureBox1.Picture = PropBag.ReadProperty("Picture", Nothing)
    'Ou Set Picture = PropBag.ReadProperty("Picture", Nothing)
     
    End Sub
    Voilà...

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo