Probleme avec un UserControl

stipe Messages postés 33 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 30 décembre 2004 - 25 oct. 2004 à 09:26
stipe Messages postés 33 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 30 décembre 2004 - 26 oct. 2004 à 09:14
bonjour,

j'ai créé un Usercontrol comprenant une Datacombo et un Adodc
lors de l'execution de mon prgramme, j'ai des plantages aleatoires de VB. C'est à dire que parfois, la fenetre contenant mes instances de ce UserCOntrol se plante à l'ouverture, parfois elle s'ouvre mais se plante plus tard, lors de la prise de focus d'un de ces usercontrol, parfois, tout se passe bien!!

Qq'un peut-il m'aider à comprendre ce que j'aurais pu louper comme étape dans la creation de mon Usercontrol.

merci

6 réponses

cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
25 oct. 2004 à 11:08
salut,
Pour ca , il faudrait avoir le code, car c'est sans doute le code qui fait planter ton usercontrol, avec ses differents acces.

Bonne prog, poele_a_frire@hotmail.com
liquide
0
stipe Messages postés 33 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 30 décembre 2004
25 oct. 2004 à 11:41
voici le code de mon usercontrol qui contient donc une datacombo DtcKeyboard et un Adodc ADOKeyboard
je n'ai pas mis les RaiseEvent ou les Property du genre Text Enabled, ...

Const m_def_IsDropedDown = 0
Dim m_IsDropedDown As Variant
'Déclarations d'événements:
Event Change()
Event Validate(Cancel As Boolean) 
Event KeyDown(KeyCode As Integer, Shift As Integer) 
Event KeyPress(KeyAscii As Integer) 
Event KeyUp(KeyCode As Integer, Shift As Integer) 

Public Sub Refresh()
    ADOKeyboard.Refresh
End Sub

Public Property Get ConnectionString() As String
    ConnectionString = ADOKeyboard.ConnectionString
End Property

Public Property Let ConnectionString(ByVal New_ConnectionString As String)
    ADOKeyboard.ConnectionString() = New_ConnectionString
    PropertyChanged "ConnectionString"
End Property

Public Property Get RecordSource() As String
    RecordSource = ADOKeyboard.RecordSource
End Property

Public Property Let RecordSource(ByVal New_RecordSource As String)
    ADOKeyboard.RecordSource() = New_RecordSource
    PropertyChanged "RecordSource"
End Property

Public Property Get RowSource() As Adodc
    Set RowSource = DtcKeyboard.RowSource
End Property

Public Property Set RowSource(ByRef New_RowSource As Adodc)
    Set DtcKeyboard.RowSource = New_RowSource
    PropertyChanged "RowSource"
End Property

Public Sub ReFill()
    DtcKeyboard.ReFill
End Sub

Public Property Get SelectedItem() As Variant
    SelectedItem = DtcKeyboard.SelectedItem
End Property

Public Property Get Recordset() As Recordset
    Set Recordset = ADOKeyboard.Recordset
End Property

Public Property Set Recordset(ByVal New_Recordset As Recordset)
    Set ADOKeyboard.Recordset = New_Recordset
    PropertyChanged "Recordset"
End Property

Public Property Get IsDropedDown() As Variant
    IsDropedDown = m_IsDropedDown
End Property

Public Property Let IsDropedDown(ByVal New_IsDropedDown As Variant)
    m_IsDropedDown = New_IsDropedDown
    PropertyChanged "IsDropedDown"
End Property

Private Sub UserControl_InitProperties()
    m_IsDropedDown = m_def_IsDropedDown
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

    DtcKeyboard.BoundColumn = PropBag.ReadProperty("BoundColumn", "")
    DtcKeyboard.BoundText = PropBag.ReadProperty("BoundText", "")
    ADOKeyboard.ConnectionString = PropBag.ReadProperty("ConnectionString", "")
    ADOKeyboard.RecordSource = PropBag.ReadProperty("RecordSource", "")
    Set RowSource = PropBag.ReadProperty("RowSource", ADOKeyboard)
    DtcKeyboard.ListField = PropBag.ReadProperty("ListField", "")
    DtcKeyboard.Enabled = PropBag.ReadProperty("Enabled", True)
    m_IsDropedDown = PropBag.ReadProperty("IsDropedDown", m_def_IsDropedDown)
    DtcKeyboard.Text = PropBag.ReadProperty("Text", "")
    DtcKeyboard.ToolTipText = PropBag.ReadProperty("ToolTipText", "")
    Set Recordset = PropBag.ReadProperty("Recordset", ADOKeyboard.Recordset)
End Sub

'Écrire les valeurs des propriétés dans le stockage
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

    Call PropBag.WriteProperty("BoundColumn", DtcKeyboard.BoundColumn, "")
    Call PropBag.WriteProperty("BoundText", DtcKeyboard.BoundText, "")
    Call PropBag.WriteProperty("ConnectionString", ADOKeyboard.ConnectionString, "")
    Call PropBag.WriteProperty("RecordSource", ADOKeyboard.RecordSource, "")
    Call PropBag.WriteProperty("RowSource", RowSource, ADOKeyboard)
    Call PropBag.WriteProperty("ListField", DtcKeyboard.ListField, "")
    Call PropBag.WriteProperty("Enabled", DtcKeyboard.Enabled, True)
    Call PropBag.WriteProperty("IsDropedDown", m_IsDropedDown, m_def_IsDropedDown)
    Call PropBag.WriteProperty("Text", DtcKeyboard.Text, "")
    Call PropBag.WriteProperty("ToolTipText", DtcKeyboard.ToolTipText, "")
    Call PropBag.WriteProperty("Recordset", Recordset, ADOKeyboard.Recordset)
End Sub


le plantage a lieu lorsque j'affiche une fenetre contenant cette instance ou lorsque j'accede à l'objet ou ... jamais!
merci d'avance
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
25 oct. 2004 à 14:59
et sur quel ligne ca plante ?

Bonne prog, poele_a_frire@hotmail.com
liquide
0
stipe Messages postés 33 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 30 décembre 2004
26 oct. 2004 à 08:56
c'est une erreur du type "la memoire ne peut pas etre read", completement aleatoire
si je suis au debbuger, en principe ça ne plante pas

je pense à un probleme mémoire dû à une mauvaise création de mon controle
c pourquoi je voulais savoir si qq'un a déjà eu ce genre de probleme avec des usercontrol
0

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

Posez votre question
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
26 oct. 2004 à 09:03
salut,
cela vient peut etre du fait que tu essais de changer un propriété qui est en lecture seul.

par exemple: j'ai lu un "IsDropDown", et je sais que, pour une combo, on ne peut pas changer les tyles de la combo, une fois qu'elle est crée, il faut au préalable la detruire et juste avant sa nouvelle création, lui affecter les parametres sinon tout plante.

regarde sur certaines propriétés, si tu n'essais pas de les changer une fois que ton controle existant est chargé, mais que ces propriétés sont en lecture seule.

Bonne prog, poele_a_frire@hotmail.com
liquide
0
stipe Messages postés 33 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 30 décembre 2004
26 oct. 2004 à 09:14
en fait, IsDropedDown est une propriété créée par moi-meme
c un booleen que je met à True ou False qd j'ouvre/ferme ma liste

je me demande qd meme si le rowsource ne lui pose pas pb..
0
Rejoignez-nous