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

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

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Владимир Волков, "Программирование для карманных компьютеров" бесплатно, без регистрации.
Перейти на страницу:

4. Добавить к проекту еще одну форму. Значения ее свойств можно найти в табл. 3.6.

Таблица 3.6. Свойства новой формы

5. Перейти в окне Project Explorer к форме Form1. Правой кнопкой мыши нужно щелкнуть на форме, в контекстном меню выполнить команду View Code и ввести код модуля, приведенный в листинге 3.9.

Листинг 3.9

Rem Первая кнопка выводит Форму Form2 на экран

Private Sub Command1_Click()

Form2.Show

End Sub

Rem Вторая кнопка скрывает форму Form2

Private Sub Command2_Click()

Form2.Hide

End Sub

Rem Третья кнопка изменяет размер формы Form2

Private Sub Command3_Click()

If Form2.Height > 2500 Then

Form2.Height = 1000: Form2.Width = 1000

Else

Form2.Height = 3000: Form2.Width = 3000

End If

End Sub

Private Sub Form_OKClick()

App.End

End Sub

Rem Двойной щелчок по компоненту списка очищает его содержимое

Private Sub List1_DblClick()

List1.Clear

End Sub

Rem Вывод сообщений о показе и скрытии виртуальной клавиатуры

Private Sub Form_SIPChange(ByVal IsV As Boolean)

If IsV Then

List1.AddItem «Клавиатура показана»

Else

List1.AddItem «Клавиатура скрыта»

End If

End Sub

Rem Далее в подпрограммах отслеживаем события от клавиатуры и мыши

Private Sub Form_KeyDown(ByVal KeyCode As Integer, ByVal shift As Integer)

List1.AddItem В«Text1_KeyDownВ»

End Sub

Private Sub Form_KeyPress(ByVal KeyAscii As Integer)

List1.AddItem В«Text1_KeyPressВ»

End Sub

Private Sub Form_KeyUp(ByVal KeyCode As Integer, ByVal shift As Integer)

List1.AddItem В«Text1_KeyUpВ»

End Sub

Private Sub Form_MouseDown(ByVal button As Integer, ByVal shift As Integer, x, y)

List1.AddItem В«Form_MouseDownВ»

End Sub

Private Sub Form_MouseUp(ByVal button As Integer, ByVal shift As Integer, _x, y)

List1.AddItem В«Form_MouseUpВ»

End Sub

Rem Для того чтобы не засорять список, событие передвижения указателя

Rem мыши над формой мы обрабатываем только при нажатой левой клавише

Private Sub Form_MouseMove(ByVal button As Integer, ByVal shift As Integer, x, y)

If button = 1 Then List1.AddItem В«Form_MouseMoveВ»

End Sub

6. Перейти в окне Project Explorer к форме Form2. В ее модуле следует ввести код, приведенный в листинге 3.10. Листинг 3.10

Private Sub Form_QueryUnload(ByVal cancel As Integer, unloadmode)

Form1.List1.AddItem В«Form2 QueryUnloadВ»

End Sub

Private Sub Form_Activate()

Form1.List1.AddItem В«Form2 ActivateВ»

End Sub

Private Sub Form_Deactivate()

Form1.List1.AddItem В«Form2 DeactivateВ»

End Sub

Private Sub Form_GotFocus()

Form1.List1.AddItem «Form2 Получила фокус»

End Sub

Private Sub Form_LostFocus()

Form1.List1.AddItem «Form2 Потеряла фокус»

End Sub

Private Sub Form_Paint()

Form1.List1.AddItem «Form2 перерисована»

End Sub

Private Sub Form_Load()

Form1.List1.AddItem «Form2 загружена»

End Sub

Private Sub Form_Resize()

Form1.List1.AddItem В« Form2 ResizeВ»

End Sub

7. Выполнить команду меню Run ? Execute и запустить приложение в эмуляторе. На экран будет выведена первая форма.

8. После нажатия кнопки 1 на экран будет выведена вторая форма, а в ListBox будут выведены сообщения о том, какими событиями сопровождался показ этой формы.

9. Переместить форму Form2 так, чтобы форма выходила за пределы экрана. При этом будет отображено сообщение о том, что форма перерисована.

10. Нажать кнопку 3. После этого нажатия фокус ввода будет перенесен на форму Form1, а форма Form2 будет скрыта. Поэтому появятся сообщения о том, что форма Form2 деактивирована, потеряла фокус, а затем о том, что она два раза поменяла размер. Это соответствует истине, так как сначала был изменен вертикальный, а затем горизонтальный размер формы.

11. Нажать кнопку 2. Будут отображены сообщения о том, какими событиями сопровождается сокрытие формы.

12. Остановить и снова запустить приложение. Нажать кнопку 3. При этом форма Form2 не появится на экране. Тем не менее, форма эта будет загружена, и ее размер будет изменен.

13. Сделать несколько щелчков мышью на форме Form1 вне визуальных компонентов. Будут отображены сообщения о событиях, связанных с нажатием и отпусканием кнопки мыши.

14. Перевести фокус в компонент TextBox и вывести на экран виртуальную клавиатуру. Появится сообщение о выводе клавиатуры. При работе с клавиатурой появится множество соответствующих сообщений. Если нажать на алфавитно-цифровую клавишу, и не отпустить ее, то в списке не будет отображено ни одно событие, хотя должно отобразиться событие Down. Однако сразу после отпускания отображаются сразу три события – Down, Press и Up. Это не особенность eVB и не особенность виртуальной клавиатуры, это явная ошибка среды разработки, о чем сказано в базе знаний на сайте Microsoft.

15. При скрытии экранной клавиатуры будет выведено соответствующее сообщение.

16. Следует обратить внимание, что наборы сообщений во время скрытия формы Form2 при помощи метода Hide и при помощи кнопки с крестиком на форме отличаются. Во втором случае добавляется событие QueryUnload.

СОВЕТ. Три кита, на которых стоит программирование интерфейса пользователя в eVB, – методы, свойства и события. Если описание свойств и методов довольно подробно дано в справочной системе, то события (особенно их последовательность) там описаны не так подробно. Я советую вам использовать тот же подход, который мы использовали в этом упражнении, для исследования событий других компонентов, порядка и особенности их генерации при работе компонентов в том или ином режиме, и то, какие параметры передаются в событие и какие из него возвращаются обратно приложению или операционной системе.

17. Чтобы увидеть, как параметр возвращается из события в приложение, следует изменить код события QueryUnload, введя код из листинга 3.11. Листинг 3.11

Private Sub Form_QueryUnload(cancel, unloadmode)

Form1.List1.AddItem В«Form2 QueryUnloadВ»

cancel = 0

End Sub

Private Sub Form_Unload(cancel)

Form1.List1.AddItem В«Form2 UnloadВ»

End Sub

Параметр cancel передается не по значению, а по ссылке, значит, он будет возвращен приложению. Этот параметр, установленный в нулевое значение, позволяет форме быть деактивированной. Если же установить его в любое, отличное от нуля, значение, то форма останется активной и видимой.

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