Kniga-Online.club
» » » » Владимир Волков - Программирование для карманных компьютеров

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

Читать бесплатно Владимир Волков - Программирование для карманных компьютеров. Жанр: Программирование издательство неизвестно, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

19. Процедура загрузки данных для текущего дня в компонент ListView приведена в листинге 6.8.

Листинг 6.8

Private Sub Data_Load(ByVal MyDate As String)

'Открываем файл, для это сначала получаем полный путь каталога,

'в котором расположена программа в строковую переменную dirStr

dirStr = IO.Path.GetDirectoryName_

(Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase.ToString)

'Создаем экземпляр объекта XmlTextReader

Dim xmlrdrMy As New Xml.XmlTextReader(dirStr + В«2005.xmlВ»)

Dim MyCount, MyIndex As Integer

Dim lvItem As ListViewItem

'Не реагируем на пробелы и управляющие символы

xmlrdrMy.WhitespaceHandling = xmlrdrMy.WhitespaceHandling.None

'Переходим к содержимому, пропуская заголовочную часть

xmlrdrMy.MoveToContent()

'В цикле считываем значения из файла, добавляем новую строку в ListView

'для каждого тега Index и копируем значения атрибутов тега Index в

'соответствующие поля записи ListView

ListView1.Items.Clear()

ListView1.Refresh()

While Not xmlrdrMy.EOF

If xmlrdrMy.Name = В«DataВ» Then

If xmlrdrMy.GetAttribute(В«valueВ») = MyDate Then

MyIndex = CInt(xmlrdrMy.GetAttribute(В«CntВ»))

For MyCount = 0 To MyIndex – 1

xmlrdrMy.Read()

lvItem = New ListViewItem(xmlrdrMy.GetAttribute(В«CategoryВ»))

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.9

Private 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 Sub

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

22. Выполнить команду Project ? Add Module. На экран будет выведено соответствующее диалоговое окно. В строке Name нужно вместо предлагаемого имени указать имя Data, после чего нужно нажать кнопку Open. В окне редактора кода будет открыт пустой модуль. В нем нужно указать код, приведенный в листинге 6.10.

Листинг 6.10

Module Data

Public categorySt, startOfSt, endOfSt, noteSt As String

End Module

23. Процедура сохранения информации текущего дня при закрытии приложения описана в листинге 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 Sub

24. Обработчик щелчка на кнопке 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 Sub

25. Обработчик щелчка на кнопке 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 Sub

26. Обработчик щелчка на кнопке 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

Перейти на страницу:

Владимир Волков читать все книги автора по порядку

Владимир Волков - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


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

Отзывы читателей о книге Программирование для карманных компьютеров, автор: Владимир Волков. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*