Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по VB.docx
Скачиваний:
6
Добавлен:
22.11.2018
Размер:
69.34 Кб
Скачать

1.7. События и методы.

Кроме свойств, которые являются описывающими объект данными, объекты могут обладать событиями и методами.

Событиеэто начало или завершение любого действия, инициируемого пользователем при выполнении приложения или генерируемого операционной системой. Если вы хотите, чтобы элемент управления или форма реагировали на определенное событие, вы должны поместить код (команды, операторы) в процедуру обработки этого события. Список возможных событий для расположенных на форме элементов и самой формы можно посмотреть в окне кода. Вывести окно кода на экран можно двумя способами: двойным щелчок на объекте или щелчком, но кнопке “Показать код” в заголовке окна проводника проекта. После любого из этих действий на экране появится окно кода, верхняя строка которого разделена на две части. Щелчком на значке треугольника в левой части можно раскрыть список имеющихся на форме элементов. Первая строка этого списка называется общим разделом – General.

Если в списке выбрать какой-нибудь элемент и щелкнуть на значке треугольника в правой части верхней строки окна кода, раскроется список возможных событий для выбранного элемента. Если щелкнуть на каком либо элементе этого списка, то в пределах окна кода появится заготовка процедуры обработки данного события для выбранного элемента или формы. Щелчок на слове “General” в левом списке приводит к сдвигу вниз всех имеющихся в окне кода процедур и их заготовок. Освободившаяся сверху строка предназначена для объявления общих переменных, то есть переменных, которые можно использовать в любой процедуре данной формы. Для формы основным событием является Load, оно возникает в момент загрузки формы. Если вы раскроете левый список и щелкните в нём на слове “форма”, то в окне кода немедленно появится заготовка процедуры обработки этого события:

Private Sub Form1_Load()

. . . . . . . . . .

End Sub

В пустую строку между заголовком процедуры и её концом можно поместить код, который выполнится при загрузке формы. Из приведенного синтаксиса записи процедуры обработки событий следует, что имя процедуры составляется из имени соответствующего объекта (имя формы, например) и знака подчеркивания, за которым должно следовать название события.

Общими для всех элементов управления являются события

GotFocus и LostFocus. Событие GotFocus происходит, когда элемент становится активным, например, после щелчка на нем мышкой. В таком случае говорят, что элемент получил фокус. Событие LostFocus происходит, когда элемент теряет фокус, например, при активизации другого элемента.

Основными событиями для полос прокрутки являются события Change и Scroll. Событие Change возникает при щелчке на концевых стрелках полосы или на самой полосе, а также в момент отпускания левой кнопки мышки после протяжки ползунка. Событие Scroll генерируется непрерывно в процессе протяжки ползунка. Обработав событие Change, вы можете, например, вывести в текстовое окно установленное с помощью протяжки ползунка значение свойства Value:

Private Sub Hscroll2_Change()

Text1.Text = Hscroll2.Value

End Sub

или непосредственно использовать его в вычислениях:

a = b + Hscroll2.Value

Поскольку событие Scroll генерируется непрерывно по мере перемещения ползунка, то непрерывно выполняется процедура обработки этого события. И в текстовом окне будет непрерывно отображаться текущее значение свойства Value:

Private Sub Vscroll3_Scroll()

Text1.Text = Vscroll3.Value

End Sub

Для командной кнопки основным событием является Click. Оно возникает при щелчке на кнопке в режиме run. Заготовка процедуры обработки этого события, например, для командной кнопки Command2 имеет вид:

Private Sub Command2_Click()

. . . . . . . . . . .

End Sub

Рассмотрим пример обработки этого события. Откроем новый проект, расположим на форме командную кнопку и изменим её свойство Style на Graphical. Щелчком на кнопке “Показать код” в верхней строке окна Проводника проекта, открываем окно кода – оно пусто. В его верхней строке слева стоит надпись “General”, а справа “Declaration”. Щелкаем на левом крае пустой строки окна кода ниже этих надписей. Курсор примет вид мигающей вертикальной полоски, приглашающей ввести некоторый текст. Вводим:

Private a As Integer.

Этим мы объявили переменную “a”, которая может принимать только целочисленные значения и может использоваться в любой процедуре данной формы. Далее щелкаем по значку треугольника в левой половине верхней строки окна кода. И из появившегося списка выбираем “Форма”, в окне кода немедленно появится заготовка процедуры Form_Load:

Private Sub Form1_Load()

. . . . . . . . . .

End Sub

Внесём в неё код: a = 1. В результате получим:

Private Sub Form1_Load()

a = 1

End Sub

Снова щелкаем на том же значке и в выпавшем списке выбираем командную кнопку. В окне кода появится заготовка процедуры обработки события Click для этой кнопки. Внесём в неё код так, чтобы в результате получилось:

Private Sub Command1_Click()

If a = 0 Then

Command1.BackColor = vbRed

Command1.Caption = “Выход”

a = 1

Else

Command1.BackColor = vbGreen

Command1.Caption = “Вход”

a = 0

End if

End Sub

Выбираем на линейке инструментов значок черного треугольника и щелчком по нему запускаем приложение на выполнение. Вид формы остался прежний. Щёлкаем теперь на командной кнопке. Она становится зеленой и текст на ней изменяется на “Вход”. Еще раз щелкаем на ней: кнопка становится красной, а текст изменяется на “Выход”.

Любую процедуру обработки события можно вызвать программно. Например, Command1_Click. Процедура Command1_Click() параметров не имеет, поэтому при ее вызове программным способом скобки не указываются.

Рассмотрим теперь основные методы формы и элементов управления.

Методэто встроенная в объект функция или, проще говоря, это то, что умеет делать объект сам. Используя методы объекта, можно решать некоторые задачи без написания кода. Наиболее важными методами формы являются методы Hide и Show. Первый из них позволяет скрыть некоторую форму, а второй – показать другую. Например:

Private Sub Command1_Click()

frmForm1.Hide

frmForm2.Show

End Sub

Из этого примера следует, что обращение к методу составляется из имени объекта, за которым через точку следует имя метода.

После применения метода Hide форма исчезает с экрана, но не выгружается из оперативной памяти (ОП). Поэтому можно использовать значения свойств расположенных на ней объектов. Например:

Form1.Hide

st = Form1.Text1.Text

Для удаления формы из ОП служит метод UnLoad:

UnLoad Form1

В этом случае ее объекты становятся недоступными.

Метод Load загружает форму в ОП:

Load Form1

Важным методом формы является также метод Print. Он позволяет выводить текст непосредственно на форму. Использовать его имеет смысл, когда форма не перегружена большим количеством элементов управления. Синтаксис метода Print следующий:

[Объект]. Print [Список вывода] [{;|,}]

Обычно в квадратные скобки берётся необязательный параметр. Если речь идёт о текущей форме, то элемент “Объект” можно не указывать. По умолчанию метод Print выводит текст и перемещается на следующую строку. Если список вывода пуст, метод пропускает одну строку. Элементы списка отделяются друг от друга запятой или точкой с запятой. Каждая строка выводимого текста условно делится на зоны шириной в четырнадцать символов установленного в свойстве Font размера. Если разделителем является запятая, то следующий элемент выводится с первой позиции следующей зоны, независимо от того, насколько заполнена символами предыдущая зона. Если разделителем служит точка с запятой, то следующий элемент в строке начинает выводиться непосредственно за последним символом предыдущего элемента. Свойства Font и ForeColor формы относятся именно к тексту, выводимому на форму методом Print.

Расположение текста на форме можно задать с помощью свойств CurrentX и CurrentY. Если вы задали размер шрифта, то оператор

CurrentY = TextHeight(string)*(n-1) установит в качестве строки вывода строку, отстоящую от верхней границы формы на n-1 строку символов, заданного вами размера шрифта. Здесь string – это выводимая на форму строка текста. Оператор CurrentX = TextWidth(string) сдвинет начало вывода в строке на ширину выводимой строки. Это неудобно. Поэтому для задания отступа по горизонтали от левого края формы лучше использовать не свойство CurrentX и метод TextWidth, а необязательные параметры Spc(n) и Tab(n). Tab без параметров всегда перемещает точку вывода на начало следующей зоны вывода независимо от того, сколько символов выведено в предыдущей зоне. Tab(n) устанавливает точку вывода с n-ной позиции строки независимо от количества уже напечатанных в строке символов. Spc(n) задаёт количество пробелов между предыдущим выводом и текущим.

Пример. Откроем новый проект и разместим на форме две командные кнопки. У первой свойство Caption изменим на “Вывести текст”, а у второй – на “Выход”. Откроем окно кода и создадим процедуры для этих кнопок:

Private Sub Command1_Click()

Dim s As String, s1 As String

s = “Событие – это реакция системы”

s1 = “ на действия пользователя”

Backcolor = &HFFCOCO - голубой цвет формы

CurrentY = TextHeight(“s”)*5 - отступ в 5 строк от

верхнего края формы

ForeColor = vbRed

Print Tab(10); s

CurrentY = TextHeight(“s1”)*6 - отступ в 6 строк от

верхнего края формы

ForeColor = vbGreen

Print Tab(10); s1

End Sub

Private Sub Command2_Click()

End

End Sub

Для нашей формы установим свойство Font. Для этого щелкаем в правой части строки этого свойства в окне свойств формы. В конце строки появляется знак троеточия. Щелчок на нем открывает окно задания параметров шрифта. Выбираем название шрифта Times New Roman, начертание – жирный курсив и размер равный 16 и нажимаем кнопку Ok. Запустим приложение на выполнение. Щелкаем на первой кнопке – выполнится первая процедура, и текст появится на форме. Щелчок на второй завершает работу приложения.

Общим методом для всех элементов управления является метод SetFocus. Он позволяет активизировать элемент программным способом. Например, после выполнения оператора Text2.SetFocus активным станет второе текстовое окно.