Тверской государственный университет
Опубликован: 13.09.2006 | Доступ: свободный | Студентов: 3491 / 369 | Оценка: 4.65 / 4.29 | Длительность: 30:37:00
Специальности: Программист, Менеджер
Лекция 12:

Проектирование интерфейса. Меню

Аннотация: Общие объекты Office 2000. Коллекция CommandBars. Свойства и методы коллекции CommandBars .Свойства и методы объекта CommandBar. Коллекция CommandBarControls и ее элементы. О роли интерфейса. Создание собственных и модификация встроенных меню. Немного терминологии. Возможности настройки и изменения системы меню. Создание собственного головного меню. Использование диалогового окна Настройка. Создание меню с помощью VBA. Добавление выпадающих меню. Использование диалогового окна Настройка. Как добавить встроенное меню. Добавление выпадающего меню с помощью VBA. Добавление подменю. Вставка и группировка команд. Добавление встроенной команды с помощью окна Настройка. Добавление собственной команды с помощью окна Настройка. Добавление команд с помощью VBA. Пример построения документа с собственным меню Группировка команд меню. Удаление команд меню. Удаление команды с помощью окна Настройка. Удаление команды с помощью VBA. Как восстановить удаленные встроенные компоненты меню. Изменение меню во время р аботы программы. Вывод собственной панели меню. Динамическое изменение видимости команд меню. Управление доступом к командам меню. Переименование команды меню.

Программный код большинства примеров данной лекции можно найти в проектах, доступных для просмотра: DocOne.

Проектирование интерфейса. Меню

В предыдущих лекциях в примерах и описании VBA использовалась заключительная англоязычная бета - версия Office 2000. При описании интерфейса я перешел на русифицированную бета - версию Office 2000. Я полагаю, что программисту должно быть все равно, с какой версией он работает, как называется соответствующий пункт меню "Сервис" или "Tools". Тем не менее, разумнее описывать интерфейс применительно к русифицированному варианту. Кроме того, это входило в мои планы тестирования этой версии Office 2000.

Общие объекты Office 2000

Среди библиотек Office 2000, хранящих объекты, есть библиотеки, связанные с конкретным приложением - Word, Excel, Access, PowerPoint, но не только они. Всякий раз, когда открывается приложение, наряду с библиотекой, связанной с этим приложением, становятся доступными библиотеки общих объектов, где в первую очередь следует отметить библиотеки MSForms и Office. Первая из этих библиотек обеспечивает единство интерфейса при проектировании диалоговых окон (форм). Она содержит объекты, определяющие как само диалоговое окно (форму), так и многочисленные элементы управления, которые могут быть помещены в это окно. Библиотека Office также содержит объекты, используемые при организации интерфейса. В Office 2000 в этой библиотеке появилось много новых объектов: Answer Wizard, Com AddIn, HTML Project, Script, WebPageFont, Language Settings. Но разговор о них пойдет не в этой книге. Заметим, что в чисто интерфейсных объектах существенных изменений не произошло. Говоря о таких объектах, в первую очередь можно выделить объект Assistant, объект CommandBar и коллекцию этих объектов. Объект Assistant и входящий в него объект Baloon предназначены для организации контекстной помощи в более живой визуальной форме, отличной от традиционных окон. Объект CommandBar составляет основу интерфейса, - он представляет панель, на которой расположены команды меню и инструментальные кнопки.

Коллекция CommandBars

Пришла пора рассказать о наиболее "почтенных" представителях пользовательского интерфейса - меню и инструментальных кнопках. Интерфейс начинался с меню и до сих пор практически ни одно приложение без него не обходится. Все приложения Office 2000 обладают мощной встроенной системой меню и набором инструментальных панелей. И все эти средства доступны и при работе конечного пользователя с документами Office 2000. Но надо иметь в виду, что для "серьезных" приложений, требующих программирования и являющихся предметом нашей книги, только встроенными средствами не обойтись. Все основные приложения Office 2000 - Excel, Word, PowerPoint и Access разделяют на этапе проектирования единые средства настройки, позволяющие как модификацию встроенных, так и создание пользовательских панелей меню и инструментов. На этапе программирования во всех приложениях также используется единый набор объектов, корневым из которых является коллекция CommandBars, входящая в состав библиотеки Office. Вот как выглядит ее стр уктура:

Структура коллекции CommandBars

Рис. 11.1. Структура коллекции CommandBars

Элементами коллекции являются объекты класса CommandBar, каждый из которых представляет панель команд. Но то, что расположено на панели: меню, подменю, команды меню, кнопки,- все это задается другим объектом - коллекцией CommandBarControls. Объект CommandBar имеет свойство Controls, возвращающее эту коллекцию. Итак, CommandBar (панель команд) задает любую панель, на которой расположено как меню, так и инструментальные кнопки. На каждой панели, как известно, располагается некоторое число элементов. Они и составляют коллекцию CommandBarControls с элементами класса CommandBarControl. Конечно, эти элементы разнотипны и, по сути, являются объектами трех разных классов: CommandBarButton, CommandBarPopup и CommandBarComboBox. Класс, которому будет принадлежать элемент, определяется в момент его создания. В этот же момент определяется и тип элемента. По типу однозначно определяется клас с, но обратное утверждение неверно, например, элемент класса CommandBarComboBox имеет несколько возможных типов.

Поясним, в чем сущность этих трех классов, в каком случае элемент следует относить к тому или иному классу. Прежде всего, заметим, что "панельные" элементы могут иметь свою сложную внутреннюю структуру. К примеру, у каждого пункта главного меню обычно древовидная структура, при его раскрытии появляются терминальные вершины (команды меню) и вершины - подменю, которые, в свою очередь, содержат терминальные вершины и подменю. Вы ошибаетесь, если полагаете, что инструментальные кнопки можно только щелкать, и что они просто устроены. В Office 2000 в роли кнопок могут выступать такие элементы как ComboBox, TextBox и ListBox. Класс CommandBarButton определяет терминальную вершину (кнопку или команду меню), CommandBarPopup - подменю, CommandBarComboBox - сложно организованные кнопки, заданные элементами управления. Заметьте, что объект PopUp (подменю) имеет свойство Controls, возвращающее коллекцию CommandBarControls , что и обеспечивает требуемую иерархию вложенности меню.

полина есенкова
полина есенкова
Дмитрий Вологжин
Дмитрий Вологжин
Добрый день, прошел тесты с 1 по 9, 10 не сдал, стал читать лекцию и всё пройденные тесты с 1 по 9 сбросились, когда захотел пересдать 10 тест.