OVH Cloud OVH Cloud

Explorateur d'objet et classes perso

1 réponse
Avatar
veve
Bonjour

J'utilise VB5 et je rencontre le (petit) probleme suivant :
Lorsque je crée des classes dans un projet et lorsque j'active l'explorateur
d'objet, je vois bien toutes mes classes crées ainsi que les méthodes,
propriétés et evenements associés (jusque là tout est normal). Par contre,
je vois aussi tous les éléments privés de la classe à savoir les variables,
les constante, les fonctions...etc. Bref on voit tout ce qui est déclaré en
"private".
Je trouve cela choquant et pas pratique du tout.
La question que je pose ici est donc de savoir s'il existe un moyen pour ne
faire apparaitre dans l'explorateur d'objet que les interfaces de la classe
crée , et non tout ce qui est privé à la classe.

Merci de me répondre à alain.vd@club-internet.fr

1 réponse

Avatar
Zoury
Salut! :O)

La question que je pose ici est donc de savoir s'il existe un moyen pour


ne
faire apparaitre dans l'explorateur d'objet que les interfaces de la


classe
crée , et non tout ce qui est privé à la classe.



Si par "explorateur d'objets" tu désigne l'intellisense, qui offre une liste
des propriétés, méthodes, fonctions, etc. d'un objet, alors ce comportement
est normal tant que ton projet utilise une classe interne, soit un module de
classe dans un projet ActiveX Exe par exemple, ou encore un module classe
publique se trouvant dans une ActiveX DLL non compilée qui serait référencée
par ton ActiveX Exe..

Une "solution" à ce "problème", pourrait d'utiliser une nomenclature
différente pour les propriétés privées de celles publiques..

par exemple la classe suivante :
'***
' CPersonne
Option Explicit

Private m_sNom As String
Private m_sPrenom As String
Private m_dtNaissance As Date

Public Property Get Nom() As String
Nom = m_sNom
End Property

Public Property Let Nom(ByRef sNom As String)
m_sNom = sNom
End Property

Public Property Get Prenom() As String
Prenom = m_sPrenom
End Property

Public Property Let Prenom(ByRef sPrenom As String)
m_sPrenom = sPrenom
End Property

Public Property Get DateNaissance() As Date
DateNaissance = m_dtNaissance
End Property

Public Property Let DateNaissance(ByRef dtNaissance As Date)
m_dtNaissance = dtNaissance
End Property

Public Function Clone() As CPersonne

Dim p As CPersonne
Set p = New CPersonne

With p
.DateNaissance = m_dtNaissance
.Nom = m_sNom
.Prenom = m_sPrenom
End With

Set Clone = p

End Function
'***

ainsi toutes les propriétés privées de la classe commencent par "m_" et sont
regroupées dans l'intellisense en plus de tous les avantages connus à
utiliser une nomenclature prédéterminée lorsque tu codes. ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous