Читать книгу «Программирование для карманных компьютеров» онлайн полностью📖 — Владимира Волкова — MyBook.
image

Использование компонентов 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. Свойства компонента Frame

4. Добавить к проекту три компонента Label. Значения свойств этих компонентов приведены в табл. 3.8.

Таблица 3.8. Значения свойств компонентов Label1, Label2 и Label3

5. Добавить к проекту четыре компонента CommandButton. Значения свойств этих компонентов приведены в табл. 3.9.

Таблица 3.9. Значения свойств компонентов Command1, Command2, Command3 и Command4

6. Добавить к проекту компонент ListBox. Значения свойств этого компонента приведены в табл. 3.10.

Таблица 3.10. Значения свойств компонента ListBox

7. В первом приближении дизайн программы завершен. В дизайнере форм он будет выглядеть так, как это показано на рис. 3.28.

Рис. 3.28. Дизайн программы.


8. Чтобы фрейм, который имеет размер больший, чем размер экрана, можно было прокручивать при помощи вертикальной полосы прокрутки, нужно написать обработчик события Change для компонента VScroll. Код этого обработчика приведен в листинге 3.12.

Листинг 3.12

Private 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.13

Rem 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. Переменная одна, значит, на панели команд устройства будет один пункт меню.