КАТЕГОРИИ: Архитектура-(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; Просмотров: 584; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |