Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Использование объектных переменных

Возможно, вы помните из главы, посвященной типам данных, что в дополнение к типам Byte, Integer, Long, Single, Double и String Visual Basic также имеет тип Object. Переменные или выражения типа Object ссылаются на VB-объект или на объект, принадлежащий host-приложению, такой как Excel-объекты Workbook, Worksheet и Range или Word-объекты Document, Range, Paragraph. Таким образом, переменные могут не только сохранять значения, они могут ссылаться на объекты. Использование переменных в качестве ссылок на объекты во многом похоже на использование их как обычных хранилищ значений.

Перед использованием объектной переменной ее необходимо объявить следующим образом:

Синтаксис

Dim | ReDim | Static | Private | Public variable As Object |class

Здесь variable — объектная переменная (имя), class — класс объекта.

Объявление объектной переменной при помощи As Object создает переменную, содержащую ссылку на объект любого типа. Связывание этой ссылки с конкретным объектом происходит при выполнении программы (позднее связывание). Например, следующие три объявления описывают объектные переменные ObjVar (любой объект), ConVar (любой элемент управления), CheVar (любой флажок):

 

Dim ObjVar As Object

Dim ConVar As Control

Dim CheVar As CheckBox

Visual Basic имеет IsObject для определения того, образует ли переменная или выражение допустимую объектную ссылку. Функция IsObject имеет следующий синтаксис:

Синтаксис

IsObject(Object)

Object представляет переменную или выражение, которое необходимо протестировать; IsObject возвращает значение True, если Object является допустимой объектной ссылкой, и False — иначе.

Объект в выражениях

<$I[] объектное выражение (object expression)> Объектное выражение (object expression)> — это любое VB-выражение, которое определяет отдельный объект. Все объектные выражения должны вычисляться до единственной объектной ссылки (ссылки на объект); объектные выражения используются с единственной целью — создание ссылок на специфические объекты в ваших VB-программах. Объектное выражение может состоять из объектных переменных, объектных ссылок или объектного метода или свойства, которое возвращает объект.

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

Перед использованием объектной переменной для ссылки на объект необходимо задать эту переменную, чтобы она содержала ссылку на нужный объект. Присваивание объектной ссылки объектной переменной отличается от присваиваний других переменных; чтобы присвоить объектную ссылку объектной переменной, используйте оператор Set со следующим синтаксисом:

Синтаксис

Set variable = object

Здесь variable — объектная переменная или переменная типа Variant, object — любая допустимая объектная переменная или объектное выражение; это может быть другая объектная переменная или объектное выражение. Если variable — переменная, объявленная с каким-либо определенным типом, этот тип должен быть совместим с объектом, на который ссылается object.

Например, следующие операторы описывают (первые три) объектные переменные и назначают переменной ObjVar ссылку на флажок Check1, а переменной ConVar — на кнопку Command1:

Dim ObjVar As Object

Dim ConVar As Control

Dim CheVar As CheckBox

Set ObjVar = Check1

Set ConVar = Command1

Написание следующего оператора вызовет ошибку Type mismatch (несовпадение типа):

Set CheVar = Command1

поскольку переменная (в соответствии с ее объявлением) может ссылаться только на объекты класса CheckBox.

После того как мы получили ссылку на некоторый объект, можно работать с этой ссылкой (объектной переменной), как с обычным объектом: использовать его свойства и методы. Например, следующие операторы объявляют объектные переменные ConVar, CheVar и LisVar (строки 1–3), связывают эти переменные с объектами формы (строки 5–7). В строке 9 изменяется надпись на кнопке с именем Command1, в строке 10 блокируется флажок Check1 присваиванием его свойству Enabled значения False, и, наконец, в строке 11 вызовом метода Clear удаляются все элементы списка List1.

1 Dim ConVar As Control

2 Dim CheVar As CheckBox

3 Dim LisVar As ListBox

5 Set CheVar = Check1

6 Set ConVar = Command1

7 Set LisVar = List1

9 ConVar.Caption = "Выход" 'заголовок кнопки - Выход

10 CheVar.Enabled = False 'блокировать флажок

11 LisVar.Clear 'очистить список

Следующие операторы добавляют к списку List1 (объектная ссылка — LisVar) два элемента (“Первый элемент списка” и “Второй элемент списка”), а затем отображают второй элемент списка в окне Immediate.

LisVar.AddItem "Первый элемент списка"

LisVar.AddItem "Второй элемент списка"

 

Debug.Print LisVar.List(1)

Объектные ссылки могут ссылаться на разные или на одни и те же объекты. Чтобы узнать, ссылаются ли объектные ссылки на один и тот же объект, можно использовать операцию Is (см. главу 6). Видимо, теперь понятно, почему при выполнении следующего кода

Private Sub Form_Load()

Dim ConVar As Control

Dim CheVar As CheckBox

Dim ObjVar As Object

 

Set CheVar = Check1

Set ConVar = Command1

Set ObjVar = Check1

 

MsgBox (CheVar Is ObjVar)

MsgBox (CheVar Is ConVar)

 

End Sub

первый оператор MsgBox выдаст в окне сообщения значение True, а второй — False.




Дата добавления: 2015-09-12; просмотров: 15 | Поможем написать вашу работу | Нарушение авторских прав

Объекты | Заполнение формы Word-документа из VB-кода | Коллекция Printers | Создание пользовательских классов | Создание свойств класса |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав