OVH Cloud OVH Cloud

Propriétés d'un controle

3 réponses
Avatar
Flex
Bonsoir tout le monde
Une petite question qui me vient à l'esprit. J'avoue ne pas avoir réfléchi.
*Pour un usercontrol:
je définis 2 propriétés P1 et P2
*dans ma form:
Est ce que c'est possible que seul P1 apparaisse dans la fenêtre des
propriétés.
Par contre si je mets P1 à True (on suppose que par défaut c'est False)
alors
P2 apparait.
Merci

3 réponses

Avatar
ng
Salut,

Pourquoi simplement ne pas tenir compte de P2 quand P1 est Faux ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Flex wrote:
Bonsoir tout le monde
Une petite question qui me vient à l'esprit. J'avoue ne pas avoir
réfléchi. *Pour un usercontrol:
je définis 2 propriétés P1 et P2
*dans ma form:
Est ce que c'est possible que seul P1 apparaisse dans la fenêtre des
propriétés.
Par contre si je mets P1 à True (on suppose que par défaut c'est
False) alors
P2 apparait.
Merci


Avatar
Thierry BERTRAND
Si tu veux dire en mode design d'une forme utlisant le controle, alors je
pense que c'est impossible car la propriété apparaît dans la fenêtre de
propriété que si elle est en lecture / ecriture (property get et property
let)

Sinon elle n'apparaît pas.

Donc il faudrait que le fait de changer la propriété P1 en vrai (par
exemple) génére du code pour rendre la propriété P2 en lecture / ecriture

Donc pas possible pour moi.

Par contre tu peux bloquer dans la prperty Let de P2 si P1 n'est pas à la
bonne valeur, comme cela, il ne sera pas possible d'affecter P2 tant que P1
n'est pas à vrai
Exemple d'un activeX avec 4 propriétés dont 2 sont en L/E
Seules les propriétés P1 et P2 sont visible dans le browser de propriétés

Dim LP1 As Boolean
Dim LP2 As Long

Public Property Get P1() As Boolean
P1 = LP1
End Property

Public Property Let P1(Valeur As Boolean)
LP1 = Valeur
End Property

Public Property Get P2() As Long
P2 = LP2
End Property

Public Property Let P2(Valeur As Long)
If Not P1 Then Exit Property
LP2 = Valeur
End Property

Public Property Let P3(Valeur As Long)
If Not P1 Then Exit Property
LP2 = Valeur
End Property

Public Property Get P4() As Long
P4 = LP2
End Property

Private Sub UserControl_Initialize()
LP1 = True
LP2 = 5
End Sub
Avatar
Flex
ok merci, je me doutais que ça devait pas être faisable.
Merci à tous

"Thierry BERTRAND" a écrit dans le message de news:

Si tu veux dire en mode design d'une forme utlisant le controle, alors je
pense que c'est impossible car la propriété apparaît dans la fenêtre de
propriété que si elle est en lecture / ecriture (property get et property
let)

Sinon elle n'apparaît pas.

Donc il faudrait que le fait de changer la propriété P1 en vrai (par
exemple) génére du code pour rendre la propriété P2 en lecture / ecriture

Donc pas possible pour moi.

Par contre tu peux bloquer dans la prperty Let de P2 si P1 n'est pas à la
bonne valeur, comme cela, il ne sera pas possible d'affecter P2 tant que
P1
n'est pas à vrai
Exemple d'un activeX avec 4 propriétés dont 2 sont en L/E
Seules les propriétés P1 et P2 sont visible dans le browser de propriétés

Dim LP1 As Boolean
Dim LP2 As Long

Public Property Get P1() As Boolean
P1 = LP1
End Property

Public Property Let P1(Valeur As Boolean)
LP1 = Valeur
End Property

Public Property Get P2() As Long
P2 = LP2
End Property

Public Property Let P2(Valeur As Long)
If Not P1 Then Exit Property
LP2 = Valeur
End Property

Public Property Let P3(Valeur As Long)
If Not P1 Then Exit Property
LP2 = Valeur
End Property

Public Property Get P4() As Long
P4 = LP2
End Property

Private Sub UserControl_Initialize()
LP1 = True
LP2 = 5
End Sub