PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
17 sept. 2005 à 04:23
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
17 sept. 2005 à 17:34
bonsoir,
voilà, pour le test, je crée un nouveau usercontrol dont voici le code "bidon"
[VB6]
'déclarations
Public Enum eOK
eOUAI
eNAN
End Enum
Private mCtrl As eOK
'
'
'get let
Public Property Get Ctrl() As eOK
Ctrl = mCtrl
End Property
Public Property Let Ctrl(new_mCtrl As eOK)
If mCtrl <> new_mCtrl Then
mCtrl = new_mCtrl
PropertyChanged "Ctrl"
End If
End Property
'
'
'propbag
Private Sub UserControl_InitProperties()
Me.Ctrl = eOUAI
End Sub
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
With PropBag
Me.Ctrl = .ReadProperty("Ctrl", eOUAI)
End With
End Sub
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
With PropBag
.WriteProperty "Ctrl", Me.Ctrl, eOUAI
End With
End Sub
je voudrais simplement que si ce contrôle est posé au moins 2 fois sur la Form, la propriété Ctrl ne soit pas affichée dans la liste des propriétés s'ils sont sélectionnés à plusieurs...
en comparaison, comme un TextBox, la zone Text disparaît en multi-sélection.
j'ai regardé dans Outils>Attributs de procédure, rien à faire...
Je nai pas vb6 sous la main. Mais en utilisant la propriété parent de
ton usercontrol, on peut accéder à la liste des contrôles sur le
conteneur de cet l'usercontrol, puis boucler sur tous les contrôle de
ce conteneur est vérifier si l'un d'eux est du même type que
l'usercontrol chercher alors on retire la propriété sinon on la laisse.
Bon, c'est juste une idée mais je ne peux malheureusement pas l'appliquer comme je n'ai pas vb6.
ChRB
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 17 sept. 2005 à 12:42
salut,
je comprend bien l'idée, je vois bien également comment boucler pour trouver le type identique sur le Parent, mais ce n'est pas pour autant que mon Public Property Let
peut devenir un Private Property Let
....
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 17 sept. 2005 à 15:50
bon, je viens aux nouvelles :
je modifie mon Let, et j'ajoute une fonction :
Public Property Let Ctrl(new_mCtrl As eOK)
If mCtrl <> new_mCtrl Then
If CountMyType Then
mCtrl = new_mCtrl: PropertyChanged "Ctrl"
Else
MsgBox "TROP DE CONTRÔLES !!!", vbCritical
End If
End If
End Property
'
'
'
Private Function CountMyType() As Boolean
Dim Ctrls As Object, Cpt As Long
Cpt = 0
For Each Ctrls In UserControl.Parent
If (TypeOf Ctrls Is UserControl1) Then
Cpt = Cpt + 1
If Cpt > 1 Then Exit For
End If
Next Ctrls If Cpt > 1 Then CountMyType False Else CountMyType True
End Function
mon problème reste le même.
je peux savoir si mon contrôle est ou non en nombre voulu, mais je ne peux pas pour autant ne pas afficher le champs propriété :-\
le principe serait plus ou moins le même pour, par exemple, pour empêcher complètement la pose d'un contrôle
(aucune idée si c'est faisable)
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 17 sept. 2005 à 16:27
Tu ne peux pas (à ma connaissance) masquer une propriété en éxécution selon une condition.
VB masque automatiquement les propriétés qui ne sont pas valable pour
tout les contrôles sélectionnés (par exemple, si tu sélectionne un
textbox et un label, alors VB masque les propriétés Caption et Text vu
que les 2 contrôles ne possède pas tout les 2 ses propriétés).
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 17 sept. 2005 à 16:36
salut,
je met 2 TextBox et 2 Label
je sélectionne les 2 Label, la propriété Caption est vide, parce que différentes...
pour les TextBox, la propriété Text disparaît totalement de la liste des propriétés
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 17 sept. 2005 à 17:14
Ben tu peux toujours te servir d'une page de propriétés, et là tu as
bien plus de possibilité de personnalisation, mais là, vu que c'est VB
qui le gère directement, je ne sais vraiment pas comment on peut
masquer conditionnellement une propriété !
Voir dans la MSDN s'ils en parlent...
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 17 sept. 2005 à 17:34
re,
la page de propriété, pour mon exemple concret (puisqu'allégé pour ce topic) , ne convient pas du tout.
je suis sur la MSDN depuis plus de 3/4h, peu satisfaisant pour le moment.....