Люди часто создают специализированные и / или строго типизированные классы коллекций в VB6. Хотя они не всегда делают это правильно, и иногда создают «частичные» реализации коллекции, у которых нет метода Item () (или они не могут пометить его как член класса по умолчанию). Они могут даже иметь похожий метод или свойство, но назвать его чем-то совершенно другим.
Реже вернуть необработанный объект Collection, но это можно сделать, и если это так, у вас не должно быть проблем, указанных в VBScript.
Я только что создал проект DLL с именем "HallLib" с тремя классами: Hallway, DoorKnobs и DoorKnob. Класс DoorKnobs - это коллекция объектов DoorKnob. Класс Hallway имеет объект DoorKnobs, который он инициализирует случайным набором объектов DoorKnob со случайно установленными свойствами. Hallway.DoorKnobs () возвращает объект коллекции DoorKnobs в качестве результата.
В этом скрипте работает нормально:
Option Explicit
Dim Hallway, DoorKnobs, DoorKnob
Set Hallway = CreateObject("HallLib.Hallway")
Set DoorKnobs = Hallway.DoorKnobs()
MsgBox "DoorKnobs.Count = " & CStr(DoorKnobs.Count)
For Each DoorKnob In DoorKnobs
MsgBox "DoorKnob.Material = " & CStr(DoorKnob.Material) & vbNewLine _
& "DoorKnob.Color = " & CStr(DoorKnob.Color)
Next
Обновление:
Этот скрипт выдает идентичные результаты:
Option Explicit
Dim Hallway, DoorKnobs, KnobIndex
Set Hallway = CreateObject("HallLib.Hallway")
Set DoorKnobs = Hallway.DoorKnobs()
MsgBox "DoorKnobs.Count = " & CStr(DoorKnobs.Count)
For KnobIndex = 1 To DoorKnobs.Count
With DoorKnobs.Item(KnobIndex)
MsgBox "DoorKnob.Material = " & CStr(.Material) & vbNewLine _
& "DoorKnob.Color = " & CStr(.Color)
End With
Next
Как и:
Option Explicit
Dim Hallway, DoorKnobs, KnobIndex
Set Hallway = CreateObject("HallLib.Hallway")
Set DoorKnobs = Hallway.DoorKnobs()
MsgBox "DoorKnobs.Count = " & CStr(DoorKnobs.Count)
For KnobIndex = 1 To DoorKnobs.Count
With DoorKnobs(KnobIndex)
MsgBox "DoorKnob.Material = " & CStr(.Material) & vbNewLine _
& "DoorKnob.Color = " & CStr(.Color)
End With
Next
Так что я подозреваю, что вам нужно использовать какой-нибудь браузер библиотеки типов, например OLEView, чтобы посмотреть на ваш OCX, чтобы увидеть, какие классы и члены он фактически предоставляет.