Чтение онлайн

на главную - закладки

Жанры

Офисное программирование
Шрифт:

Пример добавления выпадающего меню Ввод документов панели Головное меню с ключом быстрого доступа «В»:

Dim CstmCtrl As CommandBarControl

Set CstmCtrl = CstmBar.Controls.Add(Type:=msoControlPopup,

Before:=1)

CstmCtrl.Caption = «&Ввод документов»

Чтобы добавить новое подменю программно, к объекту, представляющему родительское выпадающее меню, нужно применить метод Add коллекции CommandBarControls. В качестве параметра Туре (Тип) надо использовать значение msoControlPopup.

В следующем примере в конец выпадающего меню Ввод документов, расположенного на панели меню Головное меню, добавляется подменю «о движении товаров»:

Dim CstmPopUpi As CommandBarPopup

Set CstmPopUpi =

stmCtrl.Controls.Add(Type:=msoControlPopup)

CstmPopUpi.Caption =

«о движении товаров»

Добавление команд

Добавить новую команду в меню можно, применив метод Add коллекции CommandBarControls к объекту, представляющему изменяемое меню. Для того чтобы добавить собственную команду, вставьте ее имя в меню, а затем в качестве значения свойства OnAction задайте имя VBA-процедуры, которая должна вызываться при выборе данной команды. В качестве значения аргумента Туре (Тип) метода Add укажите msoControlButton, означающее, что вставляемый в меню элемент будет командой. Добавим команду «Накладная» в выпадающее меню Ввод документов из панели Головное меню. Выбор этой команды запускает процедуру Invoice:

Set CstmCtrl = CstmPopUpi.Controls.Add(Type:=msoControlButton)

CstmCtrl.Caption = «Накладная»

CstmCtrl.OnAction = «Module1.Invoice»

Метод Add позволяет вставлять в меню и встроенные команды. Для этого при вызове задайте значение параметра Id, равное числовому идентификатору данной команды в Office. Поскольку в Office 2000 количество команд доходит до 4000, в табл. 22 приведем основные команды редактирования.

Таблица 22

Фрагмент таблицы идентификаторов встроенных команд меню

Пример добавления команды проверки правописания Spelling в меню Проверки из панели Головное меню:

Set mySpell = CommandBars(«Головное меню»).Соntrols(«Проверки»)_.Controls.Add(Id:=2)

Пример 61. Создать документ, в котором будут отключены все встроенные меню и создано собственное иерархическое меню. На верхнем уровне меню будет состоять из одного пункта. Оно будет включать два подменю, каждое из которых содержит по одной команде. Для реализации данных условий создаем простую форму, содержащую две кнопки: Создать и Отмена (рис. 127). Первая кнопка отключает все панели открытого документа и создает собственное меню (рис. 127), вторая кнопка возвращает все панели на место (рис. 128).

Технология выполнения

1. Активизируйте приложение Word и создайте документ.

2. Перейдите в редактор VBA и создайте форму.

3. Создайте процедуру создания собственной панели.

Option Explicit

Public Sub CreateCustomMenu

Dim CstmBar As CommandBar

Dim CstmPopUpi As CommandBarPopup, CstmPopUp2 As CommandBarPopup

Dim CstmCtrl As CommandBarControl

Dim Exist As Boolean

'Выключаем все панели

For Each CstmBar In CommandBars

CstmBar.Enabled = False

Next CstmBar

'Создаем, включаем и делаем видимой собственную панель

Exist = False

For Each CstmBar In CommandBars

If CstmBar.Name = «Головное меню» Then

Exist = True

Exit For

End If

Next CstmBar

If Not Exist Then

Set CstmBar = CommandBars.Add(Name:="Головнoe меню", Position:=msoBarTop, MenuBar:=True, Temporary:=False)

End If

CstmBar.Enabled = True

CstmBar.Visible = True

'Добавляем меню на панель

Exist = False

For Each CstmCtrl In CstmBar.Controls

If CstmCtrl.Caption = «&Ввод документов» Then

Exist = True

Exit For

End If

Next CstmCtrl

If Not Exist Then

Set CstmCtrl = CstmBar.Controls.Add(Type:=msoControlPopup, Before:=1)

CstmCtrl.Caption =

«&Ввод документов»

'Добавляем две команды подменю

Set CstmPopUpi =

CstmCtrl.Controls.Add(Type:=msoControlPopup)

CstmPopUpi.Caption = « о движении товаров»

Set CstmPopUp2 =

CstmCtrl.Controls.Add(Type:=msoControlPopup)

CstmPopUp2.Caption = « финансовых»

'Добавляем команду в каждое подменю

Set CstmCtrl =

CstmPopUpi.Controls.Add(Type:=msoControlButton)

CstmCtrl.Caption = «Накладная»

CstmCtrl.OnAction = «Module1.Invoice»

Set CstmCtrl =

CstmPopUp2.Controls.Add(Type:=msoControlButton)

CstmCtrl.Caption = «Счет»

CstmCtrl.OnAction = «Module1.Account»

End If

End Sub

Пояснения к процедуре. Вначале, используя свойство Enabled, были отключены все панели. Затем было сформировано головное меню с двумя подменю и командами, содержащее всего один пункт. Обратите внимание: перед добавлением нового пункта обычно проверяется, а не был ли он уже добавлен. Подобная проверка позволяет избежать ошибок, возникающих при попытках добавить уже существующий пункт или удалить несуществующий.

4. Создайте процедуру восстановления панелей инструментов документа.

Public Sub ResetMainMenu

Dim CstmBar As CommandBar

'Включаем все панели

For Each CstmBar In CommandBars

CstmBar.Enabled = True

Next CstmBar

Set CstmBar = CommandBars.Item(«Menu Bar»)

CstmBar.Visible = True

End Sub

5. Пропишите обработчик кнопки «Создать».

Private Sub CommandButton1_Click

Call CreateCustomMenu

End Sub

6. Пропишите обработчик кнопки «Отмена», восстанавливающей стандартное окружение.

Private Sub CommandButton2_Click

Call ResetMainMenu

End Sub

7. Чтобы пример был законченным, приведем процедуры, вызываемые в ответ на выбор команд меню Накладная и Счет:

Public Sub Invoice

MsgBox («Накладная!»)

End Sub

Public Sub Account

MsgBox («Счет!»)

End Sub

8. Откомпилируйте программу, запустите форму на выполнение.

Рис. 127. Форма примера 61 в рабочем режиме. Результат работы кнопки Создать

Примечание. Данный пример доработать для более рационального использования следующим образом: в головном меню разработчика создать пункт Форма, который вызывает соответствующую форму, редактирующую меню всего приложения (рис. 129, 130). После нажатия кнопки Создать меню всего приложения Word изменяется, подключив Главное меню, созданное программно. В этом меню пункт «Работа с меню + Отмена» запускает форму с соответствующими кнопками (Создать и Отменить).

Рис. 128. Результат работы кнопки Отменить

Рис. 129. Главное меню разработчика и вызываемая форма

Рис. 130. Главное меню приложения, созданное программно, и пункт Отмена, вызывающий форму с кнопкой Отменить

Литература

Поделиться:
Популярные книги

Вечный Герой (сборник)

Муркок Майкл Джон
Шедевры фантастики
Фантастика:
эпическая фантастика
6.25
рейтинг книги
Вечный Герой (сборник)

Жизнь замечательных Блонди

Измайлова Кира Алиевна
1. Ai no Kusabi
Фантастика:
космическая фантастика
8.29
рейтинг книги
Жизнь замечательных Блонди

Город древних

Муравьёв Константин Николаевич
2. Вселенная EVE Online
Фантастика:
фэнтези
боевая фантастика
попаданцы
8.20
рейтинг книги
Город древних

Психология общения и межличностных отношений ...

Ильин Евгений Павлович
Научно-образовательная:
психология
7.71
рейтинг книги
Психология общения и межличностных отношений ...

Полный медицинский справочник диагностики

Вяткина П.
Полный медицинский справочник
Научно-образовательная:
медицина
6.33
рейтинг книги
Полный медицинский справочник диагностики

«Химия и жизнь». Фантастика и детектив. 1975-1984

Толкин Джон Рональд Руэл
2. Химия и жизнь. Фантастика и детектив
Фантастика:
социально-философская фантастика
научная фантастика
юмористическая фантастика
детективная фантастика
5.00
рейтинг книги
«Химия и жизнь». Фантастика и детектив. 1975-1984

Имперец. Том 1 и Том 2

Романов Михаил Яковлевич
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 1 и Том 2

Забытая история Руси

Калюжный Дмитрий Витальевич
Научно-образовательная:
история
7.33
рейтинг книги
Забытая история Руси

007. Вы живёте только... трижды

Бурштейн Алексей
Юмор:
юмористическая проза
5.00
рейтинг книги
007. Вы живёте только... трижды

Светоносец. Трилогия

Джонсон Оливер
Светоносец
Фантастика:
фэнтези
5.00
рейтинг книги
Светоносец. Трилогия

Вечный. Книга VI

Рокотов Алексей
6. Вечный
Фантастика:
рпг
фэнтези
5.00
рейтинг книги
Вечный. Книга VI

Миллион приключений (сборник)

Булычев Кир
15. Отцы-основатели - Русское пространство. Кир Булычев - Собрание сочинений
Фантастика:
научная фантастика
7.00
рейтинг книги
Миллион приключений (сборник)

Квест империя. Трилогия

Мах Макс
Квест империя
Фантастика:
боевая фантастика
6.00
рейтинг книги
Квест империя. Трилогия

Методы статистического анализа исторических текстов (часть 2)

Фоменко Анатолий Тимофеевич
Научно-образовательная:
история
5.00
рейтинг книги
Методы статистического анализа исторических текстов (часть 2)