Comment faire pour que l'accès aux propriétés d'un usercontrol soit un évenement [Résolu]

Signaler
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
Salut

j'ai créer un usercontrol du genre slider ou fader perso, le control fonctionne bien quand on le move avec la souris, j'ai créer un évenement scroll, tout marche bien quand on l'utilise.
Mon prob :
Quand j'écris la valeur du slider à partir de la form, du genre :
slider1.valeur=512 (entre min et max)
je ne sais pas comment faire pour que le slider se repositionne tout seul quand on ecrit sa nouvelle valeur, plus généralement quand on accède aux propriétés durant l'éxécution.
J'ai vu qu'il y avait des évenements readproperty et writeproperty mais j'ai pas compris ce que ca faisait et comment les utiliser, j'ai aussi pensé à un timer qui viendrai raffraîchir, mais je préfèrerai faire de l'évenementiel si possible.
Si quelqu'un a une solution pour que l'accès aux propriétés d'un usercontrol soit un évenement ?

merci

3 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
Aïe, c'est sûr que comme cà c'est plus rapide à programmer, mais tu ne peux pas faire ce que tu veux faire.



Il faut utiliser des Property Get et Property Let pour chacune de tes propriétés, par exemple :


Private m_dValeur As Double



Public Property Get Valeur() As Double



Let Valeur = m_dValeur



End Property



Public Property Let Valeur(byval dValeur As Double)



Let m_dValeur = dValeur

Call Timer1_Timer



End Property



C'est plus long à faire, c'est sûr, mais ca te permet d'avoir des
événements pour chaque modifications des valeurs de tes propriétés, et
pour la lecture de celles-ci !




DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
En fait, dans ta Property Let, c'est là qu'il faut déclencher le
raffraichissement du contrôle (c'est elle qui est appelée lorsqu'on
modifie la propriété par code).



Les sub ReadProperties et WriteProperties permettent de conserver les
valeurs de propriétés d'une session de VB à une autre (si tu les
utilise pas, les valeurs entrées en mode création sont perdues).

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016

j'arrive pas à l'utiliser Property Let, je n'arrive pas entrer dedans
je fait du VB6 que depuis 2 mois, donc y'a p'tet des choses de base que je capte pas

je te montre le code de mon Fader, enfin Slider pour les puristes VB.
Il est simplement constitué d'une image1 qui est le bouton qui bouge entre 2 limites quand la souris monte et descend, bouton appuyé.
Si tu peux m'expliquer ce que je doit faire avec property Let
le nom que je doit mettre les paramètres et ce que je doit faire dedans

Public Valeur, Minimum, Maximum As Integer ' Propriétés accessible par la Form
Dim ValeurTemp, HTemp, Deviation, HButtonStart, LimHigh, LimLow As Integer
Dim StartScroll As Boolean ' Flag à "1" sur évènement MouseDown() sur l'"image1" (bouton Fader)

Public Event Scroll() ' Evenement Scroll quand la souris scroll ca modifie la var "Valeur"

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
RaiseEvent Scroll
StartScroll = True
HButtonStart = Y 'Sauvegarde de la position de la souris sur l'image1 qui est l'image du slider mobile
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
' lorsque la souris bouge on vient modifier la valeur Image1.top pour faire bouger l'image du slider en même temps que la souris
' entre des limite maximum et minimum ou l'image ne bouge plus
If StartScroll = True Then
RaiseEvent Scroll
If Y > 0 And Y < Image1.Height Then
Image1.Top = Image1.Top - (HButtonStart - Y)

End If
If Image1.Top < LimHigh Then Image1.Top = LimHigh
If Image1.Top > LimLow Then Image1.Top = LimLow
Valeur = 1023 - Round((Image1.Top - LimHigh) / (LimLow - LimHigh) * 1023)
ValeurTemp = Valeur ' Sauvegarde de la valeur actuelle
End If


End Sub
Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
StartScroll = False ' fin de srcolling
End Sub

Private Sub Timer1_Timer()
' La combine que j'utilse pour l'instant c de venir teste en continu si la var Valeur et égale à la var ValeurTemp
' sinon on raffraîchit la position de l'image1 If ValeurTemp <> Valeur Then Image1.Top (3480 - 120) * (1023 - Valeur) / 1023 + 120: ValeurTemp Valeur
End Sub

Private Sub UserControl_Initialize()
'Initialisation des positions des limites et de l'image du fader
Valeur = 0
ValeurTemp = Valeur
UserControl.Height = Image2.Height
UserControl.Width = Image2.Width
LimHigh = 0.045 * UserControl.Height
LimLow = 0.955 * UserControl.Height - Image1.Height
Image1.Left = (UserControl.Width - Image1.Width) / 2
Image1.Top = LimLow
End Sub

Private Sub UserControl_InitProperties()
Valeur = 0
Minimum = 0
Maximum = 1023
End Sub

Private Sub UserControl_Resize()
Image2.Height = UserControl.Height
Image2.Width = UserControl.Width
LimHigh = 0.045 * UserControl.Height
LimLow = 0.955 * UserControl.Height - Image1.Height
Image1.Left = (UserControl.Width - Image1.Width) / 2
Image1.Top = LimLow
End Sub

merci