- •Норинский л. Ю. Программирование на Visual Basic и Visual Basic for Applications (Конспект лекций)
- •Введение
- •1. Основы языка программирования visual Basic
- •1.1. Общие сведения о Visual Basic
- •1.2. Среда vb, инструментальные средства. Разработка проектов
- •1.3. Типы данных. Константы и переменные
- •1.4. Операции
- •1.5. Ввод и вывод данных
- •1.6. Управляющие операторы
- •1.7. Массивы
- •1.8. Примеры программ работы с числами
- •1.9. Обработка строк. Примеры
- •1.10. Математические вычисления. Другие операторы и функции
- •1.11. Процедуры и функции. Примеры
- •1.12. Работа с файлами
- •1.13. Обработка ошибок
- •2. Разработка интерфейса
- •2.1. Элементы управления
- •2.1.1. Общие сведения
- •2.1.2. Встроенные эу
- •2.1.3. Внедренные и связанные эу
- •2.2. Разработка форм
- •2.3. Создание и использование меню
- •2.4. Окна диалога
- •3. Классовое общество
- •3.1. Классы-формы
- •3.2. Модули классов и стандартные модули
- •3.3. Управление событиями объекта
- •3.4. Семейства и массивы объектов
- •4. Vba. Макропрограммирование
- •4.1. Общие сведения о vba
- •4.2. Работа в Excel с помощью vba
- •4.2.1. Объекты Application и семейство Workbooks
- •4.2.2. Объекты Worksheet и Worksheets
- •4.2.3. Объект Range
- •4.3. Макропрограммирование
- •4.4. Создание макросов в Word
- •4.5. Создание макросов в Excel
- •4.6. Пример макроса
- •Приложения п1. Некоторые виды ошибок
- •П2. Свойства элементов управления
- •П3. Методы работы с элементами управления
- •П4. Примеры проектов vb Проект 1.
- •Проект 2.
- •Проект 3.
- •Проект 4.
- •Проект 5.
- •Проект 6.
- •Проект 8.
- •Проект 11.
- •П5. Пример ПроектА vba.
- •Литература
3.2. Модули классов и стандартные модули
Классы отличаются от стандартных модулей (СМ) способом хранения их данных. Никогда не существует более одной копии данных СМ. Данные модуля класса (МК) существуют отдельно для каждого экземпляра (объекта) класса. Данные СМ имеют область видимости уровня программы (существуют весь период работы программы). Данные МК существуют только во время существования объекта. Переменные, объявленные Public в СМ, видимы отовсюду в проекте, а в МК доступны только если имеется объектная переменная, содержащая ссылку на конкретный экземпляр класса.
Все это касается и процедур Public в СМ и МК.
Истинные статические данные класса в модуле класса VB реализовать нельзя. Однако, если потребуется, чтобы некоторые элементы данных совместно использовались всеми объектами, созданными из модуля класса, то это можно смоделировать, используя процедуры Poperty для получения значения члена набора данных Public в стандартном модуле. Использовать слово Static в модуле класса нельзя.
Свойства и методы класса формируют его умолчительный интерфейс.
Для определения свойства класса можно добавить к модулю класса переменные Public. Также можно создать переменные Private внутри модуля класса.
Процедуры свойств Property используются, когда: 1) свойство доступно только для чтения или, будучи однажды установленным, не должно меняться, 2) свойство имеет жесткий набор или интервал значений, которые надо проверять, 3) установка свойства должно обусловить заметное изменение в состоянии объекта, 4) установка свойства обусловливает изменения других внутренних переменных или значений других свойств.
Типы процедур-свойств:
Property Get - возвращает значение свойства
Property Let - устанавливает значение свойства
Property Set - устанавливает значение объектного свойства (свойства, содержащего ссылку на объект).
Примеры:
присваивание значения свойству
Public Property Let Property_Name (ByVal vNewValue As Variant)
mVariable = vNewValue
End Property
считывание значения свойства (аналогично использованию обычной функции)
Public Property Get Property_Name () As Variant
Property_Name = mVariable
End Property
передача ссылки на объект (но не значения свойства как у Let)
Public Property Set Property_Name (ByVal objNewValue As Object)
Set Property_Name = objNewValue
End Property
Другая возможность определения свойств в модуле класса состоит в том, что в секции объявлений класса определяется общая переменная Public Property_Name As Variant, которая может рассматриваться как свойство класса. Простые Public-переменные не могут быть объявлены в контейнере класса (Form и Class), их можно объявить только в модуле.
Методы класса - это public пользовательские процедуры Sub и Function. Все подпрограммы по умолчанию public. При этом имя процедуры или имя функции является именем метода.
3.3. Управление событиями объекта
Событие объявляется в разделе Declaration модуля класса ключевым словом Event. Событие может иметь параметры ByVal и ByRef:
Option Explicit
Public Event PercentDone(ByVai Percent As Single, ByRef Cancel As Boolen).
Событие PercentDone устанавливается процедурой (методом) LongTask класса Widget, который требует два параметра: отрезок времени работы задачи и минимальный интервал времени, через который метод должен инициировать событие PercentDone.
Когда объект получает событие PercentDone, параметр Percent содержит процент завершения задачи. Параметр ByRef Cancel можно установить в True, чтобы отменить метод, который устанавливал событие. События не имеют возвращаемых значений, не могут иметь именованных и необязательных параметров.
Для генерации события внутри класса используется оператор RaiseEvent, которму в качестве аргумента передается имя события: RaiseEvent Event_Name.
Для управления событиями можно объявить переменную класса этого объекта в разделе Declaration модуля формы, используя ключевое слово WithEvents
Private WithEvents mW As Widget
Для подключения переменной WithEvents к объекту надо ей присвоить ссылку на объект Set mW = New Widget
Для завершения управления событиями нужно установить mW в Nothing
Set mW = Nothing
Для того, чтобы переменная mW представляла свойство Form1, ее надо объявить не как private, а как public.
Кроме событий, определяемых пользователем, классы всегда содержат события Initialize (первое использование объекта) и Terminate (уничтожение всех ссылок на объект), которые аналогичны событиям формы Load и Unload.