Оценить:
 Рейтинг: 3.6

Программирование для карманных компьютеров

Год написания книги
2009
<< 1 ... 10 11 12 13 14 15 >>
На страницу:
14 из 15
Настройки чтения
Размер шрифта
Высота строк
Поля

Параметр cancel передается не по значению, а по ссылке, значит, он будет возвращен приложению. Этот параметр, установленный в нулевое значение, позволяет форме быть деактивированной. Если же установить его в любое, отличное от нуля, значение, то форма останется активной и видимой.

ВНИМАНИЕ!

Несмотря на то что событие Unload генерируется при установлении параметра cancel = 0, сама форма не выгружается из памяти.

Другие встроенные компоненты

На рис. 3.23 изображена палитра встроенных компонентов eVB. Каждый из компонентов на рисунке помечен выноской. Краткое описание каждого из компонентов в соответствии с номером на выноске приведено в соответствующем списке.

Рис. 3.23. Набор встроенных компонентов eVB.

1. Shape. Компонент предназначен для вывода на форму закрашенной плоской фигуры (круг, овал, прямоугольник, квадрат, квадрат или прямоугольник со сглаженными углами). Выбор типа фигуры осуществляется установкой свойства Shape. Благодаря наличию методов Move, Refresh и ZOrder возможно манипулирование объектом Shape во время выполнения программы. Объект Shape не может служить контейнером для других объектов. События у объекта Shape отсутствуют.

2. Line. Компонент выводит на форму отрезок прямой заданного цвета, толщины и длины. Отрезок задается координатами двух точек. Метод Move у объекта Line отсутствует, но перемещение отрезка во время выполнения возможно при помощи изменения его координат.

3. Label. Компонент обеспечивает отображение на форме многострочного текста. Сам текст задается установкой свойства Caption и может иметь в длину до 1024 символов. На отображение текста влияют свойства Autosize (компонент изменяет свой размер согласно объему введенного текста) и WordWrap (введенный текст, достигнув горизонтальной границы компонента, переносится на следующую строку по границе слова). Также возможна установка параметров шрифта при помощи изменения свойства Font и параметров выравнивания установкой значения свойства Alignment. Компонент Label реагирует на событие Change, которое возникает при программном изменении свойства Caption. Для управления расположением компонента на форме во время выполнения можно использовать методы Move, Refresh и ZOrder.

4. TextBox. Компонент обеспечивает вывод на форму однострочного или многострочного редактируемого текста. Текст присутствует в компоненте в качестве значения свойства Text. Свойство MultiLine позволяет переключаться между однострочным и многострочным режимом. В однострочном режиме длина строки ограничена 2048 символами, в многострочном режиме общий объем текста может достигать 32 Кбайт. Возможно задание параметров шрифта (свойство Font) и выравнивания текста (свойство Alignment). Если компонент находится в многострочном режиме, то наличие вертикальной и горизонтальной полос прокрутки можно задать установкой свойства ScrollBars. В компоненте Text возможно выделение фрагментов при помощи сочетания клавиш виртуальной клавиатуры или стилуса, а также вырезание, копирование, удаление и вставка из буфера. При осуществлении этих операций программным путем хорошим подспорьем в работе будут свойства SelLength (количество выделенных символов), SelStart (индекс символа, с которого начато выделение) и SelText (строка, содержащая выделенный текст). Естественно, основным предназначением этого компонента является ввод текста с виртуальной клавиатуры. Поэтому компонент реагирует на такие события клавиатуры, как нажатие и отпускание клавиш (KeyDown, KeyPress и KeyUp). К сожалению, эти три события в eVB не используются по отдельности. Причины этого досадного недоразумения излагались в комментариях к упражнению 3.5.

5. Frame. Компонент-контейнер, который позволяет объединять другие видимые компоненты в функциональные группы. Событий не имеет. Свойства компонента в особых комментариях не нуждаются. Чаще всего в компонент Frame помещают несколько компонентов OptionButton, которые при этом автоматически объединяются в группу.

6. CommandButton. Командная кнопка, главное назначение которой – генерировать событие щелчка на кнопке. Это событие с именем Click является основным для компонента CommandButton.

7. CheckBox. Компонент, обеспечивающий индикацию или выбор состояния одного из нескольких независимых параметров. Основным свойством компонента является свойство Value. Значение 0 указывает, что компонент не выбран, значение 1 указывает, что пользователь взвел флажок, а значение 2 свидетельствует о том, что компонент не активен. Основным событием компонента CheckBox является событие Click, которое возникает при изменении значения свойства Value, вне зависимости от того, программным путем меняется это значение или в результате нажатия стилусом.

8. OptionButton. Компонент, обеспечивающий выбор только одного из нескольких зависимых параметров, объединенных в группу. Если не считать функционального назначения, то свойства компонента OptionButton практически не отличаются от свойств CheckBox. Еще одно важное отличие состоит в том, что любой контейнер, в который помещаются несколько компонентов OptionButton, объединяет их в зависимую группу.

9. ComboBox. Выпадающий список, обеспечивающий выбор одной из строк списка, или ввод нужного значения непосредственно в строку редактирования. Основным свойством компонента является набор значений. Этот набор можно ввести в режиме дизайна, нажав кнопку, которая появляется в поле значений при выборе свойства Custom. В окне редактора свойств для каждого элемента списка можно ввести строковое значение (ListData) или целочисленное значение (ItemData). Список выводится только во время выполнения программы, причем в списке отображается только набор строк ListData, а набор значений ItemData служит для связи списка с другими объектами. Свойство Style позволяет разрешить или запретить непосредственный ввод значений в строку редактирования. Редактирование текста в строке производится при помощи тех же свойств (SelLength, SelStart, SelText), что и в компоненте TextBox. Доступ к элементам списка в момент выполнения программы осуществляется при помощи дополнительных свойств. Свойство List возвращает строку, соответствующую указанному индексу. Свойство ListCount возвращает количество элементов в списке. Свойство ListIndex возвращает индекс выбранного элемента списка. Свойство NewIndex возвращает индекс последнего добавленного элемента списка, а свойство TopIndex возвращает индекс первого видимого элемента в прокручиваемом списке. При последовательном изменении значения этого свойства можно программным путем осуществлять прокрутку списка. Наконец, свойство Sorted при установке значения true вынуждает компонент отображать элементы списка отсортированными в алфавитном порядке. Для манипуляций элементами списка во время выполнения программы необходимо использовать методы AddItem и RemoveItem, которые добавляют и удаляют элементы списка с указанным индексом. Метод Clear позволяет очистить список.

События компонента 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.
<< 1 ... 10 11 12 13 14 15 >>
На страницу:
14 из 15