cs_jeangil
Messages postés2Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention14 juin 2009
-
11 juin 2009 à 16:37
cs_jeangil
Messages postés2Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention14 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)