Полная версия
Программирование для карманных компьютеров
События компонента ComboBox не радуют нас разнообразием. Событие Change наступает при программном или пользовательском редактировании строки ввода. Событие Click наступает при выборе элемента списка. При прокрутке списка наступает событие Scroll.
10. ListBox. Поскольку компонент ComboBox является комбинацией компонентов TextBox и ListBox, то все, относящееся к нему, будет верно и для компонента ListBox. Компонент ListBox отличается только реализацией. Он постоянно присутствует на форме в виде прямоугольной области, в которой размещен прокручиваемый список. Небольшое отличие состоит в том, что в компоненте ListBox возможно осуществлять выбор сразу нескольких элементов списка. Для этого необходимо установить свойству MultiSelect значение 1 для последовательного выделения элементов или значение 2 для произвольного выделения нескольких элементов списка одновременно.
11. HScrollBar. Компонент реализует горизонтальную полосу прокрутки. Используется для установки или для индикации значения, которое может плавно изменяться в широких пределах. Свойство Max позволяет задавать максимальное значение, которое может принимать свойство Value. Оно соответствует крайнему правому положению движка компонента. Свойство Min устанавливает минимальное значение, которое может принимать свойство Value. Свойство Value хранит значение, соответствующее текущему положению движка полосы прокрутки. Свойство LargeChange содержит значение смещения, которое соответствует большому шагу движка, при щелчке стилусом на полосе прокрутки. Свойство SmallChange соответствует малому шагу движка при нажатии стилусом на кнопке со стрелкой на полосе прокрутки. Кроме этого, для передачи значений от компонента Scrollbar в настраиваемое свойство используют события Scroll (происходит при перемещении движка) и Change (происходит при перемещении движка или изменении свойства Value программным путем).
12. VScrollBar. Компонент реализует вертикальную полосу прокрутки. В остальном компонент соответствует HScrollBar.
13. Timer. Единственным назначением этого компонента является генерация события Timer с интервалом, который устанавливается свойством Interval. Свойство Interval может быть установлено в пределах от 1 до 65 535. Когда надо приостановить работу таймера, следует установить его свойство Enabled в false.
Несмотря на то что встроенные компоненты eVB позволяют реализовать довольно широкий набор функций, можно заметить, что для создания полноценного приложения не хватает достаточно многих компонентов. На палитре нет элементов меню, нет операций с файлами, нет компонентов для работы с данными, представленными в табличном виде или в виде иерархического дерева. Даже графические изображения вывести нельзя.
Вся эта функциональность, безусловно, есть. Но реализована она в виде компонентов ActiveX. Компоненты ActiveX вынесены в отдельную группу, поскольку в самой среде eVB создать их невозможно. Visual Basic не умеет полноценно работать с COM-технологиями, но зато умеет эффективно использовать плоды их работы, то есть созданные ранее компоненты ActiveX.
Использование компонентов ActiveX
Расположение компонентов ActiveX
Если вы хотите использовать компоненты ActiveX в своем проекте, их надо соответствующим образом к этому проекту добавить. Для этого нужно выполнить команду меню Project ► Components или нажать сочетание клавиш Ctrl+T. На экран будет выведено окно добавления ActiveX-компонента к проекту (см. рис. 3.11). В этом окне нужно установить флажки напротив компонентов, которые нужно использовать в проекте, и нажать кнопку OK. Добавленные к проекту компоненты будут отображены в палитре компонентов. На рис. 3.24 показано, как на палитре появился элемент MenuBar Control.
Рис. 3.24. Компонент MenuBar, помещенный на палитру.
Общие вопросы использования компонентов ActiveX
В отличие от встроенных компонентов, которые для своей работы в проекте требуют только помещения на форму, компоненты ActiveX являются COM-объектами, размещены в отдельных библиотечных файлах и должны быть установлены и зарегистрированы на той машине, где будет запускаться приложение.
Для поставки и регистрации компонентов на пользовательском компьютере есть несколько способов. Самый простой способ заключается в том, что нужно поручить поставку и регистрацию самой среде eVB. Этот путь более всего подходит для отладки программ на эмуляторе. Чтобы среда скопировала файлы библиотек на пользовательскую машину и зарегистрировала их там, необходимо выполнить простую последовательность действий.
♦ Открыть окно настройки Project ► Project Properties.
♦ На вкладке General выбрать из списка Frequency значение Always, а в группе Component to Update установить флажок Project Components.
Эти настройки заставляют среду копировать все файлы проекта на компьютер и регистрировать компоненты ActiveX при каждом запуске. Если не добавлять постоянно файлы к проекту, то, запустив программу один раз, можно отключить эти настройки. Среда скопирует библиотеки, входящие в состав проекта, и зарегистрирует их.
Вторым способом установить и зарегистрировать компоненты ActiveX является использование инструмента Control Manager. Для этого нужно выполнить другую последовательность действий.
♦ Выполнить команду меню Tools ► Remote Tools ► Control Manager. На экран будет выведено окно, внешний вид которого показан на рис. 3.25.
Рис. 3.25. Окно инструмента Control Manager.
♦ В левой части окна выбрать устройство, на которое будет осуществляться поставка приложения (на рисунке это Pocket PC 2002 Emulation). В правой части окна нужно найти библиотеку, которую необходимо установить и зарегистрировать (на рисунке выбрана библиотека Microsoft CE Grid Control). На имени библиотеки нужно щелкнуть правой кнопкой мыши и выполнить команду контекстного меню Install to Target. Библиотека будет установлена и зарегистрирована.
Наконец, установку и регистрацию библиотеки можно провести в «ручном» режиме. Для этого библиотеку необходимо скопировать на устройство (при помощи инструмента File Viewer или ActiveSync), а затем зарегистрировать при помощи программы RegSvrCE.exe. Эта программа обычно располагается в каталоге C: \Windows СЕ Files\wce300\Pocket PC 2002\target\arm или в каталоге C: \Windows СЕ Files\wce300\Pocket PC 2002\target\x86. В каталоге arm находится программа для работы на компьютере, а в каталоге х8б – для работы на эмуляторе. Эту программу также необходимо скопировать на целевое устройство. Библиотеки компонентов также находятся в двух подкаталогах arm и х8б каталога C: \Program File\Windows СЕ Files\wce300\Pocket PC 2002\controls.
♦ После того, как программа RegSvrCE.exe и библиотека с компонентом, который необходимо установить, будут скопированы на целевое устройство, необходимо запустить программу RegSvrCE.exe. На экран будет выведено диалоговое окно, внешний вид которого показан на рис. 3.26.
Рис. 3.26. Окно программы RegSvrCE.exe.
♦ В этом окне необходимо ввести полный путь к библиотеке, включая имя файла, взвести флажок Register и нажать кнопку ОК.
♦ Если регистрация прошла успешно, на экран будет выведено соответствующее сообщение (рис. 3.27).
Рис. 3.27. Сообщение о регистрации компонента.
Данное сообщение не отображается поверх всех окон. Чтобы его увидеть, надо закрыть все приложения и вернуться в основное окно устройства.
Есть еще один способ регистрации компонентов на устройстве назначения. Компоненты могут регистрироваться при установке из поставочного пакета. Но этот процесс будет рассматриваться отдельно в следующих разделах.
Компонент MenuBar
Этот компонент предназначен для создания основного меню в программах для Pocket PC.
При помещении на форму данный компонент может сбить с толку тех, кто привык к визуальному дизайну. Выглядит он бедненько, и никаких средств настройки в инспекторе объектов обнаружить нельзя. В режиме дизайна компонент похож на кнопку, а не на меню. Тем не менее этот компонент позволяет создавать полнофункциональное основное меню.
Свойство Enabled позволяет делать меню недоступным в ходе выполнения приложения. Для этого достаточно лишь установить для свойства значение false. Если для свойства NewButton задать значение true, то на полосе меню появится новая кнопка с именем New. Использование этих свойств обсуждается в следующем упражнении.
Упражнение 3.6
1. Создать новый проект с формой и сохранить его в папке EnPhrase с именем EnPhrase.ebp.
2. Установить для свойства формы Caption значение Учим английские фразы, а значение свойства Height нужно сделать равным 7050. Такая длинная форма нужна для того, чтобы посмотреть, как работает компонент VScrollBar.
3. Добавить к проекту компонент Frame. Значения его свойств приведены в таблице 3.7.
Таблица 3.7. Свойства компонента Frame4. Добавить к проекту три компонента Label. Значения свойств этих компонентов приведены в табл. 3.8.
Таблица 3.8. Значения свойств компонентов Label1, Label2 и Label35. Добавить к проекту четыре компонента CommandButton. Значения свойств этих компонентов приведены в табл. 3.9.
Таблица 3.9. Значения свойств компонентов Command1, Command2, Command3 и Command46. Добавить к проекту компонент ListBox. Значения свойств этого компонента приведены в табл. 3.10.
Таблица 3.10. Значения свойств компонента ListBox7. В первом приближении дизайн программы завершен. В дизайнере форм он будет выглядеть так, как это показано на рис. 3.28.
Рис. 3.28. Дизайн программы.
8. Чтобы фрейм, который имеет размер больший, чем размер экрана, можно было прокручивать при помощи вертикальной полосы прокрутки, нужно написать обработчик события Change для компонента VScroll. Код этого обработчика приведен в листинге 3.12.
Листинг 3.12Private Sub VScroll1_Change()
Frame1.Top = -200 – VScroll1.Value
End Sub
Теперь можно запустить проект в эмуляторе и посмотреть, как при помощи полосы вертикального скроллинга происходит прокрутка экрана. Граничные значения свойства Value равны тому значению, на которое надо будет сдвигать фрейм в окне, и поэтому обработчик события получился простым. Начальное значение -200 нужно для того, чтобы край фрейма не отображался на форме и не портил общий внешний вид приложения.
9. Чтобы создать в приложении основное меню, необходимо сначала подключить к приложению соответствующую библиотеку. Для этого надо выполнить команду Project ► Components и установить флажок напротив компонента Microsoft Pocket PC MenuBar Control. Следует также задать настройки для автоматической регистрации компонента на устройстве при помощи команды Project ► Project Properties|Update Components ► Always|Component to Updates ► Project Components.
10. После того как библиотека будет добавлена к проекту, соответствующий значок появится на палитре компонентов, и компонент MenuBar можно будет поместить на форму. Для свойства NewButton нужно установить значение false. Запуск проекта в таком состоянии не покажет никаких изменений. Чтобы меню отобразилось на форме, необходимо настроить и создать объекты, соответствующие тому, что должно отображаться на форме. Это делается программным путем в обработчике события Form_Load().
11. Прежде чем писать обработчик события, нужно разобраться с компонентом MenuBar. Сам компонент представляет собой коллекцию команд меню (объект MenuBarMenu) и кнопок (объекты MenuBarButton), которая создается и отображается на нижней панели экрана Pocket PC. Кроме свойств объекта MenuBar, которые отображены в инспекторе, есть еще свойство Collection, содержащее индексированную коллекцию меню и кнопок, и свойство ImageList, содержащее ссылку на коллекцию изображений, которые будут отображаться на кнопках. События ButtonClick, MenuClick и NewClick предназначены для обработки событий щелчка на кнопках, пунктах меню и кнопки New соответственно.
Добавление компонентов к коллекции производится при помощи методов AddButton и AddMenu объекта Collection. Доступ к элементам коллекции может производиться как по индексу, так и по символьному ключу, который задается для каждого элемента коллекции в момент его создания.
12. Добавить к коду приложения обработчик события Form_Load(). Код обработчика приведен в листинге 3.13. В него добавлены комментарии, которые можно не вводить в код приложения. Они потребуются лишь для удобства рассмотрения этого фрагмента.
Листинг 3.13Rem 1
Dim mnuFile As MenuBarMenu
Rem 2
Dim mnuSep, mnuClrl, mnuClr2, mnuClr3 As MenuBarButtor
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. Переменная одна, значит, на панели команд устройства будет один пункт меню.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.