- •Норинский л. Ю. Программирование на 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.
- •Литература
2.4. Окна диалога
Окна диалога (ОД) могут быть режимными (модальными), либо не режимными. Режимное ОД должно быть закрыто (скрыто или выгружено) прежде, чем будет можно продолжать работу в приложении. Не режимное ОД позволяет перемещать фокус от ОД к другой форме, не закрывая это ОД.
Для открытия режимного ОД используется метод Show с параметром стиля vbModal:: (константа 1) frmAbout.Show vbModal. Для не режимного ОД этот же метод используется без параметра стиля: frmAbout.Show.
Стандартные ОД:
1) InputBox – вывод на экран окна приглашения к вводу информации и возвращение ввода пользователя; при этом можно изменять только текст в титульной строке, приглашение к вводу, умолчительное значение, позицию диалога и включать или нет кнопку Help
pwd=InputBox("Введите пароль:", "Регистрация",,,,"Help.hlp",10)
где "Регистрация" – титульная строка (название ОД); "Введите пароль" – приглашение.
2) MsgBox – отрывает окно сообщения и возвращает значение, указывающее командную кнопку, которую щелкнул пользователь; используется для получения от пользователя ответа ДА/НЕТ и для вывода кратких сообщений (ошибки, предупреждения)
MsgBox "Это сообщение VB", vbExclamation, "Приложение VB"
где "Приложение VB" – название ОД; "Это сообщение VB"– выводимый в окне текст.
Для создания пользовательского ОД надо открыть новую форму или настроить существующее ОД.
Для создания нового ОД надо: 1) выполнить Project / Add Form и через вкладку New добавить к проекту новую форму; 2) настроить вид и компоновку формы; ввести ЭУ; 3) добавить код к процедурам событий формы и ЭУ.
Для настройки существующего ОД надо: 1) выполнить Project / Add Form; и, открыв вкладку Existing, добавить существующую форму к проекту; 2) выполнить команду File | Save As (новое имя файла); 3) настроить вид и компоновку формы; 4) в окне редактора кода настроить процедуры обработки событий формы и элементов управления.
Обычно используются две командные кнопки ОК и ОТМЕНА, при этом в свойстве Caption для этих кнопок устанавливаются значения: Default – True и Cancel – True.
При открытии формы фокус получает ЭУ с самым низким значением свойства Tabldex. Нажатие Enter вызывает событие Click либо для умолчительной кнопки, либо для кнопки, на которой установлен фокус. Установить на кнопку фокус при открытии формы можно либо присвоением свойству Tabldex значения 0, либо свойству TabStop значения True.
Для деактивирования ЭУ надо установить его свойство в False. Открытие и удаление ОД выполняется также как и для формы. Метод Show загружает форму и устанавливает свойство Visible в True. Для выхода из ОД используется кнопка ОК, Cansel, оператор Unload (удаляет из памяти ОД и все его ЭУ) или метод Hide (удаляет ОД только с экрана).
3. Классовое общество
3.1. Классы-формы
Класс - это шаблон или проект, из которого впоследствии будет создан объект. Каждый объект является экземпляром класса.
Пользовательский доступ к текущему состоянию объекта (к полям экземпляра) допускается только через методы (функции и процедуры). Программы также должны взаимодействовать с этими данными только через свойства и методы объектов.
Хранение данных в виде privat-переменных - единственный способ придания объекту свойств и поведения "черного ящика" (скрывания данных). Скрывание данных - критическое условие для многократного использования объекта и надежности приложения.
Класс, создаваемый из другого класса расширяет его. Общая концепция расширения базового (родительского) класса называется наследованием. Отношение наследования устанавливает специализацию объекта. Если класс А расширяет класс В, то он наследует его методы, но имеет больше возможностей. Это означает, что расширенный класс стартует со всеми свойствами родителя. Методы родительского класса можно переопределить. Объектам-потомкам могут быть назначены новые методы и свойства, отсутствующие в классе-родителе.
В тоже время в VB процесс создания элемента управления из существующего элемента, хотя и выглядит как наследование, но таковым не является, т.к. между такими объектами не устанавливается никакого отношения родитель-потомок. Причина в том, что обычная версия наследования в ОПП всегда подразумевает конфликт между наследованием и инкапсуляцией. Если объект В наследует все свойства объекта А, и последний изменяется, то имеется опасность нарушить функциональные возможности объекта В (проблема хрупкого базового класса). В VB проблема хрупкости при наследовании обходится с помощью концепции интерфейса. Интерфейсы (методы, свойства и события) предоставляют большинство, если не все, функциональные возможности без привлечения механизмов прямого наследования. Это, однако, приводит к написанию большего объема программного кода, чем было бы при использовании классического наследования.
Чтобы обратиться к объекту в коде, надо иметь объектную переменную, а сам объект будет существовать до тех пор, пока имеется, по крайней мере, одна объектная переменная , содержащая обращение к этому объекту. Объектные переменные 2-го и последующих экземпляров Form1, имеют значение только в момент вызова их методов Show. Затем эти переменные выходят из области видимости и получают значение Nothing. Но VB хранит специальную коллекцию Forms, которая содержит ссылку на каждую из загруженных форм в проекте, так, чтобы ее можно было найти и управлять ею.
Пользовательские классы не имеют скрытых глобальных переменных или глобальных коллекций, но можно объявлять пользовательские глобальные переменные или коллекции.
Формы могут устанавливать свойства и вызывать методы друг друга. Для форм можно создавать также пользовательские события.
Свойства, методы и события добавляются к классам-формам вводом соответствующего кода в модули форм. Таким же образом можно добавлять их к модулям класса.