Проблема в динамической загрузке ActiveX в VB6.0 - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть следующий метод, который я использую для динамической загрузки элемента управления ActiveX,

Dim ctl As Control
Set ctl = Form1.Controls.Add("prog.id", "myctl")
ctl.Visible = True

Использование этого элемента управления кода успешно отображается в форме, но когда я пытаюсь получить доступ к методам / свойствам элемента управления ctl.mymethod(), выдается ошибка «Объект не поддерживает этот метод или свойство».

Во-вторых, когда я использую этот подход

Dim ctl As Object
Set ctl = CreateObject("prog.id")
Ctl.mymethod()

Здесь метод успешно вызван из элемента управления, но я не могу отобразить этот объект в форме.

Пожалуйста, сообщите мне любое решение по этому вопросу.

Edit:

Используя следующий подход, выдает ошибку при вызове методов: «Объект не поддерживает ........»

Dim ctl As Object
Set ctl = Controls.Add("prog.id", "myctl")
ctl.Visible = True

Ответы [ 2 ]

3 голосов
/ 02 апреля 2012

Не объявляйте ссылку как Control.Это только позволит вам получить доступ к Control членам интерфейса.Попробуйте вместо этого объявить ctl как Object, и тогда он будет полностью опоздал.

Dim ctl As Object
Set ctl = Controls.Add("COMCTL.ListViewCtrl", "myctl")
ctl.Visible = True
ctl.View = 2
ctl.ListItems.Add , , "123"
1 голос
/ 02 апреля 2012

Если у вас есть библиотека типов (.tlb) для элемента управления, добавьте ссылку на нее и попробуйте это

Dim ctl As prog.id
Set ctl = Controls.Add("prog.id", "myctl").Object
ctl.mymethod

Обратите внимание на использование свойства .Object.

...