Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




End Sub

End Sub

End Sub

 

Вторым способом объект создается с помощью строки Dim и оператора присваивания с ключевым словом Set.

В операторе присваивания указывается ключевое слово New или функция CreateObject с именем класса.

Например,

Dim mObject As Class1

Set mObject= New Class1

'или Set mObject= CreateObject (''Class1'')

………………

Объекты класса, хотя и обладают в семи свойствами, методами и событиями, которые определены в исходном классе, но значение свойств у каждого объекта класса может быть своим, и функционировать они также могут независимо друг от друга.

Если в программе используются события объекта, а не только методы и свойства, как в представленном выше фрагменте кода, то объект следует создавать с использованием ключевого слова WithEvents

Его особенностью является то, что оно не может использоваться совместно с ключевым словом New. Однако именно последнее слово обеспечивает доступ к объекту и событиям объекта из окна кода. Поэтому следует писать:

Dim WithEvents mObject As Class1

Private Sub Command1_Click()

SetmObject= New Class1

'или Set mObject= CreateObject (''Class1'')

mObject.свойство=значение

mObject. Метод

…………

SetmObject=Nothing'Удаление ссылки на объект

Private Sub mObject_ИмяСобытия()

<Код, реализующий событие объекта mObject>


Скорость выполнения приложения во многом зависит от того, каким образом VB осуществляет связывание объектной переменной с объектом. Существует раннее и позднее связывание.

Раннее связывание осуществляется при объявлении объектной переменной с явным указыванием имени класса. Например,

 

Dim Obj1 As New Form1

Dim Obj2 As New Class1

Dim ObjWord As New Word.Application

Dim ObjExcel As New Excel.Application

Dim ObjAccess As New Access.Application

 

Раннее связывание происходит на этапе компиляции и выполня­ется быстрее. При раннем связывании перед написанием кода необхо­димо загрузить в память библиотеку с классом, используя команду Project\References, окно References и список Available References. После чего следует приступать к созданию объектной переменной (уже определенного класса) с ключевым словом New.

Если же при объявлении объектной переменной используется универсальный тип Object, Variant, Control, то VB осуществляет позднее связывание переменной с объектом. Например,

Dim mObject As Object, Obj As Control

For Each Obj In Me.Controls

If TypeName(Obj) = "TextBox" Then Obj.BackColor = 0

Next

Set mObject=CreateObject(“Word.Application”) 'Установить связь

………………………………………………………

Set mObject=Nothing 'Разорвать связь объекта с приложением Word

Set mObject=CreateObject(“Excel.Application”) 'Установить связь

………………………………………………………

Set mObject=Nothing 'Разорвать связь объекта с приложением Excel

 

Позднее связывание оправдано тогда, когда невозможно заранее определить, какие типы объектов будут использоваться при выпол­нении программы, что требует дополнительных затрат времени на анализ допустимых объектов. При первом обращении к свойствам и методам объекта происходит событие Initialize – создание объекта, а в строке Set mObject=Nothing наступает событие Terminate – уничто­жение объекта и освобождение памяти.

К недостаткам раннего связывания можно отнести привязан­ность создаваемого Вами приложения к конкретной версии библио­теки объектов. Выход в свет новой версии продукта, объектную модель которого Вы используете посредством раннего связывания, приведет к необходимости обновления Вашего приложения. К досто­инству раннего связывания можно отнести способность отображать список свойств и методов объекта после ввода точки при написании кода. Обычно раннее связывание используется на стадии отладки приложения. Завершающая стадия разработки приложения осуществ­ляется обычно на основе позднего связывания, не зависящего от новых версий используемых в проекте объектных моделей.


7. Способы объявления событий классов. Примеры.

Каждый класс кроме свойств и методов имеет набор собственных событий. События – это реакция объекта на действие системы, поль­зователя и других приложений. События, определяемые пользовате­лем, могут объявляться как внутри модуля класса (в области GD окна Code класса) с помощью команды File\New\Event или кнопки окна Class Builder, так и внутри модуля формы одним и тем же оператором Event. Параметры, передаваемые процедуре события, должны быть указаны в той же строке объявления события. Например,

Public Event WWW()

Public Event XXX(ByVal A As Long, ByVal B As Long)

Для генерации (выполнения) события предназначен оператор RaiseEvent, которому в качестве параметра передается имя события. Например,

Public Sub Text1_Change()

RaiseEvent WWW 'Реализация события WWW

End Sub

Public Sub Command1_Click()

RaiseEvent XXX(500,300) 'Реализация события XXX

End Sub

Контейнер (модуль класса или формы), в котором используется объект, должен содержать процедуры-события.

Пример 59. Объявить событие в модуле класса, а запрограммировать его в модуле формы.

Пусть событие (назовем его MTS) имеет два параметра. Первый – числовой, второй – логический. Событие будет реализовываться в методе Long1. Выполните следующие действия.

· Создайте новый проект с шаблоном Standard EXE.

· С помощью команды Project\Add Class Module добавьте модуль класса с именем Class1 в проект, используя шаблон Class Module на закладке New.

· Поместите в него следующий код.

Public Event MTS(ByVal Percent As Single, ByRef Cancel As Boolean)

Public Sub Long1(ByVal f As Single, c As Boolean)

RaiseEvent MTS(f, c) 'Вызов события MTS с двумя параметрами

End Sub

· Теперь добавьте в область GD окна Code модуля формы следующий код:

Private WithEvents mW As Class1, nCancel As Boolean, r As Single

'Ключевое слово WithEvents означает, что объект mW содержит события

Private Sub Command1_Click()

nCancel = False

r = Rnd

Set mW = New Class1 'Создание нового объекта на основе класса

Call mW.Long1(r, nCancel) 'Обращение к методу Long1

Text2 = nCancel 'Выводим значение, возвращаемое из события

Set mW = Nothing

End Sub

Private Sub Form_Load()

Text1 = Format(r, "0 %")

Text2 = ""

End Sub

Private Sub mW_MTS(ByVal Percent As Single, _

Cancel As Boolean)

m% = CInt(100 * Percent)

Text1 = m & "%"

If m >= 50 Then Cancel = True

End Sub


8. Создание элемента управления ActiveX в Visual Basic. Отображаемые и пользовательские свойств и методы ActiveX-компонент. Передача события приложению–контейнеру. Регистрация компонент.




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 558; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.