Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
108
Добавлен:
13.05.2015
Размер:
5.96 Mб
Скачать

14.10. Динамическое создание объектов

В процессе выполнения приложения можно динамически создавать и удалять объекты. Создание объектов можно выполнить двумя спо­со­ба­ми: с использованием операторов Load, Unloadи методовAdd, Remove.

Рассмотрим на примерах создание объектов.

Примерсоздания массива из существующего объекта (кнопки) пер­вым способом. Разместим на форме кнопкуCommand1(0) иCommand2 и составим следующие процедуры.

(General)(Declarations) ‘раздел глобальных объявлений формы

DimnkAsInteger‘ номер кнопки в массиве кнопок

Private Sub Command1_Click(Index As Integer) ‘добавление кнопки

nk=nk+ 1 ‘номер добавляемой кнопки

LoadCommand1(nk) ‘загрузка (создание) новой кнопки

Command1(nk).Top=Command1(nk - 1).Top +Command1(nk - 1).Height ‘Top

Command1(nk).Caption=nk‘надпись для новой кнопки

Command1(nk).Visible=True‘вывод новой кнопки на экран

End Sub

Private Sub Command2_Click() ‘удаление кнопки

Ifnk>= 1ThenUnloadCommand1(nk) ‘удаление последней кнопки

nk=nk- 1 ‘номер последней кнопки

End Sub

Обращение к методу Addимеет вид:

Controls.Add(<идентификатор объекта>,<имя бъекта>

[,<контейнер>])

Controlsможет уточняться именем формы (Form1.Controls.Add).

Идентификатор объекта состоит из имени библиотеки, точки и име­ни класса объекта. Все это можно найти в окне Object Browser, вызы­вае­мом одноименной кнопкой (п. 4). Если указан контейнер, то объект созда­ет­ся в этом контейнере.

Примерсоздания кнопки под именемCmd1 в контейнереFrame1

Private Sub Form_Load() ‘загрузка формы

Controls.Add “Vb.CommandButton”, “cmd1”, Frame1 ‘создание кнопки

WithForm1!Cmd1 ‘начало области умалчиваемого значения имени объекта

.Width=2000: .Caption=”Кнопка”: .Visible=True‘свойства новой кнопки

EndWith‘конец области умалчиваемого значения имени объекта

End Sub

Примерсоздания кнопки под именемCmd1cсобственным событием

(General)(Declarations) ‘раздел глобальных объявлений формы

‘объявление объектной переменной (указателя на кнопку) ucmd1 для ‘создаваемой кнопки с возможностью обработки события (WithEvents)

Private WithEvents ucmd1 As CommandButton ‘указатель на кнопку

Private Sub Form_Load() ‘загрузка формы

‘создание новой кнопки и ссылка на нее помещается в указатель ucmd1

Set ucmd1=Controls.Add(“Vb.CommandButton”, “cmd1”)

Withucmd1 ‘начало области умалчиваемого значения ссылкиucmd1

.Width=2000: .Caption=”Кнопка”: .Visible=True‘свойства новой кнопки

EndWith‘конец области умалчиваемого значения ссылкиucmd1

EndSub

Private Sub ucmd1_Click() ‘обработка события Click для новой кнопки

MsgBox“Был щелчок по кнопке” ‘сообщение о работе данной процедуры

End Sub

Для удаления объекта, созданного методомAdd, используется методRemove(Form1.Controls.Remove“cmd1”).

Вопросы для самопроверки и контроля

Вопросы для самопроверки

  1. С какой целью создают группу проектов?

  2. Что представляют собой ActiveX-элементы?

  3. Что представляют собой DLL-библиотеки?

  4. Что представляют собой API-функции?

  5. Какие существуют технологии обмена данными между различными системами?

Контрольные вопросы

  1. Можно ли использовать API-функцию одновременно в нескольких приложениях?

  2. Можно ли размещать на форме несколько OLE-объектов?

  3. Можно ли менять свойства OLE-объектов?

  4. Можно ли использовать DLL-библиотеки, не принадлежащие Windows?