Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Controle Utilisateur - Property

3 réponses
Avatar
Olivier
Bonjour,

J'ai un projet (*.exe) et un contr=F4le utilisateur que je d=E9veloppe.
=20
Je cherche =E0 donner la propri=E9t=E9 CheminDeSauvegarde pour le contr=F4=
le=20
utilisateur =E0 partir d'une fen=EAtre du projet exe.

Dans le le contr=F4le utilisateur j'ai ceci:

Property Let CheminDeSauvegarde(Chemin As String)
Label1.Caption =3D "Chemin de sauvegarde: " & Chemin
Chemin =3D Chemin
End Property

Chemin est bien ce qui est donn=E9 par la form de l'exe.

Le probl=E8me est que je dois r=E9utiliser le contenu de Chemin plus loin=
=20
dans le contr=F4le utilisateur et la il me dit que Chemin est empty.

J'ai essay=E9 en mettant Public chemin dans le contr=F4le utilisateur et =

dans un module mais =E7a ne change rien.

Comme c'est la 1=E8re fois que je cr=E9e un contr=F4le utilisateur je ne =
sais=20
pas si je fait cela correctement.

Merci pour votre aide !

3 réponses

Avatar
Jacques93
Bonjour Olivier
Olivier a écrit :
Bonjour,

J'ai un projet (*.exe) et un contrôle utilisateur que je développe.

Je cherche à donner la propriété CheminDeSauvegarde pour le contrôle
utilisateur à partir d'une fenêtre du projet exe.

Dans le le contrôle utilisateur j'ai ceci:

Property Let CheminDeSauvegarde(Chemin As String)
Label1.Caption = "Chemin de sauvegarde: " & Chemin
Chemin = Chemin



Là ça ne colle pas ;-) ...

End Property

Chemin est bien ce qui est donné par la form de l'exe.

Le problème est que je dois réutiliser le contenu de Chemin plus loin
dans le contrôle utilisateur et la il me dit que Chemin est empty.

J'ai essayé en mettant Public chemin dans le contrôle utilisateur et
dans un module mais ça ne change rien.



Je ne pense pas que cela soit une bonne idée, la variable contenant la
propriété doit rester privée. Son accès de faisant par :

Property Let => Lecture (ou Property Set s'il s'agit d'un objet)

Property Get => Ecriture


Comme c'est la 1ère fois que je crée un contrôle utilisateur je ne sais
pas si je fait cela correctement.




Peut être, dans le module de classe du contrôle utilisateur (.ctl):

Private m_Chemin as String ' Stockage privé de la propriété

' Assigne la propriété
Public Property Let CheminDeSauvegarde(Chemin As String)
Label1.Caption = "Chemin de sauvegarde: " & Chemin
m_Chemin = Chemin
End Property

' Récupére la propriété
Public Property Get CheminDeSauvegarde() as String
CheminDeSauvegarde = m_Chemin
End Property

Si ensuite tu doit accéder à cette propriété à l'intérieur du contrôle
utilisateur :

Dim MonChemin as String

MonChemin = CheminDeSauvegarde

Enfin, afin d'initialiser la propriété, de la sauvegarder lorsque tu
quittes le projet, et de la récupérer au chargement :

Private Sub UserControl_Initialize()
CheminDeSauvegarde = ""
End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
With PropBag
.WriteProperty "CheminDeSauvegarde", CheminDeSauvegarde
End With
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
With PropBag
CheminDeSauvegarde = .ReadProperty("CheminDeSauvegarde", "")
End With
End Sub

Ici "CheminDeSauvegarde" (entre guillemets), est un libellé libre, cela
pourrait être "CDS", "TRUC" (moins parlant). L'important est de le
nommer de manière identique dans ReadProperties et WriteProperties

N'hésites pas à mettre des points d'arrêts et de tracer pas à pas pour
voir le cheminement, c'est un bon moyen, à mon sens, d'en saisir le
mécanisme.

Un tutorial plus complet :

<http://msdn2.microsoft.com/en-us/library/aa262304(VS.60).aspx>

et :

<http://msdn2.microsoft.com/en-us/library/aa229115(VS.60).aspx>

Plus spécifique aux UserControl.

--
Cordialement,

Jacques.
Avatar
Olivier
Bonjour,

Avec votre aide je suis arrivé à ceci qui fonctionne bien:
dans le ctl

Private mCheminDeSauvegarde As String
Private Chemin As String

Property Let CheminDeSauvegarde(Chemin As String)
mCheminDeSauvegarde = Chemin
End Property

Et là je peux récupérer où je le souhaite la valeur mCheminDeSauv egarde.

Il y a peux être moyen de faire plus simple mais je ne sais pas.

Merci!!!

Jacques93 a écrit :
Bonjour Olivier
Olivier a écrit :
Bonjour,

J'ai un projet (*.exe) et un contrôle utilisateur que je développe .

Je cherche à donner la propriété CheminDeSauvegarde pour le cont rôle
utilisateur à partir d'une fenêtre du projet exe.

Dans le le contrôle utilisateur j'ai ceci:

Property Let CheminDeSauvegarde(Chemin As String)
Label1.Caption = "Chemin de sauvegarde: " & Chemin
Chemin = Chemin



Là ça ne colle pas ;-) ...

End Property

Chemin est bien ce qui est donné par la form de l'exe.

Le problème est que je dois réutiliser le contenu de Chemin plus l oin
dans le contrôle utilisateur et la il me dit que Chemin est empty.

J'ai essayé en mettant Public chemin dans le contrôle utilisateur et
dans un module mais ça ne change rien.



Je ne pense pas que cela soit une bonne idée, la variable contenant l a
propriété doit rester privée. Son accès de faisant par :

Property Let => Lecture (ou Property Set s'il s'agit d'un obj et)

Property Get => Ecriture


Comme c'est la 1ère fois que je crée un contrôle utilisateur je ne
sais pas si je fait cela correctement.




Peut être, dans le module de classe du contrôle utilisateur (.ctl):

Private m_Chemin as String ' Stockage privé de la propriété

' Assigne la propriété
Public Property Let CheminDeSauvegarde(Chemin As String)
Label1.Caption = "Chemin de sauvegarde: " & Chemin
m_Chemin = Chemin
End Property

' Récupére la propriété
Public Property Get CheminDeSauvegarde() as String
CheminDeSauvegarde = m_Chemin
End Property

Si ensuite tu doit accéder à cette propriété à l'intérieur du contrôle
utilisateur :

Dim MonChemin as String

MonChemin = CheminDeSauvegarde

Enfin, afin d'initialiser la propriété, de la sauvegarder lorsque t u
quittes le projet, et de la récupérer au chargement :

Private Sub UserControl_Initialize()
CheminDeSauvegarde = ""
End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
With PropBag
.WriteProperty "CheminDeSauvegarde", CheminDeSauvegarde
End With
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
With PropBag
CheminDeSauvegarde = .ReadProperty("CheminDeSauvegarde", "")
End With
End Sub

Ici "CheminDeSauvegarde" (entre guillemets), est un libellé libre,
cela pourrait être "CDS", "TRUC" (moins parlant). L'important est de
le nommer de manière identique dans ReadProperties et WriteProperties

N'hésites pas à mettre des points d'arrêts et de tracer pas à p as pour
voir le cheminement, c'est un bon moyen, à mon sens, d'en saisir le
mécanisme.

Un tutorial plus complet :

<http://msdn2.microsoft.com/en-us/library/aa262304(VS.60).aspx>

et :

<http://msdn2.microsoft.com/en-us/library/aa229115(VS.60).aspx>

Plus spécifique aux UserControl.



Avatar
Jacques93
Bonjour Olivier
Olivier a écrit :
Bonjour,

Avec votre aide je suis arrivé à ceci qui fonctionne bien:
dans le ctl

Private mCheminDeSauvegarde As String



Private Chemin As String



==> A mon avis, superflu


Property Let CheminDeSauvegarde(Chemin As String)
mCheminDeSauvegarde = Chemin
End Property




En fait tu déclares Chemin au niveau du module, et du passage de
paramètre, seule la déclaration du passage de paramètre est prise en compte

Et là je peux récupérer où je le souhaite la valeur mCheminDeSauvegarde.

Il y a peux être moyen de faire plus simple mais je ne sais pas.




--
Cordialement,

Jacques.