logo search
SrrazOffpril_Vecher

4.7. Модификация панелей инструментов на этапе разработки

К изменениям на этапе разработки относятся создание панелей, добавление новых или встроенных элементов, удаление, группирование и разгруппирование элементов, а также изменение ширины текстовых полей, списков и полей со списками на панелях инструментов. Кроме того, можно выбирать другие значки для кнопок или редактировать их в Button Editor – редакторе кнопок.

4.7.1. Создание пользовательской панели инструментов

Для создания новой панели инструментов предназначен метод Add набора CommandBars, присваивая аргументу Position этого метода значение msoBarLeft, msoBarTop, msoBarRight, msoBarButton или msoBarFloating. При этом сообщается, каким должен быть создаваемый объект CommandBar – плавающей панелью инструментов или пристыкованной к соответствующей границе окна приложения:

Set cstm = CommandBars.Add(Name:=”Custom Tools”, _

Position:= msoBarFloating, MenuBar:=False, Temporary:=False)

cstm.Visible = True

4.7.2. Добавление и группирование элементов

Добавить элемент меню к объекту CommandBar, представляющему конкретную панель инструментов, позволяет метод Add набора CommandBarControls. Чтобы добавить встроенный элемент, необходимо указать ее идентификатор в аргументе Id:

Set mySpell = CommandBars(“Quick Tools”). Controls.Add(Id:=2)

Чтобы добавить пользовательский элемент, необходимо создать элемент и установить свойство OnAction на процедуру Visual Basic, которая будет запускаться при каждом щелчке этого элемента. Значение msoControlButton аргумента Type метода Add сообщает, что данный элемент меню является кнопкой:

Set databaseItem = CommandBars(“Standard”).Controls.Add _ (Type:=msoControlButton, Before:=3)

With databaseItem

.OnAction = “OpenDatabaseProc”

.FaceId = 987

End With

Visual Basic позволяет программно изменять внешний вид элементов, открывая доступ ко множеству свойств этих объектов. Чтобы начать группу на панели инструментов (т.е. отчеркнуть линией данный элемент), достаточно присвоить значение True свойству BeginGroup объекта CommandBarButton, CommandBarPopup или CommandBarComboBox, который представляет соответствующий элемент. Чтобы удалить линию, следует установить это свойство как False. Получить объект, представляющий конкретный элемент, позволяет выражение вида Controls(index), где index – название или индекс элемента.

Set databaseItem = CommandBars(“Worsheet Menu _ Bar”).Controls(“File”).Controls(“Open Database”)

databaseItem.BeginGroup = True

4.7.3. Добавление и инициализация текстовых полей, списков и полей со списками

Для добавления пользовательских текстовых полей, списков и полей со списками следует использовать Visual Basic, а именно: метод Add набора CommandBarControls; при этом аргумент Type указывает тип добавляемого элемента управления (таблица 4.1).

Таблица 4.1

Значения аргумента Type для соответствующего элемента управления

Элемент управление

Значение аргумента Type

Тестовое поле (text box)

msoControlEdit

Список (list box)

msoControlDropDown

Поле со списком (combo box)

msoControlComboBox

Чтобы указать, надо ли выводить слева от кнопки ее заголовок, используется свойство Style текстового поля, списка или поля со списком. Например:

Set newCombo = CommandBars(“Custom1”).Controls _

Add(Type := msoControlComboBox

With newCombo

.AddItem “01”

.AddItem “02”

.AddItem “03”

.AddItem “04”

.Style = msoComboNormal

.onAction = “ScrollToQuarter”

End With

Пока выполняется программ на Visual Basic, процедура, указанная в свойстве OnAction поля со списком, вызывается всякий раз, когда пользователь к обращается к данному элементу управления.

4.7.4. Удаление элементов с панели инструментов

Visual Basic позволяет удалять встроенные элементы с панели инструментов, помогая подстраивать пользовательский интерфейс программы. Вполне допустимо убрать из панели инструментов встроенный элемент и заменить его своей версией, позволяющей выполнять сугубо специфические операции. Или удалить ряд элементов, не используемых в программе, и тем самым упростить ее интерфейс. Модифицированные панели инструментов и их элементы можно вернуть в исходное состояние. Но удаление пользовательских панелей необратимо – восстановление потребует их повторного создания.

Для удаления пользовательской панели инструментов и встроенных элементов предназначен метод Delete. Стандартные панели инструментов удалять не разрешается:

CommandBars(“Standard”).Controls(“Print”).Delete

4.7.5. Восстановление встроенных панелей инструментов

Восстановить можно любые встроенные панели с помощью метода Reset:

CommandBars(“Standard”).Reset