powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Динамический ComboBox
8 сообщений из 8, страница 1 из 1
Динамический ComboBox
    #35916268
alexandr_vo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Помогите решить следующую проблему:
Есть динамически созданная форма, на ней так же созданный ComboBox.
После заполнения данными ComboBox-а в его списке ничего не отображается, хотя программно достучаться до значений можно.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    Dim TempForm As Object    'VBComponent
    Dim NewCombo As Msforms.ComboBox

    Set TempForm = ThisWorkbook.VBProject. _
                   VBComponents.Add( 3 )    'vbext_ct_MSForm

    Set NewCombo = TempForm.Designer.Controls _
                        .Add("forms.ComboBox.1")

    vaList = PrinterFind
    
    ' заполнение
    For i =  0  To UBound(vaList)
        NewCombo.AddItem vaList(i)
    Next
    
    ' Проверка наличия списка
    For i =  0  To NewCombo.ListCount -  1 
       MsgBox NewCombo.List(i)
    Next

В результате MsgBox отображает элементы (названия принтеров), а визуально ComboBox пустой.
Спасибо.
...
Рейтинг: 0 / 0
Динамический ComboBox
    #35916752
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так надо добавлять на форму, а не на дизайн формы

замените
Код: plaintext
Set NewCombo = TempForm.Designer.Controls.Add("forms.ComboBox.1")
на
Код: plaintext
Set NewCombo = TempForm.Controls.Add("forms.ComboBox.1", Combobox1)

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Динамический ComboBox
    #35916887
alexandr_vo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKotтак надо добавлять на форму, а не на дизайн формы

Так как форма создана следующим образом:
Код: plaintext
1.
2.
3.
    
Set TempForm = ThisWorkbook.VBProject. _
                   VBComponents.Add( 3 )    'vbext_ct_MSForm
то добаление идет именно на дизайн. TempForm не поддерживает напрямую метод control

Как я уже писал, форма и сам элемент создаются, ComboBox заполняется данными, что видно, если выполнить код
Код: plaintext
1.
2.
3.
4.
    ' Проверка наличия списка
    For i =  0  To NewCombo.ListCount -  1 
       MsgBox NewCombo.List(i)
    Next
Но на экране комбо пустой, нет ни одного элемента в списке.
...
Рейтинг: 0 / 0
Динамический ComboBox
    #35917111
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexandr_vo,
Данные в combo, либо загружаются при вызове формы (Private Sub UserForm_Initialize())
либо в RowSource указывается источник


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    Dim TempForm As Object 'VBComponent
    Dim NewCombo As Msforms.ComboBox
    Dim PrinterFind( 3 )
    
    Set TempForm = ThisWorkbook.VBProject. _
                   VBComponents.Add( 3 )    'vbext_ct_MSForm

    Set NewCombo = TempForm.Designer.Controls _
                        .Add("forms.ComboBox.1")

    PrinterFind( 0 ) = "szdgf"
    PrinterFind( 1 ) = "asfd"
    PrinterFind( 2 ) = "agt"
    vaList = PrinterFind
    For i =  0  To UBound(vaList)
        ThisWorkbook.Worksheets( 1 ).Columns( 1 ).Cells(i +  1 ) = vaList(i)
    Next
    With ThisWorkbook.Worksheets( 1 )
'        Debug.Print .Name & "!" & .Range(.Cells(1), .Columns(1).Cells(i)).Address(False, False)
        NewCombo.RowSource = .Name & "!" & .Range(.Cells( 1 ), .Columns( 1 ).Cells(i)).Address(False, False)
    End With
...
Рейтинг: 0 / 0
Динамический ComboBox
    #35918244
alexandr_vo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodor,

Спасибо, как-то уж сильно наворочено, но раоботает с некоторыми поправками.
Может кто еще что-то подскажет? Как обойтись без книги?
...
Рейтинг: 0 / 0
Динамический ComboBox
    #35918444
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexandr_vo,

А зачем вы создаете форму и комбобокс динамически? Чем не устраивает создание их в режиме дизайна?
...
Рейтинг: 0 / 0
Динамический ComboBox
    #35918504
alexandr_vo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladConn,

Есть задача: Печать

В XML файле есть описание, что чего и сколько печатать, как печатать и т.п.
Согласно описания создаю форму и элементы управления

А так же вычисляю установленные на клиенте принтеры и предлагаю на форме выбор.

Вот такая задача.

Решил вышепредложенным способом. Сделал, чтобы все происходило незаметно для клиента.
Работает, но жаль, что не вышло проще.
...
Рейтинг: 0 / 0
Динамический ComboBox
    #35921631
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так создайте пустую форму
и на неё бросайте элементы управления по необходимости
если же вид формы постоянен с небольшими изменнеиями, то можно создать форму со всеми элементами и просто скрывать или отображать их


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Динамический ComboBox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]