Usercontrol

Résolu
neurosupherot Messages postés 81 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 7 novembre 2007 - 31 juil. 2005 à 13:17
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 9 août 2005 à 22:13
Coucou les vbfranciens j'ai une chtit question que jarrive po à résoudre



Alors: je fais un userconrol mais ce que j'aimerai c'est lorsqu'il se load,

il fait un call refresh(ou il y a tout les trucs pr dessiner le controle)

mais le problème c'est que toutes les valeurs de Me.machin et Me.bidule sont à 0 ou à ""

comment faire pour qu'il load ses proprietés en 1er??? merci

19 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
2 août 2005 à 20:03
tu as :

Let qui sert à renvoyer la valeur existante, à tout moment
Get qui sert à enregistrer une nouvelle valeur
InitProperties pour une valeur par défaut. et il ne faux pas confondre une valeur vide, avec une par défaut !!!
Read"" pour lire la valeur enregistrée
Write"" pour l'écrire

en fait, quand tu fais un Get, tu dois ensuite faire un Write. c'est ce que fait la fonction PropertyChange

concrètement :

'déclaration
Private mCaption as string

'propriétés
Public Property Get Caption() As String
Caption = mCaption
End Property
Public Property Let Caption (new_mCaptiont As String)
mCaption = new_mCaption
PropertyChanged "Caption"
End Property


Private Sub UserControl_InitProperties()
Me.Caption = "Text"
End Sub


Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
With PropBag
Me. Caption = .ReadProperty("Caption", "Text")
End With
End Sub


Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
With PropBag
.WriteProperty "Caption", Me.Caption, "Text"
End With
End Sub

voilà, t'as tout

PCPT
3
cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006
31 juil. 2005 à 13:44
slu



qu'est ce que tu entend par me.machin et me.bidule ?

les propriété que tu a écrite ? il faut les enregistrer/charger avec
les evenement (du usercontrol) writeproperties et readproperties
sinon explique toi un peu plus



A+



<hr size="2" width="100%">Utilisateurs du forum : Merci de lire http://www.vbfrance.com/forum.v2.aspx?ID=445871

<hr size="2" width="100%">
0
neurosupherot Messages postés 81 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 7 novembre 2007
31 juil. 2005 à 13:48
j'ai tout pour ue ca fonctionne. let get, propbag etc mais en fait je
veux lancer un truc comme un form_load mais les proprietés restent
nulles donc il faut une autre action pour que ca marche, apres
que le usercontrol soit chargé.
0
cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006
31 juil. 2005 à 13:59
ben tu as initialize initproperties ou show, mais si tes propriété sont nulles, c'est qu'elle ont cette "valeur"


A+



<hr size="2" width="100%">Utilisateurs du forum : Merci de lire http://www.vbfrance.com/forum.v2.aspx?ID=445871

<hr size="2" width="100%">
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 juil. 2005 à 14:17
salut,
le INITIALIZE est effectué avant le READ PROPERTIES.
si ton refresh nécessite ces valeurs, fait un Me.Refresh, ou PAINT à la fin du READ PROPERTIES
@+
PCPT
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
31 juil. 2005 à 14:19
Dans la propriété Initialize, tu définit les premiers valeurs des
propriétés à la création de ton usercontrol que ce soit en mode
création ou éxécution il me semble, et dans la propriété
InitProperties, tu initialise tes proprités lors de la première
création de ton usercontrol.



Ensuite, la propriété Show est déclenchée, c'est ici qu'il faut appeler ta propriété Refresh.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 juil. 2005 à 14:56
non Dark
seul "UserControl_InitProperties" est déclanché la première et unique fois ou le contrôle est posé sur son contenant.
"UserControl_Initialize" est déclanché à chaque Load de la Form, et à chaque fois qu'elle est affichée en mode conception

pour démarrer des valeurs non-nulles, c'est dans le "UserControl_InitProperties" qu'il faut remplir les variables :

Private Sub UserControl_InitProperties()
Me.Machin = True
Me.Bidule = 3
End Sub

aucune valeur de PropBag n'a, logiquement, à être modifiée à l'"Initialize"....

PCPT
0
neurosupherot Messages postés 81 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 7 novembre 2007
31 juil. 2005 à 14:58
oui mais les valeirs je veux pas qu'ellessoient constantes,
mais variables, comme un caption oui une couleur, on les rentre ds les
proprietes de lobjet, a droite, dans le tableau lol
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 juil. 2005 à 15:19
"qu'elles soient constantes, mais variables"
moi pas comprendre...
c'est une faute d'orthographe ou un non-sens... ???


si tu veux par exemple que... la taille de ton usercontrol soit fixe de 30*30 sur la Form, tu peux très bien déclarer


Const TailleFixe as Integer = 30


et au Resize :
Usercontrol.Height = TailleFixe
User..... = TailleFixe



umm?
PCPT
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 juil. 2005 à 15:22
arf, j'avais pas lu le "pas"
tes valeurs saisies dans le "UserControl_InitProperties" ne sont pas constantes pour autant, c'est à dire qu'elles sont celles par défaut. ensuite, Let Machin permet de lire la valeur, Get d'écrire la nouvelle.
mais dans le Get, tu dois ajouter la ligne PropertyChanged "Machin"

PCPT
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
31 juil. 2005 à 17:20
Je crois que ton problème est une incompréhension du fonctionnement du usercontrol :



Tes propriétés sont écrites dans le propbag à chaque fois que tu ferme la feuille contenant ton usercontrol.

Pour cela, il faut utiliser la fonction PropertyChanged, ainsi que l'événement WriteProperty.

Ensuite, à chaque fois que tu lance ta feuille, les propriétés sont
lues (événement ReadProperties) avant que l'événement Show ne soit
déclenché => si tu raffraîchit ton contrôle dans l'événement Show,
et que tu as correctement enregistré/chargé tes propriétés, ton
contrôles s'affichera avec les propriétés définies par l'utilisateur de
ton usercontrol.


>> pcpt : et le initialize est déclenché lorsque l'utilisateur
crée un usercontrol durant l'éxécution par du code également.


DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 juil. 2005 à 20:27
Dark -> je me cite : "UserControl_Initialize" est déclanché à chaque Load de la Form, et à chaque fois qu'elle est affichée en mode conception
ne disons-nous pas la même chose (maintenant)?

PCPT
0
neurosupherot Messages postés 81 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 7 novembre 2007
2 août 2005 à 18:18
En fait j'ai créé un control, et dès quil se lance, il prend les valeurs pas défaut, et donc, c'est comme si je mettais rien, là ou on change les proprietés, par ex me.caption= "", en fait comment on fait pour lire d'abord, les proprietés "variables", qu'on modifie, avec le menu des proprietés merci
0
neurosupherot Messages postés 81 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 7 novembre 2007
3 août 2005 à 12:20
ok mais là, tu definit les proprietés dans le code, moi je veux les définir par l'intermediaire du menu des proprietés, là ou ya height, left, (name) etc
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
3 août 2005 à 13:20
Tu as essayé le code donné ? Car il est correct et te permet d'avoir
les propriétés dans la fenêtre des propriétés ! Et il te permet de
faire ce que tu demande en plus !

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
3 août 2005 à 13:53
Dark : Merci
neurosupherot : j'répond même plus

PCPT
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
3 août 2005 à 14:45
lol

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
neurosupherot Messages postés 81 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 7 novembre 2007
9 août 2005 à 21:27
pcpt je m'excuse : j'avais mal lu le code alors qu'il marche je m'excuse :(

Voila voila
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
9 août 2005 à 22:13
je n'en doute pas
plus qu'à valider le code....
PCPT
0