Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену ППП 2013.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
535 Кб
Скачать

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-программах нельзя выполнять следующие действия (попытка приводит к ошибке приложения):

 

  1. □ удалить панель, которая в этот момент не существует;

  2. □ создать новую панель, причем ее имя совпадает с именем уже существующей панели;

  3. □ любым способом обратиться к элементам или свойствам несуществующей панели.