Вход


Главная страница >> Учебный процесс >> Конспекты >> MS Office. Уроки программирования на Visual Basic для Microcoft Office 97 >> Программирование строк меню >> Работа с объектами CommandBar >> Создание объектов CommandBar

[Назад]    [Содержание]    [Вперед]

  


Создание объектов CommandBar


Семейство CommandBars используется не только для вывода имен строк меню Excel. С помощью данного семейства можно создать объект CommandBar. С любой строкой меню работают, используя объект CommandBar. Чтобы редактировать существующую строку меню или разработать новую, требуется сначала создать этот объект.

Для создания объекта CommandBar используется метод Add семейства CommandBars. В следующем выражении вместо имени CommandBarsCollectionObject необходимо подставить фактическое имя объекта семейства CommandBars:

CommandBarObject = CommandBarsCollectionObject.Add _
                   (Name, Position, MenuBar, Temporary)

Каждый из параметров метода Add является необязательным. Если все аргументы опущены, то можно также не указывать открывающую и закрывающую скобки.

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

MyCommandBar = CommandBars.Add ("MyBar",2, True, False)

Данную инструкцию требуется изменить следующим образом:

MyCornmandBar = CommandBars.Add (Name:= "MyBar", _
     Position:=msoBarTop, MenuBar:=True, Temporary:=False)

В табл. 1 и 2 описываются параметры, используемые в методе Add:

Таблица 1. Параметры метода CommandBars.Add

Параметр Описание
Name Задает имя строки меню. Имя используется для указания требуемой строки меню в программе VBA
Position Задает тип добавляемой строки меню. Данный аргумент имеет значения, приведенные в табл.2
MenuBar Указывает, заменяет ли новая строка меню активную строку меню основного приложения. Если значение данного параметра равно True, то строка главного меню заменяется пользовательской строкой. В противном случае, новая строка выводится в позиции, которая определяется значением параметра Position
Temporary Определяет, удаляется ли строка меню после закрытия основного приложения. Если значение данного параметра равно False, то строка меню остается, пока пользователь не выберет команду Вид\Панели инструментов\Настройка\Сброс (View\ToolbarsCustomize\Reset), или не удалит ее с помощью программы VBA

! Примечание

В настоящей главе описывается, как настроить и создать строки меню автоматически, используя программу VBA. Пользователь может выполнить данные операции и вручную с помощью диалогового окна Настройка (Customize Toolbars), которое выводится при выборе команды Вид\Панели инструментов\Настройка. Если нажать кнопку Сброс, то можно восстановить исходный формат и содержимое любой строки меню.

Tаблица 2. Значение параметра Position

Константа Значение Описание
msoBarLeft 0 Устанавливает привязку строки меню к левой границе окна основного приложения
msoBarRight 2 Устанавливает привязку строки меню к правой границе окна основного приложения
msoBarTop 1 Устанавливает привязку строки меню к верхней границе окна основного приложения
msoBarBottom 3 Устанавливает привязку строки меню к нижней границе окна основного приложения
msoBarFloating 4 Задает свободное размещение строки меню на экране
msoBarPopup 5 Указывает, что строка меню является контекстным меню (см. ниже раздел "Программирование контекстных меню")

! Примечание

Свойство Position играет важную роль при задании типа создаваемой строки меню. Например, значение msoBarFloating используется для создания панели инструментов, а значение msoBarTop - для добавления меню. Ниже приводится более подробная информация о создании панелей инструментов, контекстных и простых меню.

В программе 1 показано использование метода Add. После выполнения макроса новая строка меню (с именем "NewBar") заменяет текущую строку и удаляется только при закрытии основного приложения. Поэтому, чтобы восстановить прежнее меню, необходимо закрыть основное приложение и перезапустить его.

Программа 1. Создание объекта CommandBar

Sub CreateCommandBar
     Dim MyCommandBar as CommandBar
     Set MyCommandBar = CommandBars.Add _
         (Name:="NewBar",Position:= soBarTop,
          MenuBar:== True, Temporary:= True)
     MyCommandBar.Visible = True
End Sub

Задание свойств CommandBar. После создания строки меню требуется задать ее свойства. Строке меню можно приписать различные характеристики как при создании, так и после. В табл. 3 приводится описание некоторых свойств объекта CommandBar, а затем примеры программ, показывающие использование этих свойств.

Свойство Описание
Enabled Определяет возможность доступа к строке меню. Если значение данного свойства равно True, то строка меню появляется в списке доступных меню
Visible Указывает, является ли строка меню видимой
Protection Задает защиту строки меню от изменений пользователем. Данному свойству можно присвоить значение или сумму значений следующих констант: msoBarNoProtectionmsoBarNoCustomize, msoBarNoResize, msoBarNoMove, msoBarNoChangeVisible, msoBarNoChangeDock, msoBarNoVerticalDock, msoBarNoHorizontalDock.

Программа 2 является примером использования свойств, описанных в вышеприведенной таблице. После выполнения макроса создается строка меню с именем "NewMainMenu", которая заменяет текущее меню основного приложения. Значение свойства Protection задает запрет на изменение и перемещение строки меню, а значение параметра Temporary - удаление созданной строки при закрытии основного приложения.

Программа 2. Создание строки меню

Public Sub CreateMenuCommandBar()
     Dim NewBar As CommandBar
     Dim lng_protection As Long
     Set NewBar = CommandBars.Add("NewMainMenu", _
          Position :=msoBarTop, MenuBar:=True, Temporary:=True)
     lng_protection = (msoBarNoCustomize + msoBarNoResize +           msoBarNoMove)
     With NewBar
          .Protection = lng_protection
          .Visible = True
     End With
End Sub



[Назад]    [Содержание]    [Вперед]

  


Для комментария : kadan@grsu.grodno.by

  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017