neurosupherot
Messages postés81Date d'inscriptionjeudi 7 août 2003StatutMembreDernière intervention 7 novembre 2007
-
31 juil. 2005 à 13:17
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDerniè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
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 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
cs_Stephane
Messages postés550Date d'inscriptionvendredi 5 janvier 2001StatutMembreDernière intervention23 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
neurosupherot
Messages postés81Date d'inscriptionjeudi 7 août 2003StatutMembreDerniè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é.
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 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
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 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/
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 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"....
neurosupherot
Messages postés81Date d'inscriptionjeudi 7 août 2003StatutMembreDerniè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
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 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"
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 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/
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 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)?
neurosupherot
Messages postés81Date d'inscriptionjeudi 7 août 2003StatutMembreDerniè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
neurosupherot
Messages postés81Date d'inscriptionjeudi 7 août 2003StatutMembreDerniè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
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 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/