Чтение онлайн

ЖАНРЫ

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

Волков Владимир

Шрифт:

4. Пользуясь инспектором свойств, установить для формы Form1 значение true для свойства AutoRedraw и значение 20 для свойства DrawWidth. Остальным свойствам можно оставить их значения по умолчанию.

5. В окне Project Explorer выбрать форму Form2. Необходимые значения свойств для этой формы приведены в табл. 3.4. Остальные свойства нужно оставить без изменений.

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

6. Форма изменит цвет и размеры. На форме Form2 требуется разместить компонент Timer, как это показано на рис. 3.20.

Рис. 3.20. Форма Form2 после
редактирования свойств и размещения таймера.

7. Щелчком мыши выделить компонент Timer1 и для его свойства Interval установить значение 150.

8. Двойным щелчком мыши на компоненте Timer1 создать подпрограмму обработки события одного тика таймера и ввести в нее код, приведенный в листинге 3.3.

Листинг 3.3

Private Sub Timer1_Timer

i=i+a

j=j+b

If i > 1600 Then a = – a: BackColor = &HFF&:

DrawCircle 500, 500, 400, &HFF00FF:

DrawLine 1100, 1100, 1800, 1800, &HFF00FF, vbLineBoxFill

If j > 2500 Then b = – b: BackColor = &HFFFF&:

DrawCircle 500, 500, 400, &HFF00FF:

DrawLine 1100, 1100, 1800, 1800, &HFF00FF, vbLineBoxFill

If i < 0 Then a = – a: BackColor = &HFF00&:

DrawCircle 500, 500, 400, &HFF00FF:

DrawLine 1100, 1100, 1800, 1800, &HFF00FF, vbLineBoxFill

If j < 0 Then b = – b: BackColor = &HFF0000:

DrawCircle 500, 500, 400, &HFF00FF:

DrawLine 1100, 1100, 1800, 1800, &HFF00FF, vbLineBoxFill

Move i, j

End Sub

Этот код демонстрирует применение методов DrawCircle, DrawLine и Move для того, чтобы перемещать форму Form2 и рисовать на ее поверхности круг и прямоугольник.

9. Кроме кода обработчика события тика таймера необходимо после строки Option Explicit ввести еще один блок кода объявления и инициализации переменных, приведенный в листинге 3.4.

Листинг 3.4

Dim a, b, i, j

i=0

j=0

a = 100

b = 50

10. В окне Project Explorer необходимо переключиться на объект Form1. Для кнопок Command1 и Command2 свойство Caption должно получить значения Показать и Очистить соответственно.

11. Двойным щелчком на кнопке Command1 создать обработчик события щелчка на кнопке и ввести для него код, приведенный в листинге 3.5.

Листинг 3.5

Private Sub Command1_Click

If ShFrm2 Then

Form2.Show

ShFrm2 = False

Command1.Caption = «Скрыть»

Else

Form2.Hide

ShFrm2 = True

Command1.Caption = «Показать»

End If

End Sub

Этот метод демонстрирует применение методов Show и Hide для отображения и скрытия формы Form2 при нажатии кнопки Command1.

12. Двойным щелчком на кнопке Command2 создать обработчик события щелчка на кнопке и ввести для него код, приведенный в листинге 3.6.

Листинг 3.6

Private Sub Command2_Click

Cls

Form2.Z0rder vbBringToFront

End Sub

Команда Cls очищает поверхность формы Form1 от нарисованных на ней линий, а метод ZOrder выводит форму Form2 на передний план после выполнения этой команды. Без этого метода она становится невидимой, так как ее заслоняет форма Form1.

13. Ввести еще один блок кода в этом же модуле, приведенный в листинге 3.7.

Листинг 3.7

Private Sub Form_Load

DrawLine 1100, 1100, 9000, 18000, &HFF&

DrawLine 1100, 1100, 18000, 10000, &HFF&

DrawLine 1100, 1100, 18000, 18000, &HFF&

End Sub

При помощи этого кода в момент загрузки формы Form1 на ней будут нарисованы три линии красного цвета.

14. В начале этого же блока следует объявить и проинициализировать переменную, которая будет хранить состояние формы. Делается это при помощи кода, приведенного в листинге 3.8.

Листинг 3.8

Option Explicit

Dim ShFrm2 As Boolear

ShFrm2 = True

15. Сохранить проект. В качестве целевого устройства нужно выбрать в списке значение Pocket PC 2002 Emulation, после чего следует выполнить команду Run ? Execute. На экран эмулятора будет выведена форма Form1 с нарисованными на ней линиями. После нажатия кнопки Показать на экран будет выведена форма Form2 с нарисованными на ней окружностью и квадратом, а надпись на кнопке изменится на Скрыть (рис. 3.21).

Рис. 3.21.
Программа FormMethods в работе/

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

Упражнение 3.5

Это упражнение демонстрирует, как работают события объекта Form.

1. Создать новый проект с формой и сохранить его под именем FormEvents.

2. Разместить на форме компоненты TextBox, ListBox и три кнопки CommandButton так, как это показано на рис. 3.22.

Рис. 3.22. Размещение компонентов на форме.

3. При помощи инспектора свойств нужно установить значения свойств для компонентов. Все необходимые значения приведены в табл. 3.5. Таблица 3.5. Значения свойств кнопок

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

Поделиться с друзьями: