Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA For Excel Часть 02.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.08 Mб
Скачать

Свойства и методы пунктов меню

Для обработки пунктов меню применяются свойства и методы объекта Controls. Для удаление пункта меню метод Delete, для скрытия и отображения пункта меню иcпользуют свойство Visible, для запрещения и разрешения пунктов меню свойство - Enabled. Для создание разделительной линии перед пунктом меню свойство - BeginGroup. Свойство Visible, Enabled и BeginGroup имеют значение соответственно True если меню видно и активно и отделено от других пунктов разделительной линией, и False если меню скрыто и не активно и не имеет разделительной линии. Для пунктов меню, которые не имеют подпунктов, через свойство FaceId можно задать код пиктограммы меню (см. Коды пиктограмм пунктов меню). Методом Ececutе пункта меню, можно эмулировать выбор соответствующего пункта меню левой клавишей мыши.

Если пункт меню не имеет подпунктов, то этому пункту можно задать свойство Controls.ShortcutText, которое выводит справа от подписи пункта текст, сообщающий о том, комбинация каких управляющих клавиш назначена для данного пункта меню (см. Назначение управляющих клавиш к пункту меню).

Через свойство OnAction можно задать имя процедуры, которая не имеет входных параметров. Данная процедура будет срабатывать при клике левой клавишей мыши по соответствующему пункту меню.

Если пункт меню скрыт, но свойство пункта меню BeginGroup имеет значение True, то разделительная линия скрытого пункта меню видна над последующим, за ним пунктами.

Можно удалять и скрывать пункты, начиная с первого уровня, при удалении и скрытии верхнего уровня, все подпункты меню расположенные в удаляемом пункте удаляются и скрываются вместе с ним.

Во входном параметре объекта Controls записывается либо подпись пункта меню, либо его индекс.

Подпрограммы ДобавитьПункты (см. Добавление пунктов меню) добавляют по два пункта меню (не помеченный пункт меню, и однотипный ему - помеченный). Причем в меню виден только один из вышеуказанных пунктов. Не помеченный пункт меню имеет подпись без пробела в конце, а помеченный не имеет пробел, завершающий подпись (на стандартные пункты меню это правило не распространяется).

Пример:

‘Удаление пункта меню первого уровня

CommandBars.ActiveMenuBar _

.Controls("Подпись пункта").Delete

‘Скрытие пункта меню второго уровня помеченного галочкой

CommandBars.ActiveMenuBar.Controls( _

"Подпись пункта первого уровня").Controls( _

"Подпись пункта второго уровня ").Visible =false

‘В третий подпункт меню добавлено сообщение о том, ‘какая комбинация управляющих

‘клавиш назначена данному пункту

CommandBars.ActiveMenuBar.Controls("первый") _

.Controls("Второй пункт").Controls("Третий") _

.Control.ShortcutText = "CTRL+M"

Переключатель в пункте меню

В пункте меню, который не имеет подпунктов, можно установить переключатель.

Подпрограммы ДобавитьПункты (см. Добавление пунктов меню) добавляют по два пункта меню (не помеченный пункт меню, и однотипный ему - помеченный). Причем в меню виден только один из вышеуказанных пунктов. Не помеченный пункт меню имеет подпись без пробела в конце, а помеченный не имеет пробел, завершающий подпись. Поэтому, необходимо менять в событийной процедуре этих пунктов меню свойство Visible на обратное:

‘переключатель пункта меню второго уровня

Sub Два()

With Application.CommandBars _

.ActiveMenuBar.Controls("мой")

.Controls("два").Visible = _

Not .Controls("два").Visible

.Controls("два ").Visible = _

Not .Controls("два ").Visible

End With

End Sub

‘переключатель пункта меню третьего уровня

Sub W()

With Application.CommandBars.ActiveMenuBar _

.Controls("мой").Controls("о&дин")

.Controls("w").Visible = _

Not .Controls("w").Visible

.Controls("w ").Visible = _

Not .Controls("w ").Visible

End With

End Sub

Если переключатель активен, то свойство меню Visible соответствующего пункта имеет значение True:

With Application.CommandBars.ActiveMenuBar.Controls(“Первый уровень”)

If .Controls(“Второй уровень“ + “ “).visible = _

true then

‘Переключатель включен

Else

‘Переключатель выключен

End If

End with

Примечание:

Все выше сказанное справедливо только для переключателей, которые были добавлены процедурами ДобавитьПункты. Стандартные пункты меню, имеющие переключатели, построены по другому принципу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]