Rem 3
Set mnuFile = MenuBarl.Controls.АсШепиС'Файл", «mnuFile»)
Rem 4
mnuFile.Items.Add 1, «itFont», «Редактирование шрифта»
Rem 5
mnuFile.Items.Item(1). SubItems.Add 1, «itBold», «Полужирный»
mnuFile.Items.Item(1). SubItems.Add 2, «itItal», «Наклонный»
mnuFile.Items.Item(1). SubItems.Add 3, «itSize», «Размер»
Rem 6
mnuFile.Items.Item(1). SubItems.Item(3). SubItems.Add 1, В«it8В», В«* 8В»
mnuFile.Items.Item(1). SubItems.Item(3). SubItems.Add 2, В«it10В», В«10В»
mnuFile.Items.Item(1). SubItems.Item(3). SubItems.Add 3, В«it12В», В«12В»
Rem 7
mnuFile.Items.Add 2, "", ""
mnuFile.Items.Item(2). Style = mbrMenuSeparator
Rem 8
mnuFile.Items.Add 3, «itOpen», «Открыть»
Rem 9
mnuFile.Items.Add 5, "", ""
mnuFile.Items.Item(5). Style = mbrMenuSeparator
Rem 10
mnuFile.Items.Add 6, «itExit», «Завершить работу»
Rem 11
Set mnuSep = MenuBar1.Controls.AddButton(В«mnuSepВ»)
mnuSep.Style = mbrSeparator
Rem 12
Set mnuClr1 = MenuBar1.Controls.AddButton("1")
mnuClr1.Style = mbrButtonGroup
mnuClr1.Caption = " 1В»
Set mnuClr2 = MenuBar1.Controls.AddButton("2")
mnuClr2.Style = mbrButtonGroup
mnuClr2.Caption = " 2В»
Set mnuClr3 = MenuBar1.Controls.AddButton("3")
mnuClr3.Style = mbrButtonGroup
mnuClr3.Caption = " 3В»
Rem 13
Frame1.Top = -200
List1.Clear
End Sub
13. Теперь этот листинг надо детально рассмотреть. В качестве ссылок будут использоваться номера комментариев в тексте.
1) Объявляется переменная типа MenuBarMenu. Переменная одна, значит, на панели команд устройства будет один пункт меню.
2) Объявляются переменные типа MenuBarButton. Переменных этого типа четыре, значит, на панели команд устройства будет четыре кнопки.
3) Создается объект типа MenuBarMenu как элемент коллекции. При создании ему присваивается уникальный идентификатор mnuFile, задаем надпись, которая будет отображаться на кнопке меню, и этот объект связывается с переменной mnuFile.
4) Поскольку пункт меню может содержать в себе команды, коллекция команд содержится в свойстве Items. Она может быть пополнена при помощи вызова метода Add, что и происходит в этом фрагменте кода. Добавляются команды меню Файл и Редактирования шрифта. В качестве аргументов метода Add выступает индекс добавляемого элемента (1), уникальный ключ (itFont) и надпись, которая будет выведена в пункт меню – Редактированиешрифта. То, к какой именно команде меню относятся данные действия, определяется индексом, который указывается в скобках после свойства Item.
5) Каждая команда пункта меню может содержать вложенные меню. Для пополнения списка вложенных подменю у каждой команды существует свойство SubItems. У этого свойства есть метод Add. В данном фрагменте кода к пункту меню Редактирование шрифта добавляются три подменю – Полужирный, Наклонный и Размер.
6) К подменю Размер добавляются три вложенных подменю – 8, 10 и 12. Подменю 8 помечается звездочкой, чтобы указать текущее значение размера шрифта.
7) Следующая команда меню не имеет ни ключа, ни надписи, потому что во второй строке этого фрагмента кода для нее устанавливается стиль разделителя, и она просто будет отображать горизонтальную полосу в списке команд меню.
8) Добавляется команда Открыть.
9) Добавляется разделитель.
10) Добавляется команда Завершить работу.
11) Добавляется очередная РєРЅРѕРїРєР°. Для нее устанавливается стиль разделителя (mbrSeparator). Рто значит, что РЅР° панели команд эта РєРЅРѕРїРєР° будет отображена РІ РІРёРґРµ вертикальной черты.
12) Добавляются еще три РєРЅРѕРїРєРё. Для всех трех РєРЅРѕРїРѕРє задается стиль mbrButtonGroup. Ртот стиль объединит РєРЅРѕРїРєРё РІ зависимую РіСЂСѓРїРїСѓ, Рё пользователь сможет нажимать только РѕРґРЅСѓ РєРЅРѕРїРєСѓ РёР· РіСЂСѓРїРїС‹.
13) Работа с меню временно завершена. Теперь нужно установить положение фрейма на форме и очистить список.
14. Еще РѕРґРёРЅ фрагмент РєРѕРґР° свяжет зависимые РєРЅРѕРїРєРё СЃ процедурой установки фонового цвета РІ приложении. Ртот РєРѕРґ приведен РІ листинге 3.14.
Листинг 3.14
Private Sub MenuBar1_ButtonClick(ByVal Button As MenuBarLib.MenuBarButton)
Select Case Button.Key
Case "1"
Label1.BackColor = &H80000005
Label2.BackColor = &H80000005
Label3.BackColor = &H80000005
List1.BackColor = &H80000005
Case "2"
Label1.BackColor = &HC0FFFF
Label2.BackColor = &HC0FFFF
Label3.BackColor = &HC0FFFF
List1.BackColor = &HC0FFFF
Case "3"
Label1.BackColor = &HC0FFC0
Label2.BackColor = &HC0FFC0
Label3.BackColor = &HC0FFC0
List1.BackColor = &HC0FFC0
End Select
End Sub
В обработчик события ButtonClick передается копия объектной переменной Button, по ключу которой (Button.Key) можно понять, на какой кнопке был произведен щелчок. Далее в операторе выбора Select выбирается действие для соответствующей кнопки. В приведенном коде устанавливается фоновый цвет для компонентов, содержащих текст.
15. Еще один фрагмент кода, завершающий работу приложения при выборе команды меню Завершить работу, приведен в листинге 3.15.
Листинг 3.15
Private Sub MenuBar1_MenuClick(ByVal Menu As MenuBarLib.MenuBarMenu)
Select Case Menu.Key
Case В«itExitВ»
App.End
End Select
End Sub
В этом случае на одно событие MenuClick устанавливается оператор выбора Select (к концу работы над проектом он будет достаточно объемным) и по ключу производится выбор выполняемой команды.
16. Нужно снова запустить приложение и проверить работу созданного меню. Нажатие на кнопки должно приводить к изменению цвета в соответствующих компонентах, выбор пункта меню Завершить работу должен приводить к завершению работы приложения. Результат должен выглядеть так, как показано на рис. 3.29.
Рис. 3.29. Созданное меню.
17. Теперь нужно добавить к проекту еще один компонент ActiveX с наименованием Microsoft CE Image List Control. Его следует разместить на форме. Как и компонент MenuBar, компонент ImageList надо инициализировать и использовать программно, так как визуальных настроек у него нет.
18. Прежде чем настраивать ImageList, надо подготовить для него изображения. Для этого нужно РІ любом графическом редакторе создать три СЂРёСЃСѓРЅРєР°. Рто должны быть СЂРёСЃСѓРЅРєРё размером 16x16, 256 цветов, СЃ именами white.bmp, yellow.bmp Рё green.bmp. Р’ центре первого СЂРёСЃСѓРЅРєР° будет незакрашенный квадрат 14x14 пикселов, РІ центре второго – квадрат, закрашенный желтым цветом. Третий СЂРёСЃСѓРЅРѕРє должен содержать квадрат СЃ зеленой заливкой.