User Data Type dans user control

cs_awi Messages postés 4 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 6 janvier 2006 - 3 janv. 2006 à 16:34
cs_awi Messages postés 4 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 6 janvier 2006 - 6 janv. 2006 à 17:15
Je cherche a créer un user type

Public type myType
Gain67 as integer
Gain862 as integer
end type

pour mémoriser un grand nombre de données avec un OCX.

Je n'arrive pas à "mémoriser" les info lorsque j'utilise l'ocx dans une form

Qui peut me répondre ou m'aider?
awi

5 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 janv. 2006 à 17:52
salut,

tout dépend de la structure de ton appel. est-ce par une propriété ou une méthode....

ton ocx, c'est juste un composant ctl dans un projet ou 2 projets...

tu peux avoir besoin de déclarer ton type dans un module public.



et si tu n'as pas d'erreur mais que la valeur n'est pas enregistrée, c'est que tu utilises une propriété non sauvée.

dans ce cas, en fin de Let, ajoute : PropertyChanged "MaPropriete" '<- ...

PCPT [AFCK]
0
cs_awi Messages postés 4 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 6 janvier 2006
4 janv. 2006 à 11:21
Salut, bonne année 2006 et merci de prendre du temps pour répondre.........

voilà ce que je fais(usercontrol)
'----------------------------------------------
Public Type typeShow
Gain862 As Integer
Gain47 As Integer
End Type


'Default Property Values:
Const m_def_myInput = 0
'Property Variables:
Dim m_myInput As typeShow



'Initialize Properties for User Control
Private Sub UserControl_InitProperties()


' m_myInput = m_def_myInput
End Sub


'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
'MemberInfo=21,0,0,0
Public Property Get myInput() As typeShow
myInput = m_myInput
End Property


Public Property Let myInput(New_myInput As typeShow)
m_myInput = New_myInput
PropertyChanged "myInput"
End Property


'Load property values from storage
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)


m_myInput = PropBag.ReadProperty("myInput", m_def_myInput)
End Sub


'Write property values to storage
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)


Call PropBag.WriteProperty("myInput", m_myInput, m_def_myInput)
End Sub
'-------------------------------------------------------------------

> type mismatch et autres erreur !!!!!!!!?

Je voudrais pouvoir dans une form faire:

usercontrol(0).gain47 = 55
usercontrol(1).gain47 = 65 etc

Merci pour ton aide

à bientôt

AWI

awi
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 janv. 2006 à 15:20
salut,

tu mélanges 2 choses je crois...



pour faire :

usercontrol(0).gain47 = 55

usercontrol(1).gain47 = 65

donc également

usercontrol(0).gain862 = 566



tu n'as pas besoin d'un type, il te faut juste 2 propriétés.

çà donnerait donc :




' ------------

' UserControl1

' ------------

'

Option Explicit



Dim mGain47 As Integer

Dim mGain862 As Integer

'

'

Public Property Get Gain47() As Integer

Gain47 = mGain47

End Property

Public Property Let Gain47(new_mGain47 As Integer)

mGain47 = new_mGain47

PropertyChanged "Gain47"

End Property

'

Public Property Get Gain862() As Integer

Gain862 = mGain862

End Property

Public Property Let Gain862(new_mGain862 As Integer)

mGain862 = new_mGain862

PropertyChanged "Gain862"

End Property

'

'

'

Private Sub UserControl_InitProperties()

mGain47 = 0

mGain862 = 0

End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

mGain47 = PropBag.ReadProperty("Gain47", 0)

mGain862 = PropBag.ReadProperty("Gain862", 0)

End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

Call PropBag.WriteProperty("Gain47", mGain47, 0)

Call PropBag.WriteProperty("Gain862", mGain862, 0)

End Sub









' -----

' Form1

' -----

'

Option Explicit

'

Private Sub Form_Load()

UserControl11.Gain47 = 5

UserControl11.Gain862 = 98

End Sub




<small> Coloration
syntaxique automatique [AFCK]</small>









un type ne peut pas être public

si tu veux absolument en utiliser un, alors c'est par une méthode et
non une propriété, et utiliser un module, mais c'est se compliquer
l'existance à rien parce que tu auras encore des problèmes pour passer
un type en paramètre....
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 janv. 2006 à 16:59
allez, on refait çà dans l'ordre :






tu lances VB -> EXE Standard

renomme "Projet1" en "pEXE"



fichier -> ajouter un projet-> contrôle ActiveX

renomme ce nouveau "projet1" en "pOCX"



tu changes la couleur du usercontrol pour le voir après sur la form, et copie y ce code :




Option Explicit

'

Public Type tTest

t1 As Integer

t2 As String

End Type

'

Dim mMonType As tTest

'

'

Private Sub UserControl_Initialize()

mMonType.t1 = -1

mMonType.t2 = "défaut"

End Sub

'

'

Public Sub tGet(ByRef TttG As tTest)

TttG = mMonType

End Sub

Public Sub tSet(ByRef TttS As tTest)

mMonType = TttS

End Sub




<small> Coloration
syntaxique automatique [AFCK] </small>









tu fermes les fenêtre et tu vas ensuite va sur la Form1

tu poses le contrôle, puis 2 boutons :

Cmd_Set

Cmd_Get



puis tu colles ce code dans la form




Option Explicit

'

'

Private Sub Cmd_Set_Click()

Dim tTypeUC As tTest

tTypeUC.t1 = 91

tTypeUC.t2 = "bonjour"

UserControl11.tSet tTypeUC

End Sub

'

'

Private Sub Cmd_Get_Click()

Dim tTypeUC As tTest

UserControl11.tGet tTypeUC

MsgBox tTypeUC.t1 & " : " & tTypeUC.t2

End Sub




<small> Coloration
syntaxique automatique [AFCK]</small>







çà donne quoi?



ensuite évidemment comme tu le soulignais, les valeurs sont à zéro au démarrage, mais normal puisque c'est des procédures.

à toi soit de les enregistrer dans un propbag (donc 3*20 si ma mémoire
est bonne), soit dans un fichier ini que tu relis à l'init





qu'est-ce que tu en dis?

PCPT [AFCK]
0

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

Posez votre question
cs_awi Messages postés 4 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 6 janvier 2006
6 janv. 2006 à 17:15
Merci pour l'info j'ai modifié mon zip.
Je vais tester ta proposition ce WE

à bientôt
awi
0
Rejoignez-nous