Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программирование » Программирование для карманных компьютеров - Владимир Волков

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 82 83 84 85 86 87 88 89 90 ... 102
Перейти на страницу:

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

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 Sub

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

29. После того как были написаны обработчики для элементов управления основной формы, нужно сделать то же самое для формы редактирования данных. Сначала нужно объявить в этой форме переменную Send, как показано в листинге 6.17. Лиситнг 6.17

Public Class Form2

…

Public Send As Integer

30. Теперь можно написать основные обработчики событий компонентов. Обработчик события загрузки формы должен различать, щелчком на котором элементе была загружена форма, и вести себя соответственно. Это поведение задается в коде, который приведен в листинге 6.18. Листинг 6.18

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles MyBase.Load

Dim myCount As Integer

Dim myStrTime As String

ComboBox2.Items.Clear()

ComboBox3.Items.Clear()

'Загружаем содержимое двух компонентов выпадающих списков, которые

'должны отображать выбор временных интервалов от 00.00 до 23.55 c

'дискретностью в 5 минут

For myCount = 0 To 287

Dim myTime1 As TimeSpan = TimeSpan.FromMinutes(myCount * 5)

myStrTime = myTime1.ToString()

myStrTime = myStrTime.Substring(0, 5)

ComboBox2.Items.Add(myStrTime)

ComboBox3.Items.Add(myStrTime)

Next

'Читаем список категорий в ComboBox1

Dim myxmlDoc As New Xml.XmlDocument

Dim dirStr As String

dirStr = IO.Path.GetDirectoryName_

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

ComboBox1.Items.Clear()

myxmlDoc.Load(dirStr + В«Category.xmlВ»)

For myCount = 0 To myxmlDoc.ChildNodes.Item(1). ChildNodes.Count – 1

ComboBox1.Items.Add_ (myxmlDoc.ChildNodes.Item(1). ChildNodes.Item(myCount). Name)

Next

ComboBox1.SelectedIndex = 0

ComboBox2.SelectedIndex = 0

ComboBox3.SelectedIndex = 0

'Устанавливаем в ComboBox1 категорию, которая задана в последней

'строке ListView

For myCount = 0 To ComboBox1.Items.Count – 1

If ComboBox1.Items(myCount) = categorySt Then

ComboBox1.SelectedIndex = myCount

Exit For

End If

Next

'Для второго и третьего ComboBox так же устанавливаем значения

For myCount = 0 To ComboBox2.Items.Count – 1

If ComboBox2.Items(myCount) = startOfSt Then

ComboBox2.SelectedIndex = myCount

Exit For

End If

Next

For myCount = 0 To ComboBox3.Items.Count – 1

If ComboBox3.Items(myCount) = endOfSt Then

ComboBox3.SelectedIndex = myCount

Exit For

End If

Next

TextBox1.Text = noteSt

End Sub

31. Обработчик щелчка на кнопке OK формы редактирования показан в листинге 6.19. Листинг 6.19

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button1.Click

'Возвращаем в переменные установленные в элементах управления значения

categorySt = Me.ComboBox1.Text

startOfSt = Me.ComboBox2.Text

endOfSt = Me.ComboBox3.Text

noteSt = Me.TextBox1.Text

'Возвращаем результат работы диалогового окна

DialogResult = DialogResult.OK

'Закрываем форму

Me.Close()

End Sub

32. Код обработчика щелчка на кнопке Cancel формы редактирования приведен в листинге 6.20. Листинг 6.20

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button2.Click

DialogResult = DialogResult.Cancel

Me.Close()

End Sub

33. Осталось задать код еще двух обработчиков, предназначенных для автоматического отображения и скрытия программной панели ввода (виртуальной клавиатуры) при приобретении и потери фокуса текстовым полем TextBox. Код этих обработчиков приведен в листинге 6.21. Листинг 6.21

Private Sub TextBox1_GotFocus(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles TextBox1.GotFocus

InputPanel1.Enabled = True

End Sub

Private Sub TextBox1_LostFocus(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles TextBox1.LostFocus

InputPanel1.Enabled = False

End Sub

Мы, наконец, создали несовершенный, но вполне работающий вариант программы. Проект можно скомпилировать и запустить на выполнение. После запуска приложения можно убедиться, что файлы создаются и читаются, записи добавляются, переход от одной даты к другой осуществляется корректно, а после выключения программы все изменения вносятся в файл 2005.xml.

Рспользование нестандартных компонентов

Безусловно, если вы попытались уже воспользоваться программой, вы заметили один большой недостаток. Приложение не позволяет перейти к произвольной дате, заставляя пользователя последовательно переходить от одного дня к другому.

1 ... 82 83 84 85 86 87 88 89 90 ... 102
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Программирование для карманных компьютеров - Владимир Волков.
Комментарии