web-dev-qa-db-fra.com

Erreur "Type défini par l'utilisateur non défini" dans VB 6 sous Windows 7

J'utilise Windows 7 et mon projet est dans VB 6.0. Je reçois des erreurs lors de l'exécution de mon programme. Cela montre l'erreur:

Type défini par l'utilisateur non défini.

Voici mon code:

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
    Select Case Button.Key
        Case "trace": Call mntrace_Click
        Case "snrplot": Call mnSnrplot_Click
        Case "skyplot": Call mnskyplot_Click
        Case "nmea": Call mnNmea_Click
        Case "navigation": Call mnNavigation_Click
        Case "survey": Call mnSurvey_Click
        Case "pause/start": Call mnpause_Click
        Case "save": Call mnsave_Click
        Case "print": Call mnprint_Click
        Case "offline": Call mnoffline_Click
    End Select
End Sub

Comment puis-je résoudre cette erreur?

9
sunil.nishad87

Le compilateur met automatiquement en surbrillance la première ligne de la déclaration de fonction lorsque l'erreur apparaît. Cela signifie que l'erreur se produit quelque part dans cette ligne. Parfois, ce n'est pas aussi utile que vous le souhaitez, mais dans ce cas, il parvient à vous en dire beaucoup.

Plus précisément, le seul "type défini par l'utilisateur" (en réalité, le seul "type") qui apparaît dans la déclaration de fonction est MSComctlLib.Button. Le message d'erreur du compilateur vous dit ici qu'il ne sait pas ce qu'est un MSComctlLib.Button. Il suppose donc qu'il s'agit d'un type "défini par l'utilisateur" car il ne sait souvent pas de quoi parle l'utilisateur. :-)

Quoi qu'il en soit, le correctif est simple: vous devez indiquer au compilateur ce qu'est un MSComctlLib.Button. Dans ce cas, il s’est trompé en supposant qu’il s’agissait d’un type défini par l’utilisateur. Il s’agit en fait d’un contrôle bouton fourni dans la bibliothèque des contrôles communs de Microsoft Windows. Pour informer VB 6 de ce contrôle, vous devez ajouter le composant correspondant à votre projet. Suivez ces étapes:

  1. Dans le menu "Projet", sélectionnez "Composants".

  2. Dans la boîte de dialogue qui apparaît, faites défiler les 2/3 environ de la liste jusqu'aux M. Cochez les éléments "Microsoft Windows Common Controls 6.0" et "Microsoft Common Controls-2 6.0". (Ne vous inquiétez pas si vous avez une désignation de service pack différente.)

    Components dialog in VB 6 IDE

  3. Cliquez sur le bouton OK. Si vous êtes rapide, vous verrez quelques contrôles supplémentaires ajoutés à votre boîte à outils. Ce sont les contrôles fournis par les bibliothèques de composants que vous venez d'ajouter. Parmi ces contrôles, il en existe un appelé Button.

Enfin, essayez de compiler et d’exécuter à nouveau votre projet - tout devrait bien se passer cette fois-ci, car le compilateur sait maintenant quel est le type MSComctlLib.Button. Si ce n'est toujours pas le cas, c'est un bouton qui apparaît dans votre barre d'outils. Le contrôle de barre d’outils est fourni par la bibliothèque Contrôles communs et inclut un type qui définit un bouton individuel apparaissant dans cette barre d’outils.

24
Cody Gray

Je pense que vous venez de copier et coller ce code depuis ailleurs. Normalement, si vous souhaitez faire référence à MSComctlLib, vous devez normalement commencer par suivre les étapes indiquées par Cody Gray avant de pouvoir accéder à la bibliothèque de types.

0
Jkyle Landicho

On dirait qu'il vous manque une référence à une bibliothèque d'objets. 

(L'avez-vous exécuté sans erreur ailleurs?)

0
Mikkel Gadegaard