Владимир Волков - Программирование для карманных компьютеров
- Название:Программирование для карманных компьютеров
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Владимир Волков - Программирование для карманных компьютеров краткое содержание
Эта книга предназначена для того, чтобы читатель смог быстро научиться создавать мощные и эффективные приложения для наладонных компьютеров Pocket PC. Рынок программ для карманных компьютеров сейчас бурно развивается, и именно в этой отрасли программист-одиночка может успешно соперничать с большими корпорациями, которые создают программное обеспечение. Прочитав эту книгу, читатель сможет уверенно и быстро разрабатывать достаточно сложные приложения для Pocket PC. Огромное количество разнообразных примеров позволит быстро совершенствоваться и развиваться, обогащая свой опыт работы.
Книга предназначена для начинающих программистов.
Программирование для карманных компьютеров - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
ListView1.Items.Add(lvItem)
ListView1.Items.Item(MyCount). SubItems.Add_
(xmlrdrMy.GetAttribute(«StartOf»))
ListView1.Items.Item(MyCount). SubItems.Add(xmlrdrMy.GetAttribute(«EndOf»))
ListView1.Items.Item(MyCount). SubItems.Add(xmlrdrMy.GetAttribute(«Note»))
Next
End If
End If
\'Считываем следующий элемент из файла XML
xmlrdrMy.Read()
End While
\'Закрываем файл
xmlrdrMy.Close()
End SubВ этом случае мы воспользовались классом XmlTextReader для считывания информации из файла. Класс XmlTextReader также позволяет разбирать содержимое XML-документа, но он не создает копию файла в памяти, а считывает его в один проход элемент за элементом. Переход к следующему элементу осуществляется вызовом метода Read().
20. Теперь нужно создать процедуру сохранения данных текущего дня в файл. Эта процедура должна запускаться при переходе от одной даты к другой, а также в момент закрытия приложения. Ее код приведен в листинге 6.9.
Листинг 6.9Private Sub Data_Save(ByVal MyDate As String)
Dim MyCount, MyIndex As Integer
\'Создаем объект XmlDocument
Dim myxml As New Xml.XmlDocument
dirStr = IO.Path.GetDirectoryName_
(Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase.ToString)
\'Загружаем файл в объект XmlDocument
myxml.Load(dirStr + «\2005.xml»)
\'Перебираем все узлы уровня Data и находим сохраняемую дату
For MyCount = 0 To myxml.ChildNodes(1). ChildNodes.Count – 1
If myxml.ChildNodes(1). ChildNodes(MyCount). Attributes(0). InnerText = MyDate Then
\'Удаляем все содержимое этого узла
myxml.ChildNodes(1). ChildNodes(MyCount). RemoveAll()
\'И заполняем его текущим содержимым полей ListView. При этом мы создаем
\'заново атрибуты узла Data и узлы Index со всеми атрибутами для каждой
\'строки ListView
\'Создаем атрибут value для текущего узла Data
Dim myValue As Xml.XmlAttribute = myxml.CreateAttribute(«value»)
\'Присваиваем атрибуту value значение текущей даты
myValue.InnerText = MyDate
\'Добавляем атрибут value к текущему узлу Data
myxml.ChildNodes(1). ChildNodes(MyCount). Attributes.Append(myValue)
\'Проделываем предыдущие операции с атрибутом Cnt
Dim mIndex As Xml.XmlAttribute = myxml.CreateAttribute(«Cnt»)
mIndex.InnerText = ListView1.Items.Count
myxml.ChildNodes(1). ChildNodes(MyCount). Attributes.Append(mIndex)
\'Заполняем узел Data вложенными элементами Index
For MyIndex = 0 To ListView1.Items.Count – 1
Dim oIndex As Xml.XmlElement = myxml.CreateElement(«index»)
myxml.ChildNodes(1). ChildNodes(MyCount). AppendChild(oIndex)
Dim oCategory As Xml.XmlAttribute = myxml.CreateAttribute(«Category»)
oCategory.InnerText = ListView1.Items(MyIndex). SubItems(0). Text
myxml.ChildNodes(1). ChildNodes(MyCount). ChildNodes_
(MyIndex). Attributes.Append(oCategory)
Dim oStartOf As Xml.XmlAttribute = myxml.CreateAttribute(«StartOf»)
oStartOf.InnerText = ListView1.Items(MyIndex). SubItems(1). Text
myxml.ChildNodes(1). ChildNodes(MyCount). ChildNodes_
(MyIndex). Attributes.Append(oStartOf)
Dim oEndOf As Xml.XmlAttribute = myxml.CreateAttribute(«EndOf»)
oEndOf.InnerText = ListView1.Items(MyIndex). SubItems(2). Text
myxml.ChildNodes(1). ChildNodes(MyCount). ChildNodes_
(MyIndex). Attributes.Append(oEndOf)
Dim oNote As Xml.XmlAttribute = myxml.CreateAttribute(«Note»)
oNote.InnerText = ListView1.Items(MyIndex). SubItems(3). Text
myxml.ChildNodes(1). ChildNodes(MyCount). ChildNodes_
(MyIndex). Attributes.Append(oNote)
Next
\'Если найден и заполнен требуемый узел Data, прекращаем перебор узлов
Exit For
End If
Next
\'Сохраняем документ в файл
myxml.Save(dirStr + «\2005.xml»)
End Sub21. Остальные процедуры будут не столь объемны. После того как файл был загружен и его содержимое было отображено в элементе ListView, надо написать обработчики событий для щелчков на компонентах PictureBox, которые играют роль кнопок. Поскольку при написании этих обработчиков понадобятся переменные, через которые данные будут передаваться из формы в форму, нужно создать модуль и объявить в нем эти переменные.
22. Выполнить команду Project ? Add Module. На экран будет выведено соответствующее диалоговое окно. В строке Name нужно вместо предлагаемого имени указать имя Data, после чего нужно нажать кнопку Open. В окне редактора кода будет открыт пустой модуль. В нем нужно указать код, приведенный в листинге 6.10.
Листинг 6.10Module Data
Public categorySt, startOfSt, endOfSt, noteSt As String
End Module23. Процедура сохранения информации текущего дня при закрытии приложения описана в листинге 6.11. Листинг 6.11
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As
System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
Data_Save(Label1.Text)
End Sub24. Обработчик щелчка на кнопке PictureBox1, который осуществляет переход к предыдущему дню, приведен в листинге 6.12. Листинг 6.12
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles PictureBox1.Click
Data_Save(Label1.Text)
D = DateAdd(DateInterval.Day, – 1, D)
Label1.Text = D.ToShortDateString
Data_Load(D.ToShortDateString)
End Sub25. Обработчик щелчка на кнопке PictureBox2, который осуществляет переход к следующему дню, приведен в листинге 6.13. Листинг 6.13
Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles PictureBox2.Click
Data_Save(Label1.Text)
D = DateAdd(DateInterval.Day, 1, D)
Label1.Text = D.ToShortDateString
Data_Load(D.ToShortDateString)
End Sub26. Обработчик щелчка на кнопке PictureBox3, который отвечает за добавление очередной записи в текущий день, показан в листинге 6.14. Листинг 6.14
Private Sub PictureBox3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles PictureBox3.Click
Dim lvIt As ListViewItem
\'Создаем диалоговую форму редактирования
Dim MyForm As New Form2
\'Устанавливаем флаг, показывающий, что был щелчок на кнопке 3
MyForm.Send = 3
\'Если ListView не пустой, копируем значения полей текущей записи в
\'переменные так, что время конца в текущей записи станет временем начала
\'в создаваемой записи
If ListView1.Items.Count > 0 Then
categorySt = ListView1.Items.Item_
(ListView1.Items.Count – 1). SubItems(0). Text
startOfSt = ListView1.Items.Item_
(ListView1.Items.Count – 1). SubItems(2). Text
endOfSt = startOfSt
noteSt = ""
Else
categorySt = ""
startOfSt = ""
endOfSt = ""
noteSt = ""
End If
\'Выводим на экран форму редактирования записи
If MyForm.ShowDialog() = DialogResult.OK Then
\'И если редактирование завершилось щелчком на кнопке OK, добавляем новую
\'запись в ListView
lvIt = New ListViewItem(categorySt)
ListView1.Items.Add(lvIt)
ListView1.Items.Item.(ListView1.Items.Count – 1). SubItems.Add(startOfSt)
ListView1.Items.Item.(ListView1.Items.Count – 1). SubItems.Add(endOfSt)
ListView1.Items.Item.(ListView1.Items.Count – 1). SubItems.Add(noteSt)
End If
End Sub27. Обработчик щелчка на кнопке PictureBox4, который отвечает за редактирование текущей записи, показан в листинге 6.15. Листинг 6.15
Private Sub PictureBox4_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles PictureBox4.Click
\'Если в ListView есть выделенная строка, тогда редактируем
If ListView1.SelectedIndices.Count > 0 Then
Dim MyForm As New Form2
\'Сообщаем форме редактирования, что был щелчок на кнопке 4
MyForm.Send = 4
\'Копируем значения полей записи в переменные
categorySt = ListView1.Items(ListView1.SelectedIndices_(0)). SubItems(0). Text
startOfSt = ListView1.Items(ListView1.SelectedIndices(0)). SubItems(1). Text
endOfSt = ListView1.Items(ListView1.SelectedIndices(0)). SubItems(2). Text
noteSt = ListView1.Items(ListView1.SelectedIndices(0)). SubItems(3). Text
\'Если редактирование завершилось щелчком на кнопке OK, копируем возвращенные
\'значения переменных в соответствующие поля ListView
If MyForm.ShowDialog() = DialogResult.OK Then
ListView1.Items(ListView1.SelectedIndices(0)). SubItems(0). Text = categorySt
ListView1.Items(ListView1.SelectedIndices(0)). SubItems(1). Text = startOfSt
ListView1.Items(ListView1.SelectedIndices(0)). SubItems(2). Text = endOfSt
ListView1.Items(ListView1.SelectedIndices(0)). SubItems(3). Text = noteSt
End If
End If
End Sub28. Код обработчика щелчка на кнопке PictureBox5 (удаление текущей записи) приведен в листинге 6.16. Листинг 6.16
Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles PictureBox5.Click
If ListView1.SelectedIndices.Count > 0 Then
ListView1.Items.Remove(ListView1.Items(ListView1.SelectedIndices(0)))
End If
End Sub29. После того как были написаны обработчики для элементов управления основной формы, нужно сделать то же самое для формы редактирования данных. Сначала нужно объявить в этой форме переменную Send, как показано в листинге 6.17. Лиситнг 6.17
Читать дальшеИнтервал:
Закладка: