Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: создать динамический control VB7.0 Добавлено: 11.08.11 19:05  

Автор вопроса:  Сеня
Добрый день.

Требуется создать динамический listbox при вызове процедуры, и после её выполнения - удалить. Как это

сделать?

Примечание.
На компе установлен VB7.0, входящий в состав MS Office 10. И я запускаю VB через MS Access (на форме

которого и требуется создавать listbox). Отдельного VB на компе нет.

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 Dan



ICQ: 609276007 

Вопросов: 24
Ответов: 195
 Профиль | | #1 Добавлено: 11.08.11 19:26
Когда же люди научатся пользоваться Google?

Ответить

Номер ответа: 2
Автор ответа:
 Сеня



Вопросов: 3
Ответов: 8
 Профиль | | #2 Добавлено: 11.08.11 19:44
Я честно гуглил, и нашел 2 способа решения вопроса, но ни один не проканал.

Ответить

Номер ответа: 3
Автор ответа:
 Dan



ICQ: 609276007 

Вопросов: 24
Ответов: 195
 Профиль | | #3 Добавлено: 11.08.11 19:55
Дай ссылки на способы. VBA очень похож на VB. А тема создания list box на форме в процессе выполнения программы в VB, поднималась неоднократно. Если найду пример, то отправлю.

Ответить

Номер ответа: 4
Автор ответа:
 Dan



ICQ: 609276007 

Вопросов: 24
Ответов: 195
 Профиль | | #4 Добавлено: 11.08.11 19:58
Забыл написать:

Твой вопрос сложен,только тем, что VB это не Паскаль и код в процедуре не обязательно будет выполняться последовательно. Если, ошибаюсь, то исправьте =)

Ответить

Номер ответа: 5
Автор ответа:
 Сеня



Вопросов: 3
Ответов: 8
 Профиль | | #5 Добавлено: 11.08.11 21:43
Эта статья предлагает оба варианта решения:

http://forum.vingrad.ru/faq/topic-158085.html

Далее copy+paste из вышеуказанного источника

=== Вариант №1 ===

Создаем простой exe проект и натягиваем на него кнопку, ставим Index=0 и пишем следующий код:

Dim mCount As Integer
Private Sub Command1_Click(Index As Integer)
mCount = mCount + 1
Load Command1(Count) 'Добавляем контрол с индексом на единицу большим, чем последний в массиве
Command1(mCount).Height = Command1(0).Height 'Устанавливаем параметры
Command1(mCount).Width = Command1(0).Width
Command1(mCount).Visible = True 'Делаем видимым
Command1(mCount).Left = Command1(mCount - 1).Left + Command1(0).Width 'Размещаем на форме
Command1(mCount).Top = Command1(0).Top
End Sub
Private Sub Form_Load()
mCount = 0 'Декларируем значение равное индексу первой в массиве кнопки
End Sub

В моем случае возникает ошибка в команде Load (Type Mismatch)

Ответить

Номер ответа: 6
Автор ответа:
 Сеня



Вопросов: 3
Ответов: 8
 Профиль | | #6 Добавлено: 11.08.11 21:45
=== Вариант №2 ===

Есть и второй способ добавления контролов на форму. Он заключается в применении метода Add, который имеется в семействе Controls.
'Сообщаем системе что хотим использовать обработчик событий с кнопкой
Private WithEvents NewButton As CommandButton
Private Sub NewButton_Click() 'Код обработки события нажатия на кнопку
MsgBox "Вы нажали на новую кнопку"
End Sub
Private Sub Form_Click()
Set NewButton = Controls.Add("VB.CommandButton", "NewButton";) 'при клике по форме появляется новая кнопка
NewButton.Visible = True
NewButton.Height = 1000
NewButton.Width = 1000
NewButton.Top = 0
NewButton.Left = 0
NewButton.Caption = "Нажми на меня!!!!"
End Sub

Проблема в том, что у меня тупо нет метода Add в коллекции Controls на форме в MS Access 10.

***

Видимо эти способы подходят для VB, но не для VBA.

Ответить

Номер ответа: 7
Автор ответа:
 Dan



ICQ: 609276007 

Вопросов: 24
Ответов: 195
 Профиль | | #7 Добавлено: 11.08.11 22:04
Проблема в том, что у меня тупо нет метода Add в коллекции Controls на форме в MS Access 10.

А вот это странно =(

Ответить

Номер ответа: 8
Автор ответа:
 Ephraim



ICQ: 4521451486 

Вопросов: 0
Ответов: 1
 Web-сайт: http://www.kabardino-balkaria.info
 Профиль | | #8
Добавлено: 20.09.11 14:07
Да страновато

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам