- •Ответы к экзамену ппп
- •1 Понятие ппп. Офисное программирование. Основные тенденции в развитии ппп.
- •2 Среда разработки vbe. Синтаксис vba. Достоинства и недостатки vba
- •Элементы проекта vba
- •Характеристика компонентов vbe
- •3 Объектная модель компонентов ms office. Библиотеки типов. Терминальные свойства и свойства-участники приложения. Разработка приложений для ms office.
- •Проект и область видимости модулей
- •4 Типы модулей программного проекта. Разделы модуля. Защита кода проекта. Область видимости модуля, переменных. Окна отладки vba
- •Свойства проекта
- •Защита проекта
- •5 Типы данных vba. Передача параметров в процедуру.
- •6 Функции для организации окон ввода и сообщений и их аргументы. Управляющие операторы vba (выбора и цикла).
- •7 Понятие макроса, его проектирование, способы запуска, правила сохранения, передача в другие проекты.
- •8 Определение объекта, коллекции объектов, класса, объектной модели. Механизмы инкапсуляции, встраивания, наследования, полиморфизма
- •9 Формы и элементы управления. Событийные процедуры.
- •11 Объекты Помощник, его надпись. Компонент Microsoft Agent.
- •12 Объекты (библиотеки) каркаса Excel. Формат ссылок r1c1
- •13 Интеграция с внешними приложениями. Объект Automation. Создание объекта. Раннее и позднее связывание объектных переменных
- •14 Объекты и методы библиотеки Microsoft Scripting Runtime Library для работы с файловой системой.
- •15 Подходы анализа возможных ошибок в ходе выполнения программы. Конструкции перехвата ошибок
- •2.1. Оператор On Error
- •2.2 Процедура обработки ошибки
- •2.3. Оператор Resume
- •Состав каркаса Microsoft Word. Объектная модель приложения.
- •Библиотека ado. Объектная модель. Вызов источников данных dsn и Jet-провайдера. Формирование sql-команды.
- •Объект Connection и установка подключения к базе данных
- •1 Способ
- •2 Способ
- •Задачи автоматизации в Access. Ограничения настольных субд. Объектная модель ms Access. Отличия макросов Access от макросов других приложений
8 Определение объекта, коллекции объектов, класса, объектной модели. Механизмы инкапсуляции, встраивания, наследования, полиморфизма
Объектом в ООП называется абстрактный тип данных, состоящий из данных (обычно хорошо структурированных) и различных функций, управляющих этими данными.
Коллекцией (семейством) называется упорядоченный набор однотипных объектов. Коллекция тоже является объектом (объект Collection). Например, объект Workbooks (рабочие книги) содержит все открытые объекты Workbook (рабочая книга). Каждый элемент коллекции нумеруется и может быть идентифицирован либо по номеру, либо по имени. Например, Worksheets(1) обозначает первый рабочий лист активной книги, а Worksheets("Лист1") – рабочий лист с именем Лист1.
Класс (class) задает свойства и поведение объектов класса. Каждый объект является экземпляром какого-либо класса. Причем между объектом и классом существуют отношения, аналогичные соотношениям между переменной и ее типом. Например, каждый рабочий лист MS Excel является объектом класса Worksheet. Таким образом, класс – это логическая конструкция, а объект – это его физическое воплощение.
Объектная модель (или модель объектов, Object model, или иерархия) – это совокупность взаимосвязанных объектов, которые объединяет нечто общее, например, назначение, область применения.
Свойство представляет собой атрибут объекта, определяющий его характеристики (размер, цвет, положение на экране и др.) и состояние объекта (доступность, видимость и др.).
Метод представляет собой действие, выполняемое над объектом
Событие представляет собой действие, распознаваемое объектом (например, щелчок мышью или нажатие клавиши), для которого можно запрограммировать отклик.
В ООП возможны два типа отношений между классами: наследование и встраивание.
Инкапсуляция (encapsulation) – это механизм, связывающий вместе код и данные, которыми он манипулирует и одновременно защищает их от внешних помех и некорректного использования. Иными словами, инкапсуляцию можно представить в виде защитной оболочки, предохраняющей код и данные (свойства и методы класса) от изменения извне. Доступ к коду и данным внутри оболочки жестко контролируется интерфейсом.
Наследованием называется способность класса-потомка сохранять свойства и методы класса-родителя. Но при этом можно добавлять новые, изменять или удалять перенимаемые методы и свойства
Встраивание - иерархическое семейство классов.
Полиморфизм. С наследованием тесно связано понятие полиморфизма, сущность которого проявляется в способности объекта принимать различные формы.
9 Формы и элементы управления. Событийные процедуры.
Форма является объектом UserForm, обладающим большим количеством свойств, методов и событий, позволяющих контролировать ее внешний вид и функционирование.
Объектная модель форм включает следующие объекты и семейства:
·объект UserForm инкапсулирует в себе данные о самой форме;
· семейство controls содержит в себе все элементы управления, перечисленные выше, расположенные на форме
·объект Font устанавливает шрифт
·объекты MultiPage и TabStrip являются контейнерами для семейств Pages и Tabs (страницы и вкладки)
· объект DataObject инкапсулирует в себе перемещаемые отформатированные текстовые данные
Таблица 1. Стандартные элементы управления, включенные в VBA
Элемент управления |
Назначение |
Label (надпись, метка) |
Позволяет создавать заголовки элементов управления, которые не имеют собственных встроенных заголовков |
TextBox (текстовое поле) |
Окно редактируемого текста свободной формы для ввода данных. Может быть одно- и многострочным |
ComboBox (поле со списком) |
Объединяет окно редактирования и окно списка |
ListBox (список) |
Отображает список значений, из которых пользователь может сделать выбор |
CheckBox (флажок) |
Стандартный флажок, который используется для выбора вариантов, не являющихся взаимоисключающими |
OptionButton (переключатель) |
Стандартная кнопка-переключатель. Используется, когда пользователю необходимо сделать выбор между "включено/выключено" |
ToggleButton (выключатель) |
Выключатели служат для той же цели, что и флажки, но выводят установки в виде кнопки, находящейся в "нажатом" или "отжатом" состоянии |
Frame (рамка) |
Визуально и логически объединяет некоторые элементы управления (особенно флажки, переключатели и выключатели) |
CommandButton (кнопка) |
Используется для выполнения таких действий, как Cancel (Отмена), Save (Сохранить), Ok и т.д. Когда пользователь щелкает по кнопке, выполняется VBA-процедура, закрепленная за данным элементом управления |
TabStrip (набор вкладок) |
Состоит из области, в которую следует помещать другие элементы управления (такие, как текстовые поля, флажки и т.д.) |
MultiPage (набор страниц) |
Состоит из нескольких страниц. Можно выбрать любую из них, щелкнув по соответствующей вкладке |
ScrollBar (полоса прокрутки) |
Позволяет выбирать линейное значение, аналогичное тому, как это можно сделать при помощи счетчика |
SpinButton (счетчик) |
Специальная разновидность текстового поля. Используется для ввода последовательных величин, которые заведомо находятся в определенном интервале значений (число, дата и т.п.) |
Image (рисунок) |
Выводит на форме графическое изображение любом из следующих форматов: *.bmp, *.cur, *.gif, *.ico, *.jpg, *.wmf |
Таблица 3. Основные общие методы элементов управления
Метод |
Описание |
Add |
Позволяет добавить элемент управления во время выполнения программы |
Move |
Перемещает элемент управления |
SetFocus |
Устанавливает фокус на вызвавшем этот метод элементе управления. Часто применяется в программах обработки ошибок |
Zorder |
Помещает объект до или после всех пересекающихся с ним объектов |
Таблица 4. Наиболее часто используемые события объектов управления
Событие |
Описание |
Click |
Происходит, когда пользователь выбирает элемент управления с помощью одинарного щелчка кнопкой мыши |
DblClick |
Происходит, когда пользователь выбирает элемент управления с помощью двойного щелчка кнопкой мыши |
KeyDown |
Происходит при нажатии пользователем какой-либо клавиши в тот момент, когда форма выполняется и имеет фокус |
KeyPress |
Происходит, когда пользователь нажимает любую клавишу на клавиатуре, кроме функциональных и клавиш управления курсором |
KeyUp |
Происходит, когда пользователь отпускает клавишу |
Change |
Происходит при изменении значения элемента управления |
GotFocus |
Происходит, когда элемент управления получает фокус |
LostFocus |
Происходит, когда элемент управления теряет фокус |
Error |
Используется при уведомлении об ошибке |
MouseDown |
Происходит при нажатии кнопки мыши |
MouseUp |
Происходит при отпускании кнопки мыши |
MouseMove |
Происходит при перемещении указателя мыши |
BeforeDragOver |
Происходит, пока совершается операция перемещения (drag-and-drop) элемента управления |
BeforeDropOrPaste |
Происходит перед завершением операции перемещения (drag-and-drop) элемента управления |
AddControl |
Происходит, когда к форме (или элементам Frame, Page или MultiPage) добавляется какой-либо элемент управления |
AfterUpdate |
Происходит после обновления значения элемента управления |
BeforeUpdate |
Происходит после того, как было изменено значение элемента управления, но перед тем, как был обновлен сам элемент управления |
Enter |
Происходит, когда выделяется элемент управления |
Exit |
Происходит, когда с элемента управления снимается выделение |
Layout |
Происходит, когда изменяются размеры элемента Frame или MultiPage |
SpinDown |
Происходит, когда пользователь щелкает стрелку "вниз" ("влево") кнопки счетчика |
SpinUp |
Происходит, когда пользователь щелкает стрелку "вверх" ("вправо") кнопки счетчика |
10 Объекты и коллекции VBA, которые используются для проектирования панелей команд (инструментов, меню, контекстного меню). Создание пользовательской панели инструментов. Типичные ошибки, возникающие при создании пользовательских панелей инструментов
.
Данные о панелях команд них инкапсулируются в объектах CommandBar, совокупности образуют семейство CommandBars.
Рассмотрим некоторые важные свойства и методы объекта CommandBar.
Þ Controls — через это свойство можно получить коллекцию элементов управления CommandBarControls, которая нам, скорее всего, потребуется для работы с кнопками или элементами меню.
Þ Enabled — включение или отключение панели.
Þ Height, Left, Top и Width — очевидные свойства, относящиеся к расположению панели в окне приложения.
Þ Index, Name и NameLocal — эти свойства позволяют найти нужную нам панель в коллекции CommandBars. Name — это программное имя объекта, NameLocal — имя, которое будет видно пользователю, Index — номер данной панели в коллекции.
Для создания элемента управления (кнопки в панели инструментов) метод Add() коллекции Controls объекта CommandBar. Этот метод принимает пять необязательных параметров, из которых первые два параметра очень важны. Первый параметр Type определяет тип передаваемого в коллекцию элемента управления. Таких типов пять:
Þ msoControlButton — кнопка (т. е. в итоге получится панель инструментов);
Þ msoControlEdit — поле для ввода текста;
Þ msoControlDropdown — раскрывающийся список;
Þ msoControlComboBox — комбинированный список;
Þ msoControlPopup — пункт меню.
Важнейшие свойства и методы объекта CommandBarButton приводятся далее.
Þ Caption — надпись на элементе управления. Для кнопки выводится в виде всплывающей подсказки, а для пункта меню — название пункта.
Þ Enabled — определяет, включен или отключен данный элемент управления. Обычно используется для предупреждения ошибок пользователя.
Þ FaceId (только для кнопок) — позволяет использовать системную картинку для кнопки (не назначая ей соответствующей функции). Например, значение 4 присвоит кнопке изображение принтера. В Word и Excel встроено несколько тысяч иконок, и поэтому вместо создания новой иконки всегда есть возможность подобрать готовую.
Þ OnAction — самое важное свойство элемента управления. Его значение используется, когда элемент управления активизируется (щелчок по кнопке или пункту меню, завершение ввода текста в текстовом поле, выбор нового значения в списке). Предназначено для указания запускаемой процедуры или внешнего приложения (COM Add In). Наример: But1.OnAction = "MySub"
Коллекция CommandBars содержит, как ясно из названия, набор объектов CommandBar (этот объект представляет как панели инструментов, так и меню), каждый из которых, в свою очередь, — коллекцию CommandBarControls, а эта коллекция представляет из себя хранилище элементов, из которых и состоит меню. Таких элементов может быть три:
Þ CommandBarButton — кнопка или элемент меню, который используется для выполнения программы или подпрограммы;
Þ CommandBarComboBox — сложный элемент меню или панели управления (это может быть поле ввода, раскрывающийся список, поле со списком);
Þ CommandBarPopup — меню или вложенное меню.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
MenuKiller
End Sub
Private Sub MenuBuilder()
Dim cbMenuBar As CommandBar
Set cbMenuBar = Application.CommandBars.Add( _
Name:="МоястрокаМеню", _
Position:=msoBarTop, _
MenuBar:=True, _
Temporary:=True)
With cbMenuBar
.Visible = True
With .Controls
With .Add(Type:=msoControlPopup)
.Caption = "Файл"
With .Controls
With .Add(Type:=msoControlButton)
.Caption = "Создать"
.OnAction = "NewDoc"
End With
With .Add(Type:=msoControlButton)
.Caption = "Сохранить"
.OnAction = "SaveDoc"
End With
With .Add(Type:=msoControlButton)
.Caption = "Выход"
.OnAction = "ExitApp"
End With
End With
End With
Типичные ошибки, возникающие при создании пользовательских панелей инструментов
Независимо от приложения и того, как оно хранит пользовательские панели, в VВA-программах нельзя выполнять следующие действия (попытка приводит к ошибке приложения):
□ удалить панель, которая в этот момент не существует;
□ создать новую панель, причем ее имя совпадает с именем уже существующей панели;
□ любым способом обратиться к элементам или свойствам несуществующей панели.
