10-А класс. Информатика. Visual Basic 6.0 Тема: События в Visual Basic. Ход лекции: На прошлой лекции мы уже говорили о том, что программы управляются событиями. Каждый раз, когда выполняется щелчок по кнопке, перемещается мышка по форме, меняется размер элемента или изменяется содержимое в поле текста и т.д., происходит определенное событие. Для организации реакции на это событие пишется программный код, включаемый в процедуру обработки события. Разные элементы могут иметь разные события, но у многих элементов существуют одинаковые события (Click, MouseUp, GotFocus). Просмотреть список свойств элемента можно с помощью окна редактирования кода. Список элементов и объектов Список свойств элемента и объекта Окно редактирования кода Программировать все события для элемента нет необходимости. Программируются только те события, которые ожидаются в результате исполнения программы. Для программирования события необходимо на этапе проектирования дважды щёлкнуть по объекту. Появляется окно редактирования кода и в нём заголовок и окончание процедуры события, выбираемого для данного объекта по умолчанию. Например, для формы это будет событие загрузки формы Form_Load. Private Sub Form_Load() End Sub Между заголовком и окончанием процедуры вставляется код обработки события. Если необходимо запрограммировать другое событие, то из раскрывающегося списка элементов выбирается необходимый элемент, а из раскрывающегося списка событий выбирается нужное событие. Например, для формы выберем событие нажатия кнопки мыши. Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub Рассмотрим некоторые часто используемые события на примере событий формы и кнопок (frm1 имя формы, cmd1 - имя кнопки): Click – пользователь щёлкает на объекте кнопкой мыши. Private Sub cmd1_Click() End Sub DblClick – пользователь дважды щёлкает на объекте кнопкой мыши. Private Sub Form_DblClick() End Sub Form_Load – возникает после загрузки формы в память компьютера и до появления её на экране монитора. Это событие используют для окончательной настройки внешнего вида формы. Private Sub Form_Load() End Sub GotFocus – объект получает фокус, то есть он становится активным. Анализируя это событие, можно определить с каким объектом в данный момент работает программа. Private Sub cmd1_GotFocus() End Sub MouseDown – нажимается кнопка мыши при условии, что указатель мыши находится на объекте. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub Где, параметры: Button – код нажатой кнопки, принимающий следующие значения: Нажатые клавиши Button Левая 1 Правая 2 Левая и правая 3 Средняя 4 Левая и средняя 5 Правая и средняя 6 Все 7 Shift – определяет комбинацию нажатия клавиш Ctrl, Alt и Shift Комбинация клавиш Shift Ctrl Alt Shift + Ctrl Sift + Alt Ctrl + Alt Sift + Ctrl + Alt Shift 1 2 3 4 5 6 7 X,Y – координаты указателя мыши по осям x и y. MouseUp – отпускается кнопка мыши при условии, что указатель мыши находится на объекте. Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub Где, параметры имеют те же значения, что и в событии MouseDown. Разработка проекта «Сдвинь меня» Разработаем проект, в котором с помощью четырёх кнопок будем выполнять перемещение формы в угловые точки экрана. В метке расположенной на форме будем сообщать о нажатии кнопок и щелчках кнопкой мыши в области формы. Внешний вид заготовки формы показан на рис. 1. cmd1 cmd3 frm1 lbl1 cmd2 cmd4 Рис. 1. Заготовка формы Напомним, что форма имеет свойства: Left – расстояние от левого края экрана до левого верхнего угла формы; Top - расстояние от верхнего края экрана до левого верхнего угла формы; Height – высота формы; Width – ширина формы. В Visual Basic имеется объект Screen. Этот объект идентифицируется с экраном монитора. У него также присутствуют свойства Height и Width. Используя указанные свойства, обеспечим перемещение формы по экрану. Надписи на кнопках управления выполним в процессе выполнения программы в событии Form_Load. Private Sub Form_Load() cmd1.Caption = "Влево вверх" cmd2.Caption = "Влево вниз" cmd3.Caption = "Вправо вверх" cmd4.Caption = "Вправо вниз" lbl1.Caption = "" End Sub Строка lbl1.Caption = "" выполняет очистку поля метки от предыдущего вывода. Код для перемещения формы добавим в событие Click кнопок. Например, при нажатии кнопки «Влево вниз» свойство Left формы должно равняться нулю, а свойство Top определяется как разница высоты экрана и высоты формы. Private Sub cmd2_Click() frm1.Top = Screen.Height - frm1.Height frm1.Left = 0 End Sub Клавиши cmd1, cmd3, cmd4 программируются аналогично. Используя событие GotFocus просигнализируем в метке lbl1 о моменте нажатия соответствующей клавиши. Приведём код для клавиши «Влево вверх»: Private Sub cmd1_GotFocus() lbl1.Caption = "Нажата клавиша Влево вверх" End Sub Момент нажатия на другие три клавиши опишите самостоятельно. Сообщение о нажатии на кнопку мыши опишем в событии Form_MouseDown: Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) lbl1.Caption = "Клавиша мышки нажата" End Sub Самостоятельно опишите момент отпускания кнопки мыши в событии Form_MouseUp. Результат работы программы показан на Рис. 2. Рис. 2. результат работы программы ПРОГРАММА «СДВИНЬ МЕНЯ» Private Sub cmd1_Click() frm1.Top = 0 frm1.Left = 0 End Sub Private Sub cmd1_GotFocus() lbl1.Caption = "Нажата клавиша Влево вверх" End Sub Private Sub cmd2_Click() frm1.Top = Screen.Height - frm1.Height frm1.Left = 0 End Sub Private Sub cmd2_GotFocus() lbl1.Caption = "Нажата клавиша Влево вниз" End Sub Private Sub cmd3_Click() frm1.Top = 0 frm1.Left = Screen.Width - frm1.Width End Sub Private Sub cmd3_GotFocus() lbl1.Caption = "Нажата клавиша Вправо вверх" End Sub Private Sub cmd4_Click() frm1.Top = Screen.Height - frm1.Height frm1.Left = Screen.Width - frm1.Width End Sub Private Sub cmd4_GotFocus() lbl1.Caption = "Нажата клавиша Вправо вниз" End Sub Private Sub Form_Load() cmd1.Caption = "Влево вверх" cmd2.Caption = "Влево вниз" cmd3.Caption = "Вправо вверх" cmd4.Caption = "Вправо вниз" lbl1.Caption = "" End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) lbl1.Caption = "Клавиша мышки нажата" End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) lbl1.Caption = "Клавиша мышки отжата" End Sub