Создание объектов в runtime. CreateObject

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Создание объектов в runtime. CreateObject

Сообщение zHackLeX » 26.10.2003 (Вс) 15:19

Народ, а можно с помощью энтой функции создать, напр, CommandButton? A вообще без оператора Load можно в runtime создать элемент управления? А то у меня тут ОСХ клёвый, но без лицензии в designtime он работать не хотит. :twisted: Есть идеи?
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

Ducis
Бывалый
Бывалый
 
Сообщения: 232
Зарегистрирован: 24.04.2002 (Ср) 15:36

Сообщение Ducis » 28.10.2003 (Вт) 13:10

Метод создания эл-тов упр. "на лету" заключается в применении метода Add, который имеется в семействе Controls. Не обязательно создавать первые элементы в массивах. Все уже будет создаваться непосредственно при работе пользователя с программой. Вы можете полностью задать изменение интерфейса программы только лишь добавив соответствующий код.
Выглядит использование этого метода так: Object.Add (ProgID,Name,Container)
Object - Объект в который вы добавляете контролы (хотя обычно говорят для которого добавляются объекты).
ProgID - описатель нового элемента управления
Name - имя нового элемента
Container - ссылка на контейнер для нового элемента, этот параметр можно пропускать.
Использование этого метода хорошо тем, что для каждого объекта вы можете задавать и код обработки событий, т.е эти контролы могут быть отдельными, а не элементами массива, что значительно удобнее.
Пример:
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
Удалить элемент управления легко:
Form1.Controls.Remove "NewButton"
Таким образом вы можете добавлять любой элемент управления, назначать ему обработку событий. В общем все хорошо.
Список интендификаторов стандартных элементов управления:
VB.ComandButton - Кнопка
VB.ComboBox - Раскрывающийся список
VB.DirListBox - Список директорий
VB.DriveListBox - Список устройств
VB.FileListBox - Список файлов
VB.Form - Форма
VB.Frame - Рамка
VB.HScrollBar - Горизонтальная полоса прокрутки
VB.Image - Изображение
VB.Label - Надпись
VB.Line -Линия
VB.ListBox - Список
VB.MDIForm - MDI форма
VB.Menu - Меню
VB.OLE - OLE Компонент
VB.OptionButton - Выбор
VB.PictureBox - Картинка
VB.Shape - Окружность
VB.TextBox - Текстовое окно
VB.UserControl - Пользовательский контрол
VB.UserDocument - Пользовательский документ
VB.VScrollBar - Вертикальная полоса прокрутки
VB.Timer - Таймер
И это еще не все, но больше не помню. Да вы и сами можете в Object Browser посмотреть в модуле VB. Да и еще, если вы добавляете ActiveX контрол, который требует лицензионных ключей, то не забудьте добавить и ключ.
Динамическое добавление контролов - мощный способ изменения ваших приложений в процессе работы, наиболее удобен метод Add, а метод load применяется обычно при добавлении статических объектов, когда и обрабатывать ничего не надо.
Понимаешь? (с)Б.Ельцин.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 14

    TopList