Страница: 1 |
Страница: 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
А вот это странно =(
Номер ответа: 8
Автор ответа:
Ephraim
ICQ: 4521451486
Вопросов: 0
Ответов: 1
Web-сайт:
Профиль | | #8
Добавлено: 20.09.11 14:07
Да страновато