
- •Использование visual basic for applications для разработки приложений в ms office
- •Введение
- •1. Общие принципы ооп
- •2. Визуальное программирование. Событийно-управляемое программирование
- •3. Структура программы и иерархия классов в office
- •4. Интегрированная среда разработки vba
- •4.1. Окна интегрированной среды
- •4.2. Меню
- •4.2.1. Меню Файл
- •4.2.2. Меню Вид
- •4.2.3. Меню Вставка
- •4.2.4. Меню Формат
- •4.2.5. Меню Отладка
- •4.2.6. Меню Запуск (Run)
- •4.2.7. Меню Сервис (Tools)
- •4.2.8. Пример создания простейшей формы
- •5. Язык vba, написание программного кода
- •5.1. Общие элементы синтаксиса, операторы
- •5.1.2. Арифметические операторы
- •5.1.3. Оператор конкатенации &
- •5.1.4. Логические операторы
- •5.1.5. Комментарий
- •5.2. Функции, процедуры, макросы, обработчики событий
- •5.2.1. Процедуры
- •5.2.2. Функции
- •5.2.3. Функции MsgBox и DialogBox
- •InputBox (подсказка [, заглавие ] [, по_умолчанию ] [, х_поз][ , у_поз][ , help_file, контекст]).
- •5.2.4. Еще один способ вызова процедуры или функции
- •5.3. Объявление переменных, типы переменных
- •5.4. Преобразованиеданных и типов данных
- •5.5. Массивы
- •5.6. Константы
- •5.7. Область видимости и время жизни переменных, констант и процедур
- •5.7.1. Управление областью видимости
- •5.7.2. Пример создания программного кода формы
- •5.8. Инструкции vba
- •5.8.1. Инструкции присваивания Let и Set
- •5.8.2. Инструкции циклов
- •5.8.3. Инструкции принятия решений
- •6. Создание графического интерфейса с помощью стандартных элементов диалога
- •6.1. Создание формы и размещение в ней элементов управления
- •6.1.1. Объектная модель библиотеки ms Forms
- •6.1.2. События форм и элементов управления
- •6.2. Элементы управления
- •6.2.1.Label (Надпись)
- •6.2.2.TextBox (Поле)
- •6.2.3.RadioButton (Переключатели или радиокнопки)
- •6.2.4.CheckBox (Флажок) и Toggle Button (Выключатель)
- •6.2.5.Frame (Рамка)
- •6.2.6.ListBox (Список)
- •6.2.7.ComboBox (Поле со списком)
- •6.2.14.Свойства элементов управления
- •7. Создание приложений для ms excel
- •7.1. Структура проекта
- •7.2. ОбъектApplication
- •7.3. Работа с книгами
- •7.4. Работа с рабочими листами
- •7.5. Работа с ячейками
- •8. Создание приложений для ms word
- •8.1. Структура проекта
- •8.2. ОбъектApplication
- •8.3. Работа с документами
- •8.4. Работа с абзацами
- •8.5. Работа с текстом
- •8.5.1. Объект Range
- •8.5.2. Объект Selection
- •9. Задания для самостоятельной работы
- •9.1. Создание графического интерфейса
- •9.2. Написание программного кода
- •9.3. Создание приложения дляWord
- •9.4. Написание функции и процедуры
- •9.5. Создание приложения дляExcel
- •Библиографический список
6. Создание графического интерфейса с помощью стандартных элементов диалога
Выше уже говорилось о том, что любой пользователь может легко и быстро создать свою собственную форму и разместить на ней стандартные элементы управления. Мы даже уже создали форму, с помощью которой оформили интерфейс для программы, вычисляющей площадь прямоугольника по двум заданным его сторонам. Теперь же пришло время подробнее остановиться на вопросе создания графического интерфейса.
6.1. Создание формы и размещение в ней элементов управления
6.1.1. Объектная модель библиотеки ms Forms
С точки зрения программиста формы и элементы управления являются объектами со своими свойствами, методами, событиями и т.п. Все объекты, используемые для создания форм и окон диалога в приложениях MS Office, содержатся в библиотеке MS Forms 2.0 Object Library (в отдельном файле fm20.dll). Ссылка на эту библиотеку устанавливается автоматически при добавлении в проект новой формы. Если вдруг по каким-то причинам она отсутствует, то ее можно добавить при помощи команды меню Сервис|Ссылки, выбрав из списка представленных библиотек. Самый главный объект, содержащийся в этой библиотеке, называется UserForm. Это та самая форма, которая автоматически создается конструктором форм. Также в этой библиотеке находятся элементы управления (controls), к которым относятся такие объекты как TextBox, ComboBox, Label и т.п., и еще коллекции вместе со своими составляющими – MultiPage и TabStrip, в состав которых входят объекты Page и Tab.
6.1.2. События форм и элементов управления
Выше уже не раз говорилось, что в объектно-ориентированном программировании важное место имеет понятие события. Работа программы строится на основе реакции объекта на какое-либо событие. Любому событию объекта может быть назначена процедура обработки этого события. Многие события могут обрабатываться различными объектами. Так, например, событие Click (щелчок мышью) может быть обработано и элементом Button, и CheckBox, и MultiPage.
Часто бывает так, что одно действие пользователя генерирует несколько последовательно идущих событий. При работе, например, с данными в текстовом поле события происходят в следующей последовательности:
EnterChangeBeforeUpdateAfterUpdateExit
При работе с мышью события также возникают в определенной последовательности. При щелчке мышью на каком-либо объекте события возникают в следующей последовательности:
MouseDownMouseUpClick
При двойном щелчке мышью события возникают в последовательности, представленной ниже:
MouseDownMouseUpClickDblClickMouseUp
При работе с клавиатурой происходит следующая цепочка событий:
KeyDownKeyPressKeyUp
Событие AfterUpdate происходит каждый раз после того, как пользователь изменит данные в элементе управления. Оно следует после события BeforeUpfdate и до события Exit текущего элемента управления.
Событие BeforeUpdate происходит непосредственно перед изменением данных в элементе управления.
Событие Change происходит в случае изменения значения свойства Value элемента управления. Это событие может происходить в следующих случаях:
при щелчке мышью на переключателе, флажке или выключателе;
при вводе нового текста в поле или при выборе нового элемента в списке;
при выборе другой вкладки в наборе вкладок или другой страницы в наборе страниц;
при перемещении бегунка прокрутки.
Событие Click – это одно из наиболее часто используемых событий для элементов управления. Оно возникает в том случае, когда пользователь щелкает кнопкой мыши на элементе управления, а также в том случае, когда пользователь выбирает значение для элемента управления, коорый может иметь несколько значений, т. е. имеет свойство Value. Для элементов управления MultiPage (набор страниц) и TabStrip (набор вкладок) событие имеет параметр Index, определяющий страницу или вкладку, на которой был произведен щелчок мышью. Событие DblClick происходит при выполнении пользователем двойного щелчка мышью на объекте.
События Enter и Exit. Событие Enter происходит перед тем, как элемент управления получает фокус от другого элемента управления той же самой формы. Событие Exit, наоборот, происходит перед тем, как элемент управления теряет фокус. Процедура обработки события Exit имеет один параметр Cancel. Если ему в процедуре присвоить значение True, то фокус от данного элемента управления не перейдет к другому.
События KeyDown и KeyUp происходят соответственно тогда, когда пользователь нажимает и отпускает клавишу. Процедуры обработки этих событий имеют два параметра: KeyCode – целое число, представляющее код клавиши, и Shift – состояние клавиш Shift, Ctrl и Alt. Значение данного параметра равно одной из констант, приведенных в табл. 7.
Таблица 7
Значение параметра KeyCode
Константа |
Описание |
1(fmShiftMask) |
Была нажата клавиша Shift |
2(fmCtrlMask) |
Была нажата клавиша Ctrl |
3 |
Были нажаты клавиши ShiftиCtrl |
4(fmAltMask) |
Была нажата клавиша Alt |
5 |
Были нажаты клавиши AltиShift |
6 |
Были нажаты клавиши AltиCtrl |
7 |
Были нажаты клавиши Alt,ShiftиCtrl |
Событие KeyDown для элемента управления или формы фиксируется, если пользователь нажимает клавишу, когда данный элемент управления или форма имеют фокус. Событие KeyPress происходит после события KeyDown и до события KeyUp. Причем это событие не происходит при нажатии клавиш Tab, Enter, Delete и клавиш управления курсором.
События MouseDown и MouseUp происходят в тот момент, когда пользователь щелкает кнопкой мыши на каком-либо объекте. Первое из них выполняется в момент нажатия кнопки мыши, а второе – при ее отпускании. Это событие довольно часто используется вместо события Click. Это связано с тем, что в отличие от последнего события MouseDown и MouseUp позволяют узнать, какая из кнопок была нажата. В табл. 8 приведены параметры обработчиков этих событий.
Таблица 8
Параметры обработчиков событий
Параметр |
Описание |
Index |
Представляет индекс страницы Pageили вкладкиTabсоответствующих коллекций. Данный параметр присутствует только в процедурах обработки событий объектовMultiPageиTabStrip |
Button |
Целое число, которое идентифицирует кнопку мыши, вызвавшую эти события. Значение данного параметра определяется следующими константами: fmButtonLeft(1)– была нажата левая кнопкаfmButtonRight(2)– была нажата правая кнопкаfmButtonMigddle(4)– была нажата средняя кнопка |
Shift |
Определяет состояние клавиш Shift,AltиCtrl(см. предыдущую таблицу) |
X,Y |
Эти два параметра определяют координаты относительно левого верхнего угла формы, рамки или страницы. |
События Activate и Deactivate. Первое из событий происходит, когда форма получает фокус. Процедура обработки данного события может быть использована для выполнения некоторых действий при открытии формы. Второе событие фиксируется тогда, когда форма теряет фокус.