2011-01-13 11 views
7

Windows 7 kullanıyorum ve projem VB 6.0'da. Programımı yürütürken hata alıyorum.Windows 7 altında VB 6'da "Kullanıcı tanımlı tür tanımlı değil" hatası

İşte

User-defined type not defined.

kodum edilir:

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 

Nasıl bu hatayı çözebilir Bu hata gösteriyor?

+1

Bazı kod göndermediğiniz sürece, böyle bir sorunu nasıl ayıklamamamızı beklersiniz? Özellikle, hata ayıklayıcınız, hata içerdiği için sizin için öne çıkar. –

+0

Private Sub Toolbar1_ButtonClick (MSComctlLib.Button ByVal Düğme) Select Case Button.Key Vaka "iz": mntrace_Click Çağrı Vaka "snrplot": "skyplot" mnSnrplot_Click Kılıfı çağrı: Çağrı: mnskyplot_Click Vaka "nmea" Çağrı mnNmea_Click Vaka "navigasyon": "anket" mnNavigation_Click Kılıfı çağrı: "/ başlangıç ​​pause" mnSurvey_Click Kılıfı çağrı: mnpause_Click Kılıfı Çağrı "kaydet": "baskı" mnsave_Click Kılıfı çağrı: mnprint_Click Vaka "çevrimdışı" Çağrı: Çağrı mnoffline_Click End Seç End Sub –

cevap

20

hata göründüğünde derleyici sizin için otomatik fonksiyon tanımlaması ilk satırını vurgulama edilir. Bu, hata bu satırın içinde bir yerde gerçekleştiği anlamına gelir. Bazen istediğiniz kadar yardımcı olmaz, ancak bu durumda size çok şey anlatmayı başarıyor.

Özellikle, işlev beyanında görünen "kullanıcı tanımlı" (yalnızca "tek" tür ") tekil MSComctlLib.Button. Derleyici hata mesajının size söylediği şey, bir MSComctlLib.Button'un ne olduğunu bilmemesidir. Bu nedenle, kullanıcının ne hakkında konuştuğunu bilmediğinden, "kullanıcı tanımlı" tipi olduğunu varsayar. :-)

Her iki durumda da, düzeltme basittir: derleyiciye bir MSComctlLib.Button'un ne olduğunu söylemeniz gerekir. Bu durumda, kullanıcı tanımlı bir tür olduğunu varsayarak yanlış tahmin etti. Aslında Microsoft Windows Ortak Denetimler Kitaplığı'nda sağlanan bir düğmesi denetimi. VB 6'ya bu kontrol hakkında bilgi vermek için, ilgili bileşeni projenize eklemeniz gerekir. Şu adımları izleyin:

  1. "Proje" menüsünden "Bileşenleri" seçin. Görünen iletişim kutusunda, listenin yaklaşık 2/3'ünü, aşağı kaydırın. "Microsoft Windows Ortak Denetimleri 6.0" ve "Microsoft Common Controls-2 6.0" öğelerine göre bir kontrol yerleştirin. (Sizinki farklı bir hizmet paketi tanımlaması varsa endişelenmeyin.)

              Components dialog in VB 6 IDE

  2. Tamam düğmesine tıklayın. Hızlı olursanız, araç kutunuza eklenmiş bazı ek kontroller görürsünüz. Bunlar, yeni eklediğiniz bileşen kitaplıkları tarafından sağlanan denetimlerdir. Bu kontroller arasında Button denir.

Son olarak, şimdi derleyici MSComctlLib.Button tip olduğunu bildiği için, derlemek ve tekrar-herşey proje bu kez iyi olmalı çalıştırmayı deneyin. Hala yapmadığınız takdirde, araç çubuğunuzda görünen bir düğme. Araç çubuğu denetimi Ortak Denetimler kitaplığı tarafından sağlanır ve bu araç çubuğunda görünen tek bir düğmeyi tanımlayan bir tür içerir.

+0

Bu adımları uyguladıktan sonra, Nesne Kitaplığı eksik. Bunu nasıl kaldırırım? –

0

Nesne kitaplığına bir başvuru eksik gibi görünüyor.

(başka bir yerde hatalar olmadan idam mı?)

+0

Üzgünüm seni alamıyorum. açıklayabilir misin? –

+1

Bence Cody Gray, yukarıda çok iyi açıkladı :-) –

0

Sanırım bu kodu başka bir yerden kopyalayıp yapıştırdınız. Normalde, MSComctlLib'e başvurmak isterseniz, normalde Tür Kitaplığı'na erişebilmeniz için önce Cody Gray tarafından belirtilen adımları ilk olarak yaparsınız.