Visual Basic. Программирование на Visual Basic

..........................................................................................................................

[ Главная ] [ Статьи ] [ Для новичков ] [ Примеры ] [ Программы ] [ Microsoft Agent 2.0 ] [ Пособие ] [ Уроки ] [ Разное ]
..........................................................................................................................

Описание событий VB (Visual Basic)

Здесь размещены подробные описания всех событий всех основных элементов управления, встроенных в Visual Basic. Сюда не входят события подключаемых элементов управления, таких например, как Microsoft Common Controls и т.п. Многие события снабжены примерами их использования. Всё переводилось мной со стандартного Help'а VB5.

В Visual Basic структура обработчика событий имеет следующую схему:

[Private | Public] Sub Объект_ИмяСобытия ([arglist])

End Sub

Внутри таких процедур и содержится основной код Visual Basic. Остальное находится в пользовательских функциях и процедурах.

Выберите интересующее вас событие:

Событие
Причина возникновения
Activate,Deactivate

Это событие имеет только форма.

Activate - вызывается в тот момент, когда форма становится активной (получает фокус). Однако, если перейти к другому приложению Windows, а затем вернуться к своему, то это событие не произойдёт. Оно срабатывает только при переключении между формами внутри программы.

Deactivate - Событие, обратное событию Activate. Вызывается при потере фокуса формы.

Change

ComboBox — меняется текст в текстовой части элемента. Происходит только тогда, когда свойство Style установлено в 0 (Dropdown Combo) или 1 (Simple Combo) и юзер изменяет текст или вы меняете его в коде программы.

DirListBox — Меняется выбранная директория. Происходит когда юзер делает двойной клик на новой директории или когда меняется свойство Path в коде.

DriveListBox — Меняется выбранное устройство. Происходит когда юзер меняет устройство, выбрав его из списка, или когда меняется свойство Drive в коде.

HScrollBar и VScrollBar (горизонтальная и вертикальная прокрутки) — Подвинулся скрол. Происходит когда юзер передвинул и отпустил полоску прокрутки или меняется свойство Value в коде.

Label — Меняется содержимое метки. Происходит когда меняется свойство Caption в коде.

PictureBox — Меняется содержимое PictureBox. Происходит при смене свойства Picture. (а также при использовании LoadPicture, прим.eax)

TextBox — Меняется текст в текстовом поле. Происходит при смене текста юзером или при смене свойства Text в коде.

Click

Происходит когда юзер нажимает и отпускает кнопку мышки над оъектом. Оно также может происходить при смене некоторого значения объекта.

Для формы такое собитие выполняется при клике на свободном месте формы, или по отключённому элементу управления (т.е. когда его Enabled = False).

Вообще событие происходит и для правой кнопки мыши и для левой. Но для элементов CheckBox, CommandButton, Listbox, и OptionButton происходит только при нажатии левой кнопки мыши.

Для ComboBox или ListBox оно происходит и при клике мышой и также при смене текущего элемента клавишами курсора.

Происходит при нажатии на "ПРОБЕЛ" у элементов CommandButton, OptionButton, или CheckBox, когда те имею фокус.

При нажатии на ENTER при фокусе на элементе CommandButton (то бишь гашей кнопке) и когда установлено свойство Default.

Происходит при нажатии на ESC когда форма имеет Cancel кнопку - CommandButton с установленым свойством Cancel.

Также происходит при нажатии на горячую последовательность. Например, если кнопка имеет Caption - "&Go", то при нажатии Alt+G запуститься событие.

Также, событие Click может быть сгенерировано в следующих случаях в коде: Установка значения Value для OptionButton и CheckBox.

DblClick

Происходит при двойном клике по объекту.

Для формы происходит при двойном клике по форме, а также по отключённому объекту.

Для других элементов:

Двойной клик по объекту левой кнопкой.

Двойной клик по элементу в ComboBox, когда Style = 1. Или также в FileListBox, ListBox, DBCombo, или DBList.

DragDrop

Происходит при завершении операции перетаскивания (Drag&Drop). В обработку события передаются 3 аргумента - координаты курсора (X,Y), где был отпущен объект, и ссылка на объект (Source), который был перетащен.

DragOver

Происходит когда объект перетаскивается над получателем, но кнопка ещё не отпущена. Имеет 4 параметра. Координаты курсора, ссылка на объект, и текущее состояние (State As Integer):

0 = Enter (вошёл) (источник вошёл в область объекта).
1 = Leave (покинул) (источник ушёл из этой области).
2 = Over (над) (произошёл сдвиг в пределах области).

Error

Происходит только при работе с базами данных. Коркретно: при ошибке в доступе к данным при выполнении кода.

Имеет 2 параметра:

dataerr - номер произошедшей ошибки
response - номер, соответствующий выбранному в настройках (Settings):

Если vbDataErrContinue, то response = 0 (Продолжить)
Если vbDataErrDisplay, то response = 1 (Default) Показать сообщение об ошибке.

GotFocus

Происходит, когда объект получает фокус, или при нажатии кнопки Tab или кликом по объекту, а также при запуске метода SetFocus в программе. Форма получает фокус только тогда, когда все видимые элементы отключены (Enabled = False).

Initialize

Это событие имеет только форма.

Обрабатывается первым и один раз. Visual Basic вызывает его при первом создании формы. Здесь обычно размещают код, для инициализации нужных переменны в программе.

ItemCheck

Происходит когда у ListBox контрола свойство Style установлено в 1 (checkboxes) и выбран или сброшен флажок у какого-либо элемента (item) в контроле.

Передаётся один параметр:

index - номер элемента, который был выбран в ListBox.

KeyDown, KeyUp

Происходит когда юзер нажимает (KeyDown) или отпускает (KeyUp) клавишу, в то время как объект имеет фокус. Чтобы получить код клавиши, используйте событие KeyPress. Параметров нет.

KeyPress

Происходит когда юзер нажамает и отпускает клавишу на клавиатуре.

Событие имеет один параметр:

keyascii - код нажатой клавиши. Например, если нажать на клавишу "1" (основного ряда), то keyascii будет равен 49. Если нажать ESC, то 27, и и.д.

Если присвоить этой переменной 0, то нажатая буква (символ) не появится в текством поле. Иногда это бывает очень удобным. Например, можно сделать так, чтобы в текстовое поле можно было вводить только цифры.

 

LinkClose
LinkError
LinkNotify
LinkOpen

LinkClose: Происходит когда DDE соединение закрывается. Может произойти в любое время.

LinkError: Происходит при возникновении ошибки в ходе связи DDE.

LinkNotify: Происходит когда у источника меняются данные, на которые установлена ссылка DDE.

LinkOpen: Происходит при создании инициализации DDE связи с источником.

За подробностями пожалуйста обращайтесь к справочникам, т.к. эти события используются очень редко.

Load

Это событие имеет только форма.

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

Это событие может выполняться несколько раз. Т.е. если вы выгрузите форму оператором Unload, а затем вновь загрузите оператором Load или методом Show, то это событие будет выполнено.

LostFocus

Происходит при потере объектом фокуса, или при нажатии Tab юзером, или при использовании метода SetFocus для другого объекта.

MouseDown, MouseUp

Происходят когда юзер нажимает (MouseDown) или отпускает (MouseUp) кнопку мыши.

Имеют 4 передаваемых параметра:

button - содержит integer - номер кнопки мыши. С помощью этого события можно опеределить какую кнопку нажал пользователь. Для этого используюся константы: vbLeftButton (левая), vbMiddleButton (средняя), vbRightButton (правая). Проверить можно примерно так:

If button = vbRightButton Then ...

shift - содержит integer - указывающее на состояние клавиш Shift, Alt и Ctrl. Бит 0 - Shift, бит 1 - Ctrl, бит 2 - Alt. Для опредения факта нажатия клавиш Ctrl и Alt можно использовать такой код:

If (Shift And (vbCtrlMask Or vbAltMask)) = (vbCtrlMask Or vbAltMask) Then ...

Т.е. мы проверяем содержит ли переменная Shift биты 1 и 2 (оператором And). Скобки везде обязательны. vbShiftMask, vbAltMask, vbCtrlMask - это обычные константы, содержащие маски битов:

vbShiftMask = 1 (нулевой бит) Bin: 00000001
vbCtrlMask = 2 (первый бит) Bin: 00000010
vbAltMask = 4 (второй бит) Bin: 00000100

x, y - координаты курсора мыши того места, где произошло событие MouseUp или MouseDown. Координаты всегда зависят от координытной системы, задаваемой свойствами ScaleHeight, ScaleWidth, ScaleLeft, ScaleTop объекта.

MouseMove

Происходит когда курсор мыши изменяет своё положение над объектом. Т.е. когда курсор стоит на месте, событие не происходит. При каждом сдвиге курсора - срабатывает.

Параметры те же, что и у MouseDown и MouseUp.

ObjectMove

Происходит немедленно после того, как OLE контейнер сдвигается или меняет размеры пока объект активен.

Передаваемые параметры:

left - координата левой грани OLE контейнера
top - координата верхней грани OLE контейнера
width - ширина OLE контейнера
height - высота OLE контейнера

OLECompleteDrag

Происходит когда компонент - источник "брошен" на компонент - цель, информируя объект о том, что либо завершён, либо отменён процесс перетаскивания.

Имеет один параметр:

effect - привожу оригинал: A long integer set by the source object identifying the action that has been performed, thus allowing the source to take appropriate action if the component was moved (such as the source deleting data if it is moved from one component to another). The possible values are listed in Settings.

А Settings может быть:

vbDropEffectNone = 0 - операция "бросания" (Drop) была отменена.
vbDropEffectCopy = 1 - показывать значок копирования данных.
vbDropEffectMove = 2 - "сбрасываемые" данные являются ссылкой на оригинальные данные.

OLEDragDrop

Это событие происходит когда на объект сбрасываются OLE данные. Например, происходит при перетаскивании на объект файлов из проводника, или перетаскивании изображения из Internet Explorer и т.п.

Замечание: Это событие происходит только в том случае, когда свойство OLEDropMode установлено в 1 (Manual).

Имеет очень много параметров:

data - объект типа DataObject. Имеет 4 метода и одно свойство - коллекцию файлов, перетаскивамых на объект. Для получения данных можно использовать метод GetData. Чтобы узнать формат данных, перекинутых на объект можно использовать метод GetFormat.

effect Long - привожу оригинал - set by the target component identifying the action that has been performed (if any), thus allowing the source to take appropriate action if the component was moved (such as the source deleting the data). The possible values are listed in Settings.

button - то же, что и в событии MouseDown(Up).

shift - то же, что и в событии MouseDown(Up).

x,y - то же, что и в событии MouseDown(Up).

Пример. Обработаем перетащенные на форму файлы. Не забудьте установить свойство OLEDropMode в 1.

Private Sub Form_OLEDragDrop _
(Data As DataObject, Effect As Long, _
Button As Integer, Shift As Integer, _
X As Single, Y As Single)
' перетаскиваются файлы?
If Data.GetFormat(vbCFFiles) = True Then
Dim
c As Long
' пройдёмся по всей коллекции
For c = 1 To Data.Files.Count
' покажем имя перетащенного файла
MsgBox "Был перетащен файл: " & Data.Files(c)
Next c
End If
End Sub

OLEDragOver
Происходит при перетаскивании над объектом. Парметры - комбинация парамтров событий OLEDragDrop и обычного DragOver.
OLEGiveFeedback

Происходит после каждого события OLEDragOver. OLEGiveFeedback позволяет источнику обеспечивать визуальную "отдачу" пользователю, такое, как изменение курсора мыши (посмотрите на него при перетаскивании файлов в проводнике с нажатым Ctrl, - видите значок "+", вот это и есть та "отдача"?), которое будет говорить пользователю о том, что происходит.

Параметры - effect и

defaultcursors - boolean - разрешает или запрещает использование курсора по умолчанию. Если True - то используется курсор по умолчанию, если False, то использутся курсор, указанный пользователем в свойстве MousePointer объекта Screen.

OLEStartDrag

Происходит тогда, когда начинается перетаскивание (т.е. когда перетаскиваемый объект (файл, например) появляется над объектом приёмником). Имеет 2 параметры:

data - то же что и у события OLEDragDrop.

allowedeffects - Long - содержит поддерживаемые источником эффекты. Возможные значения описаны в Setting'сах.

Paint

Происходит когда часть или весь объект появляется на экране после сдвига или изменения размера. Событие происходит также при сдвиге окна, которое закрывает объект.

Разберём чуть подробнее:

Событие Paint полезно, если вы используете графические методы объекта (Line, PSet...) в коде. С помощью этого события вы можете убедиться в том, что данные перерисовались, когда это необходимо.

Событие Paint вызывается при запуске метода Refresh.

Если AutoRedraw установлено в True, то перерисовка происходит автоматически, таким образом, это событие теряет свою необходимость.

Если свойство ClipControls установлено в False, то графические методы в процедуре Paint воздействуют только на видимую часть формы; иначе, графические методы перерисовывают всю открытую часть формы (т.е. ту, которая не перекрыта такими элементами, как Image, Label, Line, и Shape).

Используя метод Refresh в событии Resize вызывает перерисовку всего объекта каждый раз, когда происходит изменение его размеров (Resize).

Замечание: Используя событие Paint для определённых задач, может произойти каскадирование событий (Т.е. просто напросто произойдёт рекурсия, когда Paint будет вызывать сам себя, и произойдёт переполнение стека). Чтобы этого избежать, нужно придерживаться следующих правил:

· Избегать вызова события Paint при сдвиге или изменении размеров объекта.
· Внутри события Paint изменять свойства, которые могут вызвать событие Paint. Такие, например, как BackColor.
· Включать метод Refresh метод внутрь Paint.

PathChange

Происходит при смене пути, установкой свойства FileName или Path в коде.

Замечание: Вы можете использовать это события, чтобы сообщить FileListBox'у о том, что путь у DirListBox изменился.

PatternChange

Происходит при изменении маски (такой, как "*.*") установкой свойств FileName или Pattern в коде.

QueryUnload

Это событие имеет только форма.

Происходит перед закрытием формы или приложения. Если закрывается MDI форма, то это событие происходит сначала для формы контейнера, и лишь потом для дочерних форм.

Это событие происходит перед событием Unload.

В обработчик данного события передаётся два параметра:

cancel - integer - если в обработчике события присвоить переменной cancel значение True, то выгрузка формы будет отменена. Если оставить там False, то форма благополучно выгрузится.

unloadmode - константа. Содержит значение - почему происходит выгрузка формы. Может принимать:

vbFormControlMenu = 0 - юзер выбрал команду Close (Закрыть) в меню приложения (слева вверху в заголовке формы).

vbFormCode = 1 - произошёл вызов оператора Unload в коде программы.

vbAppWindows = 2 - Windows завершает работу.

vbAppTaskManager = 3 - закрытие приложения происходит через Ctr+Alt+Del.

vbFormMDIForm = 4 - дочерняя MDI форма закрывается, т.к. закрывается главная.

Замечания:

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

Private Sub Form_QueryUnload _
(Cancel As Integer, _
UnloadMode As Integer)
Dim rez As VbMsgBoxResult
rez = MsgBox("Вы действительно" & _
" хотите выйти?", _
vbQuestion + vbYesNo)
If rez = vbNo Then Cancel = 1
End Sub

Reposition

Происходит когда запись становится текущей записью.

Замечания:

Когда Data контрол загружен, первая запись в объекте RecordSet становится текущей, и вызывается это событие. Когда бы юзер не кликнул любую кнопку на контроле Data, передвигаясь с записи на запись, или вы используете одно из методов Move в коде (такие, как MoveFirst, MoveNext, FindFirst..), или любое другое свойство, которое может изменить текущую запись - происходит событие Reposition.

Событие Validate происходит перед этим событием.

Resize

Происходит когда объект первый раз появляется или когда меняется состояние окна (например, при свёртывании и развёртывании окна). А также при смене размеров окна.

Это событие удобно использовать, если вы хотите сделать "растягивающийса" интерфейс. Т.е. когда все элементы на форме меняют свои размеры, в зависимости от текущих размеров формы. Код для изменения размеров этих элеметов как раз можно поместить в это событие.

Scroll

Происходит тогда, когда сдвигается полоса прокрутки (ScrollBar).

Замечания:

Для DBGrid это событие происходит, когда двигается вертикальная или горизонтальная полоса прокрутки.

Для ComboBox это событие происходит при сдвиге скролбара в выпадающем списке.

Вы можете использовать это события для синхронизации изменения положения полоски прокрутки и другими объектами, с которыми эта полоска связана. К примеру, в обработку этого события вставить код, который будет синхронизировать текущую позицию с другим элеметом. Поместите на форму HScroll и вставьте такой код:

Private Sub HScroll1_Scroll()
    Form1.Caption = HScroll1.Value
End Sub

Теперь в заголовок формы будет меняться в соответствии со сменой положения полоски прокрутки.

Кстати, избегайте использования фукнции MsgBox в этом событии!

Terminate

Это событие имеет только форма.

Происходит когда все ссылки на экземпляры форм, MDI форм, элементы управления, классы удалены из памяти (установкий переменной в Nothing).

Это событие выполняется после события Unload, и выполняется самым последним в программе. Можете использовать его по своему усмотрению.

Timer

Это событие имеется только у элемента управления Timer.

Оно происходит через определённый интервал времени, указанный в его свойтве Interval.

Timer невидим для пользователя, и полезен для внутренних процессов программы.

Его можно использовать когда необходимо, чтобы некоторый код программы выполнился через определённый промежуток времени.

Например, с его помощью можно сделать часы. Для этого достаточно поместить на форму элемент Timer, установите его свойство Interval в 1000 (1 сек = 1000 мс), и вставить следующий код:

Private Sub Timer1_Timer()
    Form1.Caption = Time
End Sub

Функция Time возвращает текущее системное время. Таким образом, каждую секунду будет выполнять событие Timer, и следовательно изменение заголовка формы.

Примечание: количесво таймеров на форме не ограничего.

Unload

Это событие имеет только форма.

Происходит когда форма выгружается из памяти (оператором Unload, например, или нажатием на крестик). В дальнейшем она может быть загружена оператором Load.

При перезагрузке формы ВСЕ ЭЛЕМЕНТЫ УПРАВЛЕНИЯ ИНИЦИАЛИЗИРУЮТСЯ ЗАНОВО, т.е. все значения, которые были в них - теряются.

Updated

Происходит когда меняются данные (при работе с БД).

Имеет параметр Code - integer - описывает, как объект был изменён (описано в настройках). Может принимать следующие константы:

vbOLEChanged = 0 - Данные объекта изменились
vbOLESaved = 1 - Данные объекта были сохранены приложением
vbOLEClosed = 2 - Файл, на который ссылается объект был закрыт
vbOLERenamed = 3 - Файл, на который ссылается объект был переименован

Validate

Это событие нужно для проверки введённых данных. Например, в TextBox. Это событие выполняется только тогда, когда свойство объекта CausesValidation = True.

Рассмотрим пример, как можно проконтролировать данные, введённые в текстовое поле. Поместите на форму TextBox и вставьте код:

Private Sub Text1_Validate _
(Cancel As Boolean)
    If Not (IsNumeric(Text1.Text)) Then
        Text1.ForeColor = vbRed
        MsgBox "Введите в TextBox числа"
        Cancel = True
    Else
        Text1.ForeColor = vbButtonText
    End If
End Sub

Этот код не примет введённый в TextBox текст, пока тот не будет являться числом. Если установить параметр Cancel в True, то фокус вернётся обратно TextBox.

Это событие происходит при потере фокуса у объекта.



..........................................................................................................................

[ Главная ] [ Диски ] [ Книги ] [ Архив рассылки ] [ Архив новостей ] [ Готовые кусочки программ ] [ Карта сайта ]
..........................................................................................................................

По страницам сайта Visaul Progs
или Изучение Visual Basic
Рассылка 'По страницам сайта Visaul Progs' >>> Подпишись на рассылку - будешь получать новые статьи , примеры и много полезной информации из первых рук!!! >>>Если у вас есть статья которой нет на сайте
пришлите ее мне-------->
Послать статью
>>>Если вы хотите задать вопрос
пишите-------->
Мне нужна помощь


Рейтинг сайтов YandeG Rambler's Top100
Реклама:

...:::Design by Mystf0rse 2005-2010 year:::...