Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек 10 VB Создание меню.doc
Скачиваний:
6
Добавлен:
09.11.2019
Размер:
269.82 Кб
Скачать

Создание контекстных меню

Контекстные меню создаются точно так же, как и обычные меню – с помощью диалогового окна Menu Editor. Однако при этом есть одна хитрость. В исходном состояние контекстное меню должно быть скрыто, для того чтобы оно не отображалось в строке меню. Для этого нужно присвоить свойству Visible элемента управления контекстного меню верхнего уровня значение False. Любой элемент управления меню верхнего уровня можно использовать и в качестве контекстного, и в качестве обычного меню.

Методика добавления кода в процедуру обработки события Click для контекстного меню также будет немного отличаться от описанной выше для обычного меню. Поскольку контекстное меню невидимо в форме, для открытия окна кода с шаблоном процедуры обработки события нельзя просто щелкнуть на его элементе управления. Для этого придется щелкнуть на кнопке View Code, которая находится в окне свойств, либо дважды щелкнуть на форме. После этого следует выбрать из списка объектов нужный элемент меню.

Активизация контекстного меню

Чтобы отобразить контекстное меню на экране нужно вызвать метод PopUpMenu формы. Для этого укажите в программе сначала имя формы, в которой должно появиться контекстное меню, затем, через точку, название метода – PopUpMenu, и в качестве параметра передайте имя элемента управления контекстного меню.

Синтаксис метода PopUpMenu имеет вид:

object . PopupMenu menuname, flags, x, y, boldcommand

object – необязательный параметр. Имя объекта, содержащего меню. Если параметр пропущен, то используется имя текущей формы.

menuname – обязательный параметр. Имя всплывающего меню. Отображаемое меню должно содержать хотя бы один подпункт.

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

Константа

Значение

Описание

VbPopupMenuLeftAlign

0

(по умолчанию) левый край контекстного меню расположен в позиции х

VbPopupMenuCenterAlign

4

центр всплывающего меню расположен в позиции х

VbPopupMenuRightAlign

8

правый край всплывающего меню расположен в позиции х

VbPopupMenuLeftButton

0

(по умолчанию) пункт всплывающего меню реагирует только на нажатие левой кнопки мыши

VbPopupMenuRightButton

2

пункт всплывающего меню реагирует только на нажатие левой и правой кнопки мыши

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

boldcommand – необязательный параметр. Имя пункта меню, выделенного жирным шрифтом. Если параметр пропущен, то для всех пунктов контекстного меню используются обычный шрифт

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

Синтаксис процедуры обработки события нажатия кнопки мыши MouseUp имеет вид:

Private Sub object_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)

оbject – имя объекта, в котором возникает событие

button – передаёт в процедуру целое число, соответствующее нажатым кнопкам мыши:

vbLeftButton = 1 (левая), vbRightButton = 2 (правая), vbMiddleButton = 4 (центральная)

shift – передаёт в процедуру целое число, соответствующее нажатым клавишам на клавиатуре:

vbShiftMask = 1 (Shift), vbCtrlMask = 2 (Ctrl), vbAltMask = 4 (Alt)

x, y – передаёт в процедуру текущие координаты указателя.

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

Н иже приведён фрагмент кода, отображающего контекстное меню mnuFormat надписи lbl при нажатии правой кнопки мыши, которое содержит три пункта (mnuBold, mnuItalic, mnuUndeline), отображает с помощью флажков и позволяет изменять параметры форматирования текста надписи.

Private Sub lbl_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = vbRightButton Then 'если пользователь отпустил правую клавишу мыши

PopupMenu mnuFormat 'отображение контекстного меню

End If

End Sub

Private Sub mnuBold_Click()

lbl.FontBold = Not lbl.FontBold 'изменение толщины символов

mnuBold.Checked = Not mnuBold.Checked 'изменение флажка возле пункта меню

End Sub

Private Sub mnuItalic_Click()

lbl.FontItalic = Not lbl.FontItalic 'изменение наклона символов

mnuItalic.Checked = Not mnuItalic.Checked 'изменение флажка возле пункта меню

End Sub

Private Sub mnuUndeline_Click()

lbl.FontUnderline = Not lbl.FontUnderline 'изменение подчёркивания текста

mnuUndeline.Checked = Not mnuUndeline.Checked

End Sub

В тексте приведённого фрагмента кода, событие MouseUp используется для определения факта нажатия кнопки мыши. При возникновении этого события процедуре обработки передаются несколько дополнительных параметров. Один из них – параметр Button, в котором хранится информация о том, какая из кнопок мыши была нажата. Поскольку нам нужно, чтобы контекстное меню появилось только после щелчка правой кнопкой мыши. в программе проверяется значение параметра Button. Если он равен vbRightButton (это внутренняя константа Visual Basic, определяющая правую кнопку мыши), вызывается метод PopUpMenu для формы и ему передастся параметр mnuFormat. В результате на экране отобразится меню Format.