Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
120
Добавлен:
13.05.2015
Размер:
6 Мб
Скачать
☆

8.2. Всплывающее и динамическое меню

Можно создать всплывающее меню, которое появляется, например, после нажатия правой кнопки мыши на месте маркера мыши. Для этого создается обычное меню с одной командой на самом верхнем уровне под именем, например, Pm и со свойствомVisible=False;составляется проце­дура обработки события, нажатия правой кнопки мышки на форме:

Private Sub Form_MouseDown(Button as Integer, Shift as Integer,

X as Single, Y as Single)

‘Если нажата левая кнопка мышки, то вывод всплывающего меню

If Button=2 then PopUpMenu Form1.Pm ‘метод вывода всплывающего меню

End Sub

Динамическоеменюможно создать меню не при проектировании программы, а во время ее выполнения. Его достоинством является большая гибкость, так как число и содержание пунктов меню может быть самым различным в зависимости от текущего состояния программы. Рассмотрим пример программы его создания (рис. 8.2.1).

Пункт Добавить(под именем Add) служит для включения в конце меню нового пунктаПункт 1 (Пункт 2, ...). ПунктУдалить (Del) исключ­ает пункт из последних добавленных пунктов. ПунктВыход(Exit) завершает работу программы. После выбора добавленного пункта, на­пр­и­мер Пункт 1,выводится окно сообщения с текстом “Выбран пункт 1”. Создадим новый проект и выполним командуTools/Menu Editorи построим меню (рис. 8.2.2).

При формировании пункта Bar с разделительной чертой “-“ в поле Indexукажем число ноль, что означает создание массива под именем пункта меню (в нашем случае - Bar). Пока массив состоит из одного элемен­та Bar(0) - разделительной черты. В дальнейшем он будет исполь­зоваться для формирования пунктов меню.

Рис.8.2.1. Вид меню при выполнении и проектировании программы

Рис. 8.2.2. Динамическое меню

Составим следующие процедуры:

‘(General) (Declarations) ‑ раздел глобальных объявлений формы

‘объявление переменной ‑ указателя на последний пункт в массиве пунктов

Dim indexlastBar As Integer

Private Sub Form_Load() ‘процедура загрузки формы

indexlastBar = 0 ‘указатель последнего элемента приравнять нулю.

del.Enabled = False

End Sub

Private Sub Add_Click() ‘добавление нового пункта меню

indexlastBar = indexlastBar + 1 ‘номер последнего пункта увеличивается на 1

Load bar(indexlastBar) ‘создание нового пункта под номером indexlastBar

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

bar(indexlastBar).Caption = ”Создан новый пункт ” & indexlastBar

del.Enabled = True ‘разрешение использовать пункт “Удалить”

End Sub

Private Sub del_Click() ‘Удаление последнего пункта меню

Unload bar(indexlastBar) ‘удалить последний элемент в массиве пунктов меню

indexlastBar = indexlastBar ‑ 1 ‘номер последнего пункта уменьшается на 1

del.Enabled = indexlastBar > 0 ‘разрешение использовать пункт “Удалить”

End Sub

Private Sub bar_Click(Index As Integer) ‘выполнение нового пункта

MsgBox ”Выбран пункт ” & Index ‘вывод сообщения выбранным пунктом

End Sub

Private Sub Exit_Click() ‘завершение работы программы

End

End Sub

8.3. Панель инструментов (ToolBar)

Панель содержит различные кнопки (компоненты Microsoft Win­dows Common Controls 6.0).

Специфичные свойства

Key‑ имя нажатой кнопки на пенели.

ButtonMenus‑ семейство объектовButtonMenu(элементов меню), появ­ляю­щих­­ся при нажатии кнопок при условииStyle=tbrDropdown.

DisabledImageList‑ имя объектаImageListс изображениями, когда кнопка недоступна.

HotImageList‑ имя объектаImageListс изображениями, отображаемыми при открытии меню.

Специфичные события

ButtonDropDown ‑ происходит после щелчка на стрелочке объектаButton, которая появляется, когдаStyle=tbrDropDown. Событие может быть ис­поль­зовано для определения набора пунктов открывающегося меню.

ButtonMenuClick‑ происходит после щелчка мышью на объектеButtonMenu.

Примерсоздания панели с двумя кнопками: создания и открытия с графическими изображениями на кнопках (рис. 8.3.1).

1. Нажмите клавишу ^Tи выберите компоненты Microsoft Windows Common Controls 6.0.

2. Поместите c панели элементов объект ToolBarна форму и его свойствуAlignприсвойте значение 1 (привязка панели к верхней стороне формы), нажмите кнопку с троеточием свойстваCustomи перейдите на страницуButtonsв появившемся окнеProperty Pages.

3. Нажмите кнопку Insert Buttonдля добавления новой кнопки со свойствамиIndex=2 (номер кнопки),Key=New (логическое имя кнопки),Style=0-tbrDefault. СвойствоCaption(надпись кнопки) не будем исполь­зовать, так как все кнопки графические и без надписи.

4. Нажмите кнопку Insert Buttonдля добавления новой кнопки со свойствамиIndex=3,Key=Open,Style=0-tbrDefault.

5. Нажмите кнопку OK, и на форме будет панель с двумя кнопками.

Для размещения рисунков на поверхности кнопок следует раз­мес­тить на форме список изображенийImageList(п. 6.24):

1. Наж­ми­те кнопку с троеточием свойства Customэтого объекта и в по­явив­­шем­ся ок­не откройте страницуImages(рис. 8.3.2). Нажмите кнопкуInsertPictureи выбе­рите файл Graphics\Bitmaps\Tblr_w95\New.bmp с изо­бра­­же­нием чистого листа. Снова нажмите кнопкуInsert Pictureи выбе­ри­те файл Graphics\Bitmaps\Tblr_w95\Open.bmp с изображением желтой пап­ки.

2. Нажмите кнопку OK.

3. Выделите объект ToolBar1и нажмите на кнопку с троеточием у свойства Custom; на странице General укажитеImageList=ImageList1.

4. Перейдите на страницу Buttonsи задайтеIndex=2,Image=1; нажмите кнопкуApply, затем задайтеIndex=3,Image=2.

Рис. 8.3.1. Окно свойств кнопок панели Рис. 8.3.2. Окно списка рисунков

5. Нажмите клавишуOK. Панель готова (рис. 8.3.3).

Рис. 8.3.3. Панель инструментов

Для обслуживания такой панели составим процедуру:

Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button)

‘Button.Key‑ значение свойстваKeyкнопки панели, по которой щелкнули

If Button.Key = “New” Then MsgBox (“Создание”) Else MsgBox (“Открытие”)

End Sub