Чтение онлайн

ЖАНРЫ

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

Волков Владимир

Шрифт:

К сожалению, если мы выберем из списка событие, к примеру KeyDown, то получим сообщение об ошибке Method \'StatusBar1_ParentChanged\' cannot handle Event \'KeyDown\' because they do not have the same signature. Это связано с тем, что в обработчики разных событий передаются разные аргументы и сигнатура не может быть одинакова для всех обработчиков. В этом случае надо щелчком мыши в редакторе кода перевести текстовый курсор в слово KeyDown, и правой кнопкой мыши вызвать контекстное меню. Из контекстного меню необходимо выбрать команду Go To Definition, при помощи которой курсор будет перенесен в место определения данного события в окне Object Browser (рис. 6.9).

Рис. 6.9. Событие KeyDown в окне Object Browser.

Из нижней части окна, в которой описано событие и его сигнатура, можно легко скопировать аргументы и затем перенести их в код программы, заменив ими существующие аргументы процедуры обработки события. После этого программа будет нормально скомпилирована и запущена. Видимые и невидимые элементы управления

Большинство

элементов управления во время дизайна формы выглядят так же, как и во время выполнения программы. Разработчик помещает их на форму и позиционирует при помощи мыши. При помощи мыши разработчик может изменять их размер. Но есть несколько элементов управления, которые или невидимы во время выполнения программы, или поведение и отображение их во время выполнения отличается от поведения и отображения во время дизайна. К ним относятся: MainMenu, Timer, ImageList, ContextMenu, OpenFileDialog, SaveFileDialog и InputPanel. При добавлении к проекту эти компоненты не помещаются на форму, а располагаются на специальной области в нижней части дизайнера форм (рис. 6.10).

Рис. 6.10. Размещение невидимых элементов управления на специальной панели.

Упражнение 6.2

1. Создать новый проект Smart Device Application и сохранить его с именем MyTime. Тип приложения должен быть Windows Application, а платформа – Pocket PC, как и в предыдущем упражнении. В среде будет создан новый проект.

2. В графическом редакторе нужно создать несколько рисунков и сохранить их в каталоге программы с именами, указанными в табл. 6.4.

Таблица 6.4. Рисунки для приложения

3. Выделить форму в дизайнере форм щелчком мыши по заголовку. В правой нижней части рабочего стола Visual Studio нужно найти окно инспектора свойств Properties, предназначенное для редактирования свойств выделенного объекта. Если щелчок на форме не выделил ее, то можно просто выбрать имя формы Form1 из выпадающего списка в верхней части окна Properties. В инспекторе свойств нужно найти свойство Text и изменить его значение, введя строку Мое время. Соответствующая надпись должна появиться в заголовке формы.

4. Прежде чем продолжать заниматься дизайном и кодированием проекта, необходимо настроить некоторые его параметры. Из пункта меню Project следует выбрать команду MyTime Properties. Затем нужно выделить папку Common Properties и выбрать в этой папке группу настроек Device. В правой части окна в строку Output file folder следует ввести значение \Windows\Start Menu, а затем нажать кнопку OK. Таким образом указывается папка, в которую на эмуляторе или устройстве будет осуществляться поставка приложения.

5. На следующем этапе создается пиктограмма приложения. Для этого в том же окне настроек параметров проекта и в той же папке Common Properties нужно выбрать группу настроек Build. С правой стороны в поле Application Icon нужно нажать кнопку редактирования и загрузить графический файл с полным именем C: \Program Files\Microsoft Visual Studio.NET 2003\Common7\Graphics\icons\Misc\ CLOCK06.ICO. Загруженный значок будет скопирован в каталог программы. В окне Solution Explorer нужно выбрать этот файл, а затем в окне Properties установить для него значение свойства Build Action равным Embedded Resource. Это делается для того, чтобы значок был вкомпилирован в код программы, а не поставлялся в виде отдельного файла.

6. На форме нужно разместить элементы управления и установить при помощи инспектора свойств значения их свойств согласно табл. 6.5.

Таблица 6.5. Элементы управления основной формы

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

Рис. 6.11. Форма с размещенными элементами управления.

7. Поместить на форму элемент управления ListView. Задать для него значения свойств, приведенные в табл. 6.6. Таблица 6.6. Свойства элемента ListView

8. Выбрать в окне Properties свойство Columns и в поле значения нажать кнопку вызова редактора свойства. На экран будет выведено окно редактирования столбцов компонента ListView (рис. 6.12).

Рис. 6.12. Окно редактирования набора столбцов компонента ListView.

9. Нажимая кнопку Add, добавить четыре столбца с параметрами, указанными в табл. 6.7. Таблица 6.7. Колонки компонента ListView

После добавления столбцов нужно нажать кнопку OK.

10. Щелкнуть на компоненте MainMenu1, расположенном в области размещения невидимых компонентов. В нижней части формы появится область редактирования этого меню (рис. 6.13). В ней нужно ввести слово Файл, как это показано на рисунке.

Рис. 6.13. Редактирование названия первого пункта меню.

11. Сохранить проект. Из выпадающего списка Deployment Device нужно выбрать значение Pocket PC 2003 Emulator, а из выпадающего списка Solution Configurations значение Debug. Затем командой меню Debug ? Start нужно запустить проект. По этой

команде будет запущен эмулятор и в него будет загружена сначала среда выполнения. NET, а затем загружена и запущена программа.

12. Поскольку наша программа должна не только отображать записи (для этого на форму был помещен элемент ListView), но и выполнять с ними операции редактирования, то нужно будет выводить на экран еще одно диалоговое окно. Соответственно, его следует разработать.

13. Выполнить команду Project ? Add Windows Form. На экран будет выведено окно добавления к проекту нового элемента. По умолчанию в окне выделена именно форма, поэтому можно сразу нажать кнопку Open, и к проекту будет добавлена форма Form2.vb.

14. Разместить на добавленной к проекту форме невидимые компоненты MainMenu и InputPanel.

15. Разместить на форме Form2 компоненты согласно табл. 6.8.

Таблица 6.8. Элементы управления формы редактирования

16. После проделанных манипуляций вторая созданная форма должна выглядеть так, как показано на рис. 6.14.

Рис. 6.14. Форма редактирования и добавления записи.

Работа с XML

Одной из полезных особенностей. NET CF является возможность легкой записи информации в XML-формате и последующее считывание ее из XML-файла. Из трех классов, предназначенных для работы с XML, в приложении будут использоваться классы XMLTextReader и XMLDocument. На самом деле можно было бы обойтись только классом XMLDocument, но класс XMLTextReader весьма полезен, и не хотелось бы пропускать демонстрацию его применения.

Фомат XML является форматом разметки (структурирования записи) данных. Как и HTML, XML основан на концепции тегов разметки. Но в отличие от HTML, теги XML не имеют предопределенных значений. Это значит, что, в общем случае, получатель документа может знать, как теги вложены друг в друга, какое положение один тег занимает относительно другого в документе, но ничего не может сказать относительно назначения этих тегов и информации, записанной в них. Придание значения той или иной информации, структурированной в XML-файле, ложится на плечи программы, разбирающей этот файл.

Код простейшего XML-файла показан в листинге 6.4.

Листинг 6.4

<?xml version="1.0" encoding="windows-1251"?>

<Y2005>

<Date>

<Index value = "0"/>

</Date>

<Date>

<Index value = "1"/>

</Date>

<Date>

<Index>2

</Index>

</Date>

</Y2005>

Первая строка является описанием XML-документа. Она позволяет указывать версию XML и кодировку, в которой записан документ. Затем следует тег с именем Y2005. Этот тег состоит из открывающей (<Y2005>) и закрывающей (</Y2005>) частей. Внутри тега Y2005 расположены теги с именем Date. Все три тега Date не пустые, поэтому тоже имеют открывающую и закрывающую часть. Внутри тегов Date вложены теги Index. Первые два тега Index пустые, они состоят из одной части, которая одновременно открывает и закрывает этот тег. Внутри тега Index в первых двух случаях записано значение value. Значения, записанные внутри скобок тега, называются атрибутами. Любой тег может иметь любое количество атрибутов, но только одно значение. Значение записывается между открывающей и закрывающей частью тега.

Любой XML-документ должен начинаться с одного тега, который называется корневым тегом. В нашем случае корневым тегом является тег Y2005.

Что нам надо хранить в нашем XML-документе? Это должна быть информация о дате, для которой мы выполняем хронометраж, о категории работы, о времени начала работы, о времени ее окончания и примечания к каждой записи, если они необходимы. Структура нашего XML-файла приведена в листинге 6.5.

Листинг 6.5

Заголовочная часть:

<?xml version="1.0" encoding="windows-1251"?>

Корневой тег:

<Y2005>

Столько тегов Date, сколько дней мы будем контролировать:

<Date value = «20.08.2005» Cnt = "1">

Столько тегов Index, сколько отрезков времени мы учтем за день:

<Index Category="Work1" StartOf= «00.00» EndOf = «00.20» Note=""/>

<Index Category="Misc" StartOf= «00.20» EndOf = «00.40» Note=""/>

</Date>

</Y2005>

В каждом теге Date есть два атрибута. Атрибут value несет в себе дату, а Cnt – количество записей за день. В каждом теге Index есть четыре атрибута. В атрибуте Category указывается категория занятия, в атрибуте StartOf – время начала, в атрибуте EndOf – время окончания, а атрибут Note предназначен для хранения примечания.

Файл с такой структурой должен быть создан при первом запуске программы, прочитан и отредактирован при каждом последующем запуске.

Упражнение 6.2 (продолжение)

17. При запуске нашего приложения необходимо проверить, существует ли файл 2005.xml, в котором записаны результаты контроля времени, и файл Category.xml, в котором содержится список категорий. Если данные файлы не существуют, то их надо создать. Если файлы все еще существуют, то их нужно загрузить. Эти операции будут проводиться в обработчике события загрузки основной формы приложения. Но перед этим в класс формы нужно добавить две переменные. В окне Solution Explorer нужно выделить файл Form1.vb и из контекстного меню выполнить для этого файла команду View Code. Затем в самое начало кода нужно добавить строки, приведенные в листинге 6.6.

Листинг 6.6

Public Class Form1

Inherits System.Windows.Forms.Form

Friend WithEvents ListView1 As System.Windows.Forms.ListView

Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu

\'Добавленные переменные

Dim D As DateTime

Dim dirStr As String

Поделиться с друзьями: