ID Artikel: 192693 - Kajian Terakhir: 19 September 2011 - Revisi: 2.0

Lisensi kesalahan dengan kontrol ActiveX yang ditambahkan pada saat run-time

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

GEJALA

Jika Anda membuat sebuah aplikasi yang menggunakan kontrol ActiveX yang ditambahkan pada run-time dengan sintaks mirip dengan berikut:
   THISFORM.AddObject("myctrl","olecontrol","mscomctllib.listviewctrl.2")
				
Maka Anda membangun aplikasi ini ke file eksekusi, membuat distribusi dengan Setup Wizard atau InstallShield Express untuk Visual FoxPro Edition, dan menginstal aplikasi Anda di lain komputer, ketika Anda mencoba untuk menjalankan kode yang mirip dengan sebelumnya kode Anda menerima pesan kesalahan seperti berikut:
   Program Error
   OLE error code 0x80040112: Appropriate license for this class not found.
				

PENYEBAB

Distribusi yang dibuat dengan Visual FoxPro Setup Wizard atau InstallShield Express hanya memungkinkan run-time lisensi, sementara metode AddObject memerlukan waktu desain lisensi.

PEMECAHAN MASALAH

Tambahkan kontrol yang ingin Anda gunakan ke kelas yang tersimpan dalam Visual Kelas perpustakaan atau ke kelas yang dibuat dengan DEFINE kelas perintah. Selanjutnya, menambahkan sebuah instance dari kelas pada saat run-time bukannya menambahkan kontrol. Silakan baca bagian "Informasi selengkapnya" untuk rincian.

Visual FoxPro 7.0 dan kemudian melihat topik file "AddObject" bantuan untuk pemecahan masalah dalam produk mereka.

INFORMASI LEBIH LANJUT

Langkah-langkah mereproduksi perilaku

Contoh berikut menunjukkan menggunakan perintah menentukan kelas untuk membuat subclassed OleControl, kemudian menambahkan subclassed OleControl pada saat run-time.
  1. Paste kode berikut ke file program (.prg):
          PUBLIC oform1
          oform1=CREATEOBJECT("form1")
          oform1.Show
          READ EVENTS
          RETURN
    
          DEFINE CLASS form1 AS form
             AutoCenter = .T.
             cNextKey = "1_"
             Name = "Form1"
             Caption = "Treeview Demo Form"
    
             ADD OBJECT cmdExit AS commandbutton WITH ;
                Top = 204, ;
                Left = 276, ;
                Height = 27, ;
                Width = 84, ;
                Caption = "E\<xit"
    
             ADD OBJECT cmdAddLV AS commandbutton WITH ;
                Top = 204, ;
                Left = 10, ;
                Height = 27, ;
                Width = 106, ;
                Caption = "Add Listview"
    
             ADD OBJECT cmdAddLVClass AS commandbutton WITH ;
                Top = 204, ;
                Left = 130, ;
                Height = 27, ;
                Width = 136, ;
                Caption = "Add Listview Subclass"
    
             PROCEDURE Destroy
                CLEAR EVENTS
             ENDPROC
    
             PROCEDURE cmdExit.Click
                thisform.release()
             ENDPROC
    
             PROCEDURE cmdAddLV.Click
    
               * The following AddObject causes the error.
            Thisform.AddObject('Lv1','olecontrol','mscomctllib.listviewctrl.2')
            Thisform.SetLVProps()
    
             ENDPROC
    
             PROCEDURE cmdAddLVClass.Click
                * The following code shows the workaround. The class OC1 is
                * defined in the last 3 lines of this program.
                * Alternanely, you could use an object stored in a Visual Class
                * library (.vcx) file.
    
             Thisform.NewObject('LV1','OC1')
    
                Thisform.SetLVProps()
             ENDPROC
    
             PROCEDURE SetLVProps
                thisform.setall('enabled', .F.,'commandbutton')
                WITH thisform.LV1
                   .visible = .t.
                   .height = 190
                   .left = 75
                   .width = 250
                   .view = 2
                   .listitems.add(,,"List Item 1",,)
                   .listitems.add(,,"List Item 2",,)
                ENDWITH
                thisform.cmdExit.enabled = .t.
                thisform.cmdExit.setfocus()
             ENDPROC
          ENDDEFINE
    
          DEFINE class OC1 as olecontrol
             OleClass = 'mscomctllib.listviewctrl.2'
          ENDDEFINE
    						
  2. Menambahkan program untuk sebuah proyek dan membangun proyek ke executable berkas (.exe). Nama berkas lvtest.exe.
  3. Membuat sebuah direktori yang disebut TestDir dan menempatkan salinan executable file dari 2 langkah sebelumnya ke dalam direktori.
  4. Menjalankan Wisaya penataan Visual FoxPro.
  5. Di kotak dialog Wisaya penataan, "Langkah 1 Cari file" ditampilkan dalam daftar kotak. Dalam kotak teks file distribusi pilih TestDir direktori yang Anda buat di langkah 3, klik Pilih dan kemudian klik berikutnya.
  6. Di kotak dialog Wisaya penataan, "Langkah 2 menentukan komponen" adalah ditampilkan di kotak teks. Dalam grup opsi aplikasi komponen, Pilih kotak centang "Visual FoxPro runtime".
  7. Selanjutnya, pilih kotak centang kontrol ActiveX. Tambahkan Kontrol ActiveX kotak dialog muncul.
  8. Menggulir melalui "Pilih kontrol ActiveX untuk menginstal" kotak daftar, pilih "Microsoft ListView kontrol, versi 6.0", klik tombol Tutup untuk keluar dari kotak dialog dan kemudian klik berikutnya.
  9. Dalam langkah "Langkah 3 membuat Disk gambar direktori" Setup Wizard, Pilih atau ketik nama direktori yang Anda ingin menggunakan untuk penciptaan disk gambar Anda, dan kemudian klik berikutnya.
  10. Dalam "Langkah 4 menentukan pilihan persediaan", kotak dialog Setup Wizard, Ketik "ListView tes App" dalam kotak teks "Caption kotak dialog Setup" dan Ketik "Tidak ada" dalam kotak teks informasi hak cipta dan kemudian klik berikutnya.

    Catatan: Dalam setiap kasus, ketik teks tanpa tanda kutip.
  11. Dalam langkah "Langkah 5 menentukan Default tujuan" Setup Wizard kotak dialog, klik Next.
  12. Dalam kotak teks "Langkah 6 perubahan pengaturan File", di Wisaya penataan kotak dialog, pilih kotak centang PM Item di kotak sebelah Lvtest.exe (nama file eksekusi).
  13. Di kotak dialog "Program kelompok Menu Item", ketik "ListView tes App" dalam kotak teks deskripsi, dan "% s\lvtest.exe" di baris perintah kotak teks.

    Catatan Menghilangkan tanda kutip.

    Klik OK untuk menutup kotak Dialog Item Program kelompok Menu, klik Next dan kemudian klik selesai untuk menyelesaikan menjalankan Wisaya penataan.
  14. Di kotak dialog "Setup Wizard Disk statistik", klik selesai.
  15. Berkas distribusi yang akan di sebuah subdirektori direktori Anda tercantum dalam "Langkah 3 - membuat gambar Direktori Disk". Subdirektori adalah bernama disk144. Anda dapat menginstal distribusi Anda telah dibuat oleh menyalin isi direktori Disk1, Disk2, Disk3 dan Disk4 untuk disket dan kemudian jalankan Setup.exe program dari disket pertama. Anda juga dapat menghubungkan ke komputer yang berisi distribusi melalui jaringan untuk menjalankan setup. Instalasi harus pada komputer yang tidak sudah memiliki Visual FoxPro 6.0 atau Visual Studio 6.0 diinstal.
  16. Pada komputer instalasi, dari Windows Taskbar, pilih awal, Arahkan ke program, dan kemudian menunjuk Visual FoxPro aplikasi. Klik item program ListView tes App.
  17. Ketika aplikasi dimulai, klik tombol Tambahkan Listview. Kesalahan itu sama dengan salah satu yang tercantum dalam "Gejala" bagian terjadi.
  18. Pilih Batal, dan ulangi langkah 16. Saat ini, klik Tambahkan Listview Subkelas tombol, dan kesalahan tidak terjadi.
Contoh sebelumnya menggunakan subclass dari kelas OleControl yang disebut OC1. Subclass ini pemrograman dibuat dengan DEFINE kelas perintah terkandung dalam terakhir tiga baris kode dalam contoh program.

Bergantian, Anda dapat menciptakan subclass dari kelas OleControl dengan Desainer visual kelas. Berikut adalah langkah-langkah untuk menyelesaikan tugas ini:

  1. Ketik berikut dalam jendela perintah:
          CREATE CLASS
    								
  2. Di kotak dialog kelas baru, ketik nama kelas. Anda dapat menggunakan OC1 untuk menjadi konsisten dengan contoh sebelumnya.
  3. Pilih OleControl di didasarkan pada daftar kotak.
  4. Di toko di kotak teks, ketik nama file .vcx di mana untuk menyimpan kelas, atau pilih file .vcx yang ada Setelah menekan elips [...] tombol. Gunakan OCTest untuk keperluan contoh ini.
  5. Klik tombol OK untuk membuat kelas.
  6. Di kotak dialog Masukkan objek, pilih opsi membuat kontrol tombol. Dari daftar jenis objek, pilih kontrol ActiveX yang Anda inginkan untuk menggunakan. Agar konsisten dengan contoh sebelumnya, pilih "Microsoft ListView Control, versi 6.0" dan kemudian klik OK. Baru kelas menampilkan desainer kelas. Anda sekarang dapat menyimpan kelas.
  7. Kode berikut akan menambahkan sebuah instance objek pada saat run-time di contoh sebelumnya:
          Thisform.NewObject('LV1','OC1', 'OCTest.vcx')
    								
Anda perlu untuk memastikan bahwa berkas .vcx telah ditambahkan untuk proyek Anda sebelum membangun .exe Anda sehingga perintah NewObject bekerja dengan benar.

Berlaku bagi:
  • Microsoft Visual FoxPro 6.0 Professional Edition
  • Microsoft Visual FoxPro 7.0 Professional Edition
  • Microsoft Visual FoxPro 8.0 Professional Edition
  • Microsoft Visual FoxPro 9.0 Professional Edition
Kata kunci: 
kbbug kbcode kbpending kbmt KB192693 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:192693  (http://support.microsoft.com/kb/192693/en-us/ )