\'И заполняем его текущим содержимым полей 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
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 Sub
27. Обработчик щелчка на кнопке 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
Читать дальше
Конец ознакомительного отрывка
Купить книгу