2011-01-13 8 views
7

Sto usando Windows 7 e il mio progetto è in VB 6.0. Ricevo errori mentre eseguo il mio programma. Esso mostra l'errore:Errore "Tipo definito dall'utente non definito" in VB 6 in Windows 7

User-defined type not defined.

Ecco il mio codice:

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 

Come posso risolvere questo errore?

+1

Come ti aspetti che eseguiamo il debug di un problema come questo, a meno che non pubblichi un codice? In particolare, la parte che il debugger mette in evidenza per te come contenente l'errore. –

+0

Private Sub Toolbar1_ButtonClick (ByVal Pulsante Come MSComctlLib.Button) Select Case Button.Key Caso "traccia": Chiamata mntrace_Click Case "snrplot": Call mnSnrplot_Click Case "Skyplot": Call mnskyplot_Click Case "NMEA": Chiamata mnNmea_Click Case "navigazione": chiamata mnNavigation_Click Case "sondaggio": Call mnSurvey_Click caso "pausa/start": Call mnpause_Click Case "salvare": Call mnsave_Click Case "stampa": Call mnprint_Click Case "offline": chiamata mnoffline_Click End Select End Sub –

risposta

20

Il compilatore sta evidenziando automaticamente la prima riga della dichiarazione di funzione per voi quando appare l'errore. Ciò significa che l'errore si verifica da qualche parte all'interno di quella linea. A volte non è così utile come vorresti, ma in questo caso, riesce a dirti parecchio.

In particolare, l'unico "tipo definito dall'utente" (in realtà, l'unico "tipo" a tutti) che appare nella dichiarazione della funzione è MSComctlLib.Button. Quello che il messaggio di errore del compilatore ti dice qui è che non sa cosa sia uno MSComctlLib.Button. Si presume pertanto che sia un tipo "definito dall'utente"perché spesso non sa di cosa l'utente stia parlando. :-)

In entrambi i casi, la correzione è semplice: devi dire al compilatore cos'è un MSComctlLib.Button. In questo caso, ha sbagliato a supporre che si tratti di un tipo definito dall'utente. In realtà è un controllo pulsante fornito nella Libreria controlli comuni di Microsoft Windows. Per comunicare a VB 6 questo controllo, è necessario aggiungere il componente corrispondente al progetto. Attenersi alla seguente procedura:

  1. Dal menu "Progetto", selezionare "Componenti".

  2. Nella finestra di dialogo che appare, scorrere di circa 2/3 della lista verso il basso fino alle M. Effettuare un controllo sia tramite gli elementi "Microsoft Windows Common Controls 6.0" che "Microsoft Common Controls-2 6.0". (Non preoccupatevi se il vostro hanno una destinazione diversa service pack.)

              Components dialog in VB 6 IDE

  3. Fare clic sul pulsante OK. Se sei veloce, vedrai alcuni controlli aggiuntivi aggiunti alla tua casella degli strumenti. Questi sono i controlli forniti dalle librerie dei componenti che hai appena aggiunto. Tra questi controlli c'è quello chiamato Button.

Infine, provate a compilare ed eseguire il progetto di nuovo, tutto dovrebbe andare bene questa volta, perché ora il compilatore sa che cosa il tipo MSComctlLib.Button è. Nel caso in cui ancora non lo fai, è un pulsante che appare sulla barra degli strumenti. Il controllo della barra degli strumenti è fornito dalla libreria Common Controls e include un tipo che definisce un singolo pulsante visualizzato su quella barra degli strumenti.

+0

Dopo aver seguito questi passaggi, mi manca la libreria degli oggetti. Come lo rimuovo? –

0

Sembra che manchi un riferimento a una libreria di oggetti.

(avete eseguito senza errori altrove?)

+0

sory non riesco a prenderti. puoi spiegare? –

+1

Penso che Cody Gray l'abbia spiegato molto bene sopra :-) –

0

Penso che tu abbia appena copiato e incollato quel codice da un'altra parte. Normalmente, se si desidera fare riferimento a MSComctlLib, normalmente si eseguiranno prima i passaggi indicati da Cody Gray prima di poter accedere alla libreria dei tipi.