|
Создание приложений для карманных компьютеров
Со стремительным развитием компьютерных технологий на рынке начало
появляться
множество моделей карманных компьютеров. Эти
компьютеры еще иногда называют
PDA (personal
digital
assistant). Они выполняют множество задач, среди которых организация
контактов и работа с электронной почтой. Карманные компьютеры
представляют интерес для разработчиков программ
VB.
На рис. 27.1 показан обычный карманный компьютер, выглядящий
крошечным в сравнении персональным компьютером.
В
карманных компьютерах используется упрошенная операционная система
Windows, известная как
Windows
СЕ.
Эта система по своим функциям очень похожа на обычный
Windows, поэтому переход на нее не вызовет особых трудностей. В дополнение,
Microsoft
создала для разработчиков
VB
отдельный пакет
eMbedded
Visual
Basic (MVB) для создания приложений под ОС
Windows
СЕ. В этой главе мы рассмотрим процесс создания приложений в
MVB
для работы в карманных компьютерах под
управлением
Windows
СЕ.

Рис. 27.1. Разработчики VB легко могут создать приложения для
таких карманных компьютеров
Установка
eMbedded
Visual
Basic
Пакет
MVB
представляет собой отдельную, независимую
редакцию
Visual
Basic. Этот пакет устанавливается отдельно от
Visual
Studio .NET.
Во время создания этой книги последней версией пакета являлась
версия 3.0, которую абсолютно свободно можно загрузить с
Web-узла
Microsoft. На рис. 27.2 показана среда разработки
eMbedded
Visual
Basic.
Для загрузки
MVB,
на узле
www.microsoft.com/mobile
обратитесь к ссылке
Developer.
Как и другие редакции
VB, среда разработки содержит
Project
Explorer,
Forms
Designer
и
Toolbox. Несмотря на некоторые отличия и ограничения, вы
можете использовать все известные концепции обычного
VB
для того, чтобы начать работать с пакетом.
Использование эмулятора карманного компьютера

Рис. 27.2. Среда разработки MVB знакома
программистам Visual Basic

Рис. 27.3. Эмулятор карманного компьютера можно
выключить, щелкнув кнопку питания на его панели на экране
Вам может показаться, что теперь для работы нужно
немедленно покупать карманный компьютер. Однако это далеко не так.
При инсталляции
MVB вы можете также установить
Software
Development
Kit (SDK)
для карманных компьютеров. Он включает в себя
эмулятор,
моделирующий карманный компьютер на вашем рабочем
столе. Для тестирования этого эмулятора выберите программную группу
Microsoft
Platform
SDK
for
Pocket
PC
и выберите в ней
Desktop
Pocket
PC
Emulation.
Вы увидите экран, похожий на рис. 27.3.
Во время написания книги эмулятор карманного компьютера не работал
под управлением
Windows
95/98, а только а системе
Windows
2000.
Когда вы запускаете приложение в
MVB, ваша форма отображается в окне эмулятора, а не
на рабочем столе самой
Windows.
Поиск справочной информации
В последующих разделах будут рассмотрены
основы создания приложений для карманных компьютеров. Однако
если вы решили всерьез заняться разработкой программдля карманных компьютеров, то вам потребуется справочный
материал по конкретным
вопросам. В
поисках информации вы можете обратиться к следующим ресурсам:
•
Файлы помощи. Выберите
Contents
в меню
Help
и вы увидите обширный раздел помощи,
установленный на вашем диске;
•
API
Text
Viewer. Откройте
программную группу
Tools
и отыщите в ней
API
Text
Viewer. Он содержит список
функций операционной системы
Windows
СЕ, которые вы можете
вызвать в своей
программе;
•
Группы новостей в Интернет. Установите вашу
программу чтения новостей на узел
msnews .microsoft.
com,
в котором вы сможете найти различные группы новостей по
тематике карманных
компьютеров;
•
Web-узлы. Кроме указанной выше области по тематике карманных
компьютеров на
официальном узле компании
Microsoft,
вы можете найти множество других узлов, содержащих
советы и примеры программ. Вот некоторые из них:
www.pocketpcpassion.com
и
www.purece.com.
Создание примера приложения
В настоящем разделе показывается построение
интерфейса пользователя, используя
формы
MVB.
В процессе создания приложения мы создадим программу, работающую на
карманном компьютере подобно проекту
Windows
Application
на настольном компьютере. Наше
приложение предназначается для осуществления складского учета. В
процессе того, как экспедиторы погружают или разгружают
продукцию на складе, менеджеры склада
вводят данные в карманный
компьютер. Затем, когда менеджер возвращается в офис, введенная
информация с помощью настольного компьютера автоматически
подгружается в центральную
базу данных. Для начала создания приложения, запустим на выполнение
MVB
и выберем в меню создание нового проекта
Windows
СЕ. В этом разделе будет написан
текст программы, предназначенной для работы на карманном компьютере.
В следующих разделах
будет рассмотрен вопрос передачи данных из карманного компьютера в
базу
данных настольного компьютера.
Разработка интерфейса пользователя
Карманный компьютер имеет значительно меньший экран,
чем обычный компьютер. В связи с
этим количество доступного для размещения форм пространства в
значительной мере ограничено. Карманный компьютер, показанный
на рис. 27.1, имеет разрешение экрана 240x320 пикселей, что намного
меньше, чем на обычном компьютере. В дополнение, карманный компьютер
не имеет присоединенной к нему клавиатуры, поэтому, когда на
его экране появляется
виртуальная клавиатура, часть формы может оказаться ею закрытой.
Исходя из этого, при разработке интерфейса пользователя нужно
применить более тщательный подход к этому вопросу. Как мы
увидим, элементы
MVB
содержат достаточно
функций для разработки интерфейса пользователя.
Создание основных элементов
Для нашего
примера приложения складского учета мы построим интерфейс,
позволяющий
вводить минимальные данные в форму. Для
создания формы выполните следующие действия:
1.Установите имя формы
в
frmMain, а свойство
Caption
в
Inventory
Maintenance.
2.
Задайте именем проекта
prjInventory.
3.
Добавьте в форму элементы, перечисленные в таблице
27.1, установив соответственно и
их свойства
Name
и
Caption.
Таблица
27.1.
Установки
элементов
для
примера
приложения
|
Тип
элемента |
Свойство
Name |
Свойство
Caption |
|
Label |
IblDriver |
Driver Name |
|
Label |
IblProduct |
Product |
|
Label |
IblQuantity |
Quantity |
|
ComboBox |
cmbDriver |
|
|
ComboBox |
cmbProduct |
|
|
Timer |
trarQuantity |
|
|
TextBox |
txtQuantity |
0 |
|
OptionButton |
optShipped |
Shipped |
|
OptionButton |
optReceived |
Received |
|
CommandButton |
cmdPlus |
+ |
|
CommandButton |
cmdMinus |
- |
|
CommandButton |
cmdConfirm |
Confirm |
4.
Установите свойство
Value
для элемента
optReceived
в
True.
5.
Установите свойство
Enabled
для
tnnQuantity
в
False.
6.
Установите свойство
Text
элемента
cmbDriver
и
cmbProduct
в пустую строку.
Дополнительные элементы
Все элементы, перечисленные в таблице 27.1, включены
в панель инструментов по умолчанию. Однако, некоторые другие
элементы доступны посредством пункта
Components
в меню
Project. В нашем примере мы будем
использовать два таких элемента. Для их установки выполните
следующие действия:
1.В
меню
Project
выберите
Components.
В списке выберите
Microsoft CE ListView Control
и
Microsoft CE File System Control.
Нажмите кнопку ОК диалогового окна.
2.
Добавьте элемент
ListView
в форму. Установите его свойство
Name
в
IvData.
3.
Добавьте элемент
FileSystem
в форму. Установите его свойство
Name
в
fsMain.
4.
В конструкторе проекта щелкните правой кнопкой на
элементе
frmMain
и выберите пункт
View
Code. Добавьте следующие строки для события
Load
этой формы:
LvData.View_lvwReport
LvData.ColumnHeaders.Add,
,"Entered",750
LvData.ColumnHeaders.Add,
,"Driver",1000
LvData.ColumnHeaders.Add,
,"Qty.",500
LvData.ColumnHeaders.Add,
,"Product",900
5. Расположите элементы на форме так, как показано на
рис. 27.4.
Далее в процессе написания программы мы
увидим, как можно использовать элемент
FileSystem
для работы с файловой системой карманного компьютера, и элемент
ListView —для отображения данных в
табличном виде.
Динамическое изменение размеров формы
После создания всех элементов формы необходимо
написать текст программы, позволяющий интерфейсу пользователя
работать в соответствии со средой карманного компьютера. Когда мы
просматривали события, имеющиеся в форме, то отметили наличие
некоторых особенностей,
связанных со средой СЕ:
•
событие
OKClick. Отметим, что процедура обработки события
OKClick
автоматически
заполняется при выполнении выражения
App.End. Приложения для карманных ком
пьютеров имеют стандартную кнопку
ОК в заголовке формы, предназначенную для за
крытия текущего окна.
•
Событие
SIPChange. Это свойство можно использовать
для ввода текста программы,
предназначенного для изменения размещения элементов формы и ее
размеров при по
явлении на экране эмулятора клавиатуры.

Рис. 27.4. Вы можете размещать элементы и устанавливать их
свойства в MVB так же, как это вы делали в среде VB.NET
Клавиатура и средства распознавания рукописного
текста известны как
программная
панель
ввода (SIP).
Наряду с размерами, она является наиболее очевидным различием между
карманным и настольным компьютером. Обрабатывая событие
SIPChange
в программе, можно программно управлять
размещением формы при появлении на экране
SIP. Для добавления этих
функций в наш пример, выполним следующие действия:
1.Убедимся,
что свойство
FormResize
формы установлено в
vbFormFullSIResize.
Это значение обеспечивает
разворачивание формы на весь экран и автоматическое изменение
размеров при отображении
SIP.
2.
Добавим следующую строку в событие
SIPChange:
LvData.Heigth=frraMain.Heigth-1500
Эта строка указывает табличному элементу установить
свою высоту на 1500 пикселей меньше обшей высоты формы при
возникновении события
SIPChange.
Хотя управление
появлением
SIP
целиком возложено на пользователя,
установив свойство
siPBehavior формы, разработчик
получает управление появлением
SIP
на экране непосредственно из программы.
Также можно установить автоматический режим для
SIP,
отображая
ее при получении фокуса определенными элементами формы.
Ввод текста пользователем
В нашем примере пользователь должен иметь возможность заполнения
поля количества товара, принятого на склад или отпущенного с него.
SIP
может использоваться для ввода текста в любое текстовое поле. Однако
ввод данных с миниатюрного эмулятора клавиатура не всегда удобен,
особенно условиях напряженной работы склада. Для решения этой
проблемы мы поместили в нашу форму две дополнительные кнопки,
увеличивающие и уменьшающие количество в текстовом поле.
Программирование функций этих кнопок сводится к написанию одной
строки для события
Click. Однако изменение
значения набольшую величину потребует многократного нажатия на эти
кнопки, что так же не удобно.
Если у вас установлены цифровые часы, то можете заметить, что,
удерживая кнопку изменения чисел в нажатом состоянии, можно
изменять скорость этих изменений. Добавив в программу несколько
дополнительных строк и элемент таймера, можно добавить такую функцию
и в наш пример. Для выполнения этой задачи добавьте текст листинга
27.1 в главную форму.
Листинг
27.1.
ppcdemo.zip
—
быстрое
изменение
количества
Dim m_nlncrement As Integer
Private Sub cmdMinusMouseDown (ByVal Button As
Integer, ByVal Shift As Integer,_
ByVal X As Single, ByVal
У
As Single)
m_nlncrement = -1
tmrQuantity.Interval = 300
tmrQuantity.Enabled = True
End Sub
Private Sub cmdMinus_MouseUp{ByVal Button As
Integer, ByVal Shift As Integer,_
ByVal X As Single, ByVal Y As Single)
tmrQuantity.Enabled = False
End Sub
Private Sub cmdPlus_MouseDown(ByVal Button As
Integer, ByVal Shift As Integer,_ ByVal X As Single, ByVal Y
As Single)
m_nlncrement = 1
tmrQuantity.Interval = 300
tmrQuantity.Enabled = True
End Sub
Private Sub cmdPlus_MouseUp(ByVal Button As
Integer, ByVal Shift As Integer,_ ByVal X As Single, ByVal
Y As Single)
tmrQuantity.Enabled = False
End Sub
Private Sub tmrQuantity_Timer()
txtQuantity.Text = CLng(txtQuantity.Text) + m_nlncrement
If CLng(txtQuantity.Text) < 0 Then txtQuantity.Text = 0
tmrQuantity.Interval = tmrQuantity.Interval - 50
If tmrQuantity.Interval < 50 Then
m_nlncrement = m_nlncrement * 5
tmrQuantity.Interval = 400
End If
End Sub
В листинге 27.1 задействован элемент таймера, который
находится в активном состоянии,
пока нажата клавиша мыши (аналогично, в карманных компьютерах кнопка
нажимается либо пальцем, либо указкой). Уменьшением значения
свойства
Interval
таймера и увеличением
значения шага изменения значения
можно добиться постепенного прироста скорости изменения
значений в зависимости от времени удержания кнопки в нажатом
состоянии.
Тестирование интерфейса пользователя
Перед тем, как продолжить написание программы,
протестируем основную часть построенного интерфейса. Запустим
на выполнение приложение. Для этого необходимо указать выходной файл для нашего приложения и тип вывода на экран. Мы
будем использовать диалоговое окно свойств проекта, показанное на рис.
27.5. Отобразим это окно, выбрав в меню
Project
пункт
Properties.
Установим в комбинированном списке
Run
On
Target
значение "Pocket
PC
Emulation"
и зададим путь в текстовом поле: \Windows\Start
Menu\
Inventory,
vb.
После изменения установок согласно
рис. 27.5, нажмите кнопку
Start,
и приложение появится в окне эмулятора карманного компьютера, как
показано на рис. 27.6

Рис. 27.5. Способ вывода можно указать тип вывода непосредственно
в окне свойств проекта МVВ

Рис. 27.6. Koгдa вы запускаете приложение в МVВ,
то можете производить его работу в эмуляторе карманного компьютера
Протестируем функции интерфейса пользователя,
Вначале нажмем на пиктограмму клавиатуры для отображения
SIP, затем проверим скорость изменения значений
количества при удержании кнопок + или -. Чтобы завершить процесс
отладки, нажмите кнопку ОК эмулятора или кнопку
Stop
в
MVB.
Каждый раз, когда вы запускаете проект для карманного
компьютера на выполнение в эмуляторе
или на реальном устройстве, файлы копируются в целевую директорию;
так что можно
выполнять проект непосредственно из меню
Start
устройства
Функции работы с базами данных
ADOCE
Теперь, когда создан интерфейс пользователя для
нашего примера, необходимо добавить в приложение функции передачи
информации в приложение для карманного компьютера и из него. (В
данном примере мы предполагаем отсутствие соединения карманного
компьютера с локальной сетью. Если же таковое существует, то
требуется создать прямое соединение приложения с базой данных или
Web.) Операционная система
Windows СЕ содержит минимальную версию
ADO |