Dialogue entre le Form et le User CTRL

Résolu
cs_jeangil Messages postés 2 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 14 juin 2009 - 11 juin 2009 à 16:37
cs_jeangil Messages postés 2 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 14 juin 2009 - 14 juin 2009 à 18:06
bonjour,

J'e suis débutant en Prg Objet.

Avant de me lancer dans l'écriture d'un Composant CTRL ActiveX, j'ai écrit un petit programme avec un Exe Standart auquel j'ajoute un User Control et je met un Timer sur mon User Control.

Dans mon User Control je déclare 3 propiétés: positionx, Altitude et Speedprop.

je voudrais, en appelant mon Timer, incrémenter la valeur de mes 3 propriétés et récupérer, dans la boucle du Timer, ces valeurs dans mon Form1.

malgrés plusieurs essais, je n'y arrive pas.

Je joins mon Programme (et désolé pour les maladresses de style et de programmation !!!).

Merci de vos conseils.

Jean-Gilbert

*************CODE USER CTRL************

Option Explicit

Private Speed       As Double
Private Alt         As Double
Private PosX        As Double


 


Public Property Get positionx() As Double
    MsgBox "Get positionX"
    positionx = PosX
End Property


Public Property Let positionx(NewValue As Double)
    MsgBox "Let positionX"
    PosX = NewValue
    UserControl.PropertyChanged positionx
End Property




Public Property Get Altitude() As Double
    Altitude = Alt
End Property


Public Property Let Altitude(NewValue As Double)
    Alt = NewValue
    UserControl.PropertyChanged Altitude
End Property




Public Property Get SpeedProp() As Double
    SpeedProp = Speed
End Property


Public Property Let SpeedProp(NewValue As Double)
    Speed = NewValue
    UserControl.PropertyChanged SpeedProp
End Property




Private Sub Timer1_Timer()


    i = i + 1
    PosX = PosX + 1
    Speed = Speed + 1
    Alt = Alt + 1
        If i >3 Then Timer1.Enabled False
End Sub
  




Private Sub UserControl_Click()
    i = 0
    Timer1.Enabled = True
End Sub


Private Sub UserControl_Initialize()
    MsgBox "Initialize"
    Speed = 50
    PosX = 10
    Alt = 5
End Sub


Private Sub UserControl_InitProperties()
    MsgBox "InitProperties"
End Sub


Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    MsgBox "ReadProperties"
    Speed = PropBag.ReadProperty(Speed, Speed)
    PosX = PropBag.ReadProperty(PosX, PosX)
    Alt = PropBag.ReadProperty(Alt, Alt)
End Sub




Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    MsgBox "WriteProperties"
    PropBag.WriteProperty Speed, Speed
    PropBag.WriteProperty PosX, PosX
    PropBag.WriteProperty Alt, Alt
End Sub


*****CODE    FORM**************

Option Explicit


 


Private Sub Form_Load()
     
    Text1.Text = UserControl11.positionx
    Text2.Text = UserControl11.SpeedProp
    Text3.Text = UserControl11.Altitude
  
End Sub

*******************************

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 juin 2009 à 20:25
PS : Il faudra peut-être supprimer puis remettre le UserControl sur ta forme pour qu'il prennen en compte cette modif de structure et que tu puisses voir ce nouvel évènement.
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 juin 2009 à 20:23
Salut
Si tu vas dans le sens :
Forme --> UserControl
Il faut déclarer une propriété Let ou Set

UserControl --> Forme
Il faut déclarer un évènement dans le UserControl :
Partie déclaration :
   Dim WithEvent leNom(EventuelleVariable As String)
Quand tu veux envoyer l'info depuis el UserControl vers la forme :
   RaiseEvent leNom("Coucou")
Et dans ta forme, un nouvel objet apparait dans la liste des composants présents sur ta forme (ComboBox de gauche dans la page de code) = le nom de ton UserControl.
Il a maintenant un évènement "leNom" (ComboBox de  droite dans la page de code après l'avoir sélectionné)
Tu récupèreras ainsi le texte "Coucou" dans la variable "EventuelleVariable"

Vala
Jack, =fr MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_jeangil Messages postés 2 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 14 juin 2009
14 juin 2009 à 18:06
Bonjour,


Tout marche bien,


Merci encore pour l'aide.


Jean-Gilbert


 
0
Rejoignez-nous