Заполнить список VB6 одной инструкцией


В VB6 я, кажется, не могу этого сделать:

myListBox.List = listContentStringArrray

VB жалуется на ошибку компиляции, говоря "аргумент не является необязательным", очевидно, потому что .List(index) требует, ну, индекса.

В VBA работает следующий код:

Private Sub CommandButton1_Click()
    Dim result() As String
    ReDim result(0)
    result(0) = "hello"
    ReDim Preserve result(1)
    result(1) = "world"

    ListBox1.List = result

End Sub

Глядя наобозреватель объектов я обнаружил, что список в VBA действительно MSForms.ListBox, а в VB6 это VB.ListBox.

Свойство VBA ListBoxList объявляется как Property List([pvargIndex], [pvargColumn]) , а в VB6 это Property List(Integer) As String, где мой проблема приходит от.

Есть ли способ "поменять местами" VB.ListBox для MSForms.ListBox в существующей базе кода, ничего не нарушая, или MSForms был разработан для использования только в VBA, поскольку библиотека "VB" не включена в VBA? Если я ссылаюсь на FM20.dll в моем проекте VB6, я могу видеть MSForms.ListBox в обозревателе объектов, но не в панели инструментов.
1 2

1 ответ:

В приложении VB6 можно использовать элементы управления Forms 2.0. Например, это один из способов получить элементы управления, поддерживающие Unicode (см. Как читать и отображать строку UNICODE в Visual Basic Form KB article).

Если я ссылаюсь на FM20.dll в моем проекте VB6, я могу видеть MSForms.Список в обозревателе объектов, но не в панели инструментов.

Чтобы добавить элементы управления в Панель инструментов, необходимо добавить Microsoft Forms 2.0 Object Library через пункт меню Project / Components (Ctrl+T ): Введите описание изображения здесь

Но, честно говоря, если все, что вам нужно, - это возможность "заполнить список VB6 одной инструкцией", это огромный перебор. Просто Закодируйте процедуру, которая делает это для обычного VB6 ListBox, и все готово.

Также имейте в виду, что формы 2.0 управления не являются перераспределяемыми. Из информация: использование и перераспределение FM20.DLL КБ:

Fm20.dll не распространяется. У вас должно быть приложение такое как Microsoft Office 97 на целевой системе, устанавливающей Fm20.dll как часть его установки... В любом случае, вы не можете распространять fm20 приводит к утечке.файл DLL как часть вашей установки, даже если вы покупаете Microsoft Office Продукт Developer Edition.

Как альтернатива вашим конечным пользователям установите Microsoft Office, вы можете их свободно скачать и установите Панель управления Microsoft ActiveX, которая также устанавливает Fm20.файл DLL.