Программирование для карманных компьютеров
Шрифт:
4. Пользуясь инспектором свойств, установить для формы Form1 значение true для свойства AutoRedraw и значение 20 для свойства DrawWidth. Остальным свойствам можно оставить их значения по умолчанию.
5. В окне Project Explorer выбрать форму Form2. Необходимые значения свойств для этой формы приведены в табл. 3.4. Остальные свойства нужно оставить без изменений.
Таблица 3.4. Свойства формы Form26. Форма изменит цвет и размеры. На форме Form2 требуется разместить компонент Timer, как это показано на рис. 3.20.
7. Щелчком мыши выделить компонент Timer1 и для его свойства Interval установить значение 150.
8. Двойным щелчком мыши на компоненте Timer1 создать подпрограмму обработки события одного тика таймера и ввести в нее код, приведенный в листинге 3.3.
Листинг 3.3Private 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.4Dim a, b, i, j
i=0
j=0
a = 100
b = 5010. В окне Project Explorer необходимо переключиться на объект Form1. Для кнопок Command1 и Command2 свойство Caption должно получить значения Показать и Очистить соответственно.
11. Двойным щелчком на кнопке Command1 создать обработчик события щелчка на кнопке и ввести для него код, приведенный в листинге 3.5.
Листинг 3.5Private 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.6Private Sub Command2_Click
Cls
Form2.Z0rder vbBringToFront
End SubКоманда Cls очищает поверхность формы Form1 от нарисованных на ней линий, а метод ZOrder выводит форму Form2 на передний план после выполнения этой команды. Без этого метода она становится невидимой, так как ее заслоняет форма Form1.
13. Ввести еще один блок кода в этом же модуле, приведенный в листинге 3.7.
Листинг 3.7Private 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.8Option Explicit
Dim ShFrm2 As Boolear
ShFrm2 = True15. Сохранить проект. В качестве целевого устройства нужно выбрать в списке значение Pocket PC 2002 Emulation, после чего следует выполнить команду Run ? Execute. На экран эмулятора будет выведена форма Form1 с нарисованными на ней линиями. После нажатия кнопки Показать на экран будет выведена форма Form2 с нарисованными на ней окружностью и квадратом, а надпись на кнопке изменится на Скрыть (рис. 3.21).
Форма Form2 будет перемещаться по экрану и изменять цвет в момент столкновения с границами экрана. Нажатие кнопки Очистить приведет к тому, что будут стерты линии с поверхности формы Form1. При работе с приложением стоит несколько раз скрыть и снова отобразить форму Form2. Это покажет, что форма не уничтожается при скрытии и продолжает свое перемещение в невидимом состоянии.
Упражнение 3.5
Это упражнение демонстрирует, как работают события объекта Form.
1. Создать новый проект с формой и сохранить его под именем FormEvents.
2. Разместить на форме компоненты TextBox, ListBox и три кнопки CommandButton так, как это показано на рис. 3.22.
3. При помощи инспектора свойств нужно установить значения свойств для компонентов. Все необходимые значения приведены в табл. 3.5. Таблица 3.5. Значения свойств кнопок
4. Добавить к проекту еще одну форму. Значения ее свойств можно найти в табл. 3.6.
Таблица 3.6. Свойства новой формы5. Перейти в окне Project Explorer к форме Form1. Правой кнопкой мыши нужно щелкнуть на форме, в контекстном меню выполнить команду View Code и ввести код модуля, приведенный в листинге 3.9.
Листинг 3.9Rem Первая кнопка выводит Форму Form2 на экран
Private Sub Command1_Click
Form2.Show
End SubRem Вторая кнопка скрывает форму Form2
Private Sub Command2_Click
Form2.Hide
End SubRem Третья кнопка изменяет размер формы 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 SubPrivate Sub Form_OKClick
App.End
End SubRem Двойной щелчок по компоненту списка очищает его содержимое
Private Sub List1_DblClick
List1.Clear
End SubRem Вывод сообщений о показе и скрытии виртуальной клавиатуры
Private Sub Form_SIPChange(ByVal IsV As Boolean)
If IsV Then
List1.AddItem «Клавиатура показана»
Else
List1.AddItem «Клавиатура скрыта»
End If
End SubRem Далее в подпрограммах отслеживаем события от клавиатуры и мыши
Private Sub Form_KeyDown(ByVal KeyCode As Integer, ByVal shift As Integer)
List1.AddItem «Text1_KeyDown»
End SubPrivate Sub Form_KeyPress(ByVal KeyAscii As Integer)
List1.AddItem «Text1_KeyPress»
End SubPrivate Sub Form_KeyUp(ByVal KeyCode As Integer, ByVal shift As Integer)
List1.AddItem «Text1_KeyUp»
End SubPrivate Sub Form_MouseDown(ByVal button As Integer, ByVal shift As Integer, x, y)
List1.AddItem «Form_MouseDown»
End SubPrivate Sub Form_MouseUp(ByVal button As Integer, ByVal shift As Integer, _x, y)
List1.AddItem «Form_MouseUp»
End SubRem Для того чтобы не засорять список, событие передвижения указателя
Rem мыши над формой мы обрабатываем только при нажатой левой клавише
Private Sub Form_MouseMove(ByVal button As Integer, ByVal shift As Integer, x, y)
If button = 1 Then List1.AddItem «Form_MouseMove»
End Sub6. Перейти в окне Project Explorer к форме Form2. В ее модуле следует ввести код, приведенный в листинге 3.10. Листинг 3.10
Private Sub Form_QueryUnload(ByVal cancel As Integer, unloadmode)
Form1.List1.AddItem «Form2 QueryUnload»
End SubPrivate 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