Мой Kbyte.Ru
Рассылка Kbyte.Ru
Группы на Kbyte.Ru
Партнеры Kbyte.Ru
Реклама
Сделано руками
Сделано руками
> Статьи - [root] -

Visual Basic 5.0/6.0 - Окна и формы

Все статьи / Интерфейс / Окна и формы

Методы и события форм

Автор: [root] | добавлено: 03.03.2010, 15:40 | просмотров: 10424 (2+) | комментариев: 0 | рейтинг: *x6

Основные свойства форм я рассматривал в статье “Фундамент программы или основные свойства форм”, пришло время рассмотреть основные методы и события форм.

 

Я думаю, описанные мною свойства и методы, помогут разобраться новичкам в хитросплетении кодов и писать свои программы, используя в полную силу полученные знания. Ведь как можно писать программы не зная всех особенностей и возможностей языка программирования. Да, некоторые моменты я опускаю и не рассматриваю в статьях, но для начинающих, весь перечень необходимых знаний я пытаюсь изложить, в легком для понимания виде, с примерами и комментариями.

 

Так же советую, прежде чем садиться разрабатывать любое приложение, приложите усилия и просмотрите все свойства и разберите аспекты, которые могут пригодиться вам при разработке. Либо в голове, либо на бумаге составьте план. Разработайте графический интерфейс, т.е. расположите на формах все необходимые элементы управления. Разберитесь с помощью, каких методов и событий будут совершаться действия в вашем приложении. Вспомните или изучите параметры этих методов и возможное их применение.

Только после этого приступайте к написанию программного кода.

 

А незнание главных моментов работы с тем или иным элементом управления может привести к тому, что время, потраченное на написание кода, будет потеряно, а результат не достигнут. Будет достаточно обидно, если вы разработали алгоритм для своего приложения, забыв о методе, который, допустим, позволит проделать весь ваш код двумя строчками. И получится, что все ваши усилия были потрачены зря.

 

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

 

Для начала, откройте диалоговое окно Options… в меню Tools. И проверьте, установлена ли галочка Auto List Members – автоматически выводить список всех свойств и методов выбранного объекта.

 

Рис 1. Диалоговое окно Options, вкладка Editor

 

Рис 1. Диалоговое окно Options, вкладка Editor

 

Т.е если это опция включена, то после ввода имени и точки будет выводиться список всех свойств и методов для выбранного объекта. Если галочка не стоит, советую ее поставить, что очень облегчит написание программного кода. Всегда есть возможность добавить свойство или метод, лишний раз, не набирая его на клавиатуре.

 

Совет. Чтобы в коде программы обратиться к форме, вместо имени текущей формы, можно использовать оператором Me, что позволит немного упростить код и лишний раз не вспоминать имя формы.

 

Рис 2. Меню, содержащее методы и свойства выбранного объекта

 

Рис 2. Меню, содержащее методы и свойства выбранного объекта

 

Выбрать нужный метод можно, как щелчком мыши, так и нажатием клавиши Tab на клавиатуре. Если воспользоваться клавишей Enter, то вы перейдете на следующую строку и не установите значение для выбранного свойства, т.е. придется прилагать новые усилия, чтобы вернуться на нужную строку.

 

Свойства и методы имеют разные иконки, так что их легко различить.

 

Методы:

Circle

Cls

 

Свойства:

Width

Visible

 

Рассмотрим основные методы работы с формой

 

Circle – позволяет нарисовать эллипс, окружность, дугу или сектор. Свойство формы AutoRedraw установите в True.

Синтаксис:

Объект.Circle [Step] (X, Y), радиус, [Цвет], [Начало], [Конец], [Отношение]

 

Пример использования:

Me.Circle (1000, 1000), 500, vbRed

Рисует круг красного цвета с радиусом 500.

 

Me.Circle (1000, 1000), 500, vbRed, , , 0.5

Рисует эллипс, сжимая круг по вертикальной оси.

 

Const P = 3.141593

Me.Circle (1000, 1000), 500, vbRed, , P / 2, P

Рисует дугу.

 

Cls – очистка формы или PictureBox. Очищает графическое содержание окна программы.

 

Пример использования:

 

Программа рисует круг, разбитый на секторы с разными стилями штриховки и разными цветами рисования.

 

Option Explicit


Private Sub
Form_Load()
  Timer1.Interval = 100
End Sub

Private Sub Timer1_Timer()
  Const P = 3.141593
  Dim i As Integer
  Dim dblStart, dblEnd As Double


  Randomize Timer

  dblEnd = -0.001
  For i = 1
To 6
    FillStyle = i + 1
    dblStart = dblEnd
    FillColor = Int(Rnd(1) * 65535) + 16777215
    ForeColor = Int(Rnd(1) * 16777215) + 65535
    DrawWidth = 2
    dblEnd = -(2 * P / 6) * i
    Circle (150, 100), 70, , dblStart, dblEnd
  Next
End Sub

 

Hide – позволяет удалить форму с экрана, но не выгружает из памяти.

 

Line – позволяет нарисовать линию или прямоугольник. Свойство формы AutoRedraw установите в True.

Синтаксис:

Объект.Line [Step] (X1, Y1) [Step] - (X2, Y2) , [Цвет], [B][F]

 

В круглых скобках указаны обязательные параметры, в квадратных необязательные.

 

Пример использования:

 

Me.Line (1000, 1000)-(2000, 2000), vbBlue

Рисует линию синего цвета.

 

Me.Line (500, 500)-(4000, 2000)

Рисует линию тем цветом, который установлен в свойстве ForeColor формы.

 

Me.Line (1000, 1000)-(2000, 2000), vbRed, BF

Рисует квадрат, залитый красным цветом.

 

Move – позволяет переместить форму.

Синтаксис:

Me.Move [Левый край], [Верхний край], [Ширина], [Высота]

 

Пример использования:

Me.Move 2000, 2000, 5000, 5000

Перемещает форму, изменяя размер.

 

Me.Move 100, 7000

Перемещает форму, параметры размера не указаны.

 

PaintPicture – позволяет скопировать определенную область на форме или PictureBox в другой рисунок. Свойство формы AutoRedraw установите в True.

 

Синтаксис:

Me.PaintPicture [Источник], [X1], [Y1], [Ширина1], [Высота1], [X2], [Y2], [Ширина2], [Высота2], [Операция]

 

Константы параметра “операция”:

 

Const vbDstInvert = 5570569 (&H550009)

Инвертирование конечного рисунка.

 

Const vbNotSrcCopy = 3342344 (&H330008)

Копирование инвертированного источника в конечный рисунок.

 

Const vbSrcAnd = 8913094 (&H8800C6)

Операция AND, для пикселей источника и конечного рисунка.

 

Const vbSrcCopy = 13369376 (&HCC0020)

Копирование источника в конечный рисунок. Установлено по умолчанию.

 

Const vbSrcInvert = 6684742 (&H660046)

Операция XOR, для пикселей источника и конечного рисунка.

 

Const vbSrcPaint = 15597702 (&HEE0086)

Операция OR, для пикселей источника и конечного рисунка.

 

Пример использования:

 

Me.PaintPicture Picture1, 0, 0, 3000, 3000, 0, 0, 3000, 3000, vbSrcCopy

Копирует изображение из Picture1 на форму, обрезая его соответственно заданным координатам.

 

Point – возврат значения цвета выбранной точки. Если координаты выпадут за пределы формы, возвратит -1.

 

Пример использования:

 

Label1 = Me.Point(2, 2)

 

PopupMenu – позволяет показать контекстное меню.

 

Пример использования:

 

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button =   2 And vbRightButton Then
    'проверка, нажата ли правая клавиша мыши
    PopupMenu mnuFile
  End If
End Sub

 

Print – печать текста на форме. Свойство формы AutoRedraw установите в True.

 

Пример использования:

 

Me.Print "Поздравляю!" & vbCrLf & "Желаю всего наилучшего!"

 

PSet – рисование точки указанного цвета в заданном месте. За толщину объекта отвечает свойство DrawWidth.

 

Синтаксис:

Объект.PSet [Step] (X, Y), [Цвет]

 

Пример использования:

 

Me.DrawWidth = 10
Me.PSet (100, 100), vbRed

 

Refresh – производит обновление формы.

 

Scale – установка масштаба.

 

ScaleX – используется для преобразования значения высоты формы из одних единиц (установленных в ScaleMode) в другие.

 

ScaleY – используется для преобразования значения ширины формы из одних единиц (установленных в ScaleMode) в другие.

 

SetFocus – передает фокус форме. Форма может получить фокус, только если на ней нет элементов управления, либо они не видны или не доступны.

 

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

 

TextHeight – возвращает высоту указанной строки.

 

Пример использования:

 

Label1 = Me.TextHeight("Поздравляю!" & vbCrLf & "Желаю всего наилучшего!")

 

TextWidth – возвращает ширину указанной строки.

 

Пример использования:

 

Label1 = Label1 & Space(1) & Me.TextWidth("Поздравляю!" & vbCrLf & "Желаю всего наилучшего!")

 

Рассмотрим основные события формы

 

Давайте просмотрим все события для выбранного объекта, в нашем случае для формы, это очень легко сделать. В окне редактирования кода, сверху, видим 2 списка (Object и Procedure), в левом находятся объекты, которые в данный момент находятся на форме и собственно сама форма. Выберем в списке Object – Form, в правом автоматически откроется наиболее часто используемое событие для форм – Load. Полистав список Procedure можно увидеть все доступные события.

 

Рис 3. Список Object

 

Рис 3. Список Object

 

Рис 4. Список Procedure

 

Рис 4. Список Procedure

 

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

 

Код:

 

Option Explicit

Private Sub Form_Activate()
  Print "Возникает событие Activate"
End Sub

Private Sub Form_GotFocus()
  Print "Возникает событие GotFocus"
End Sub

Private Sub Form_Load()
  Print "Возникает событие Load"
End Sub

Private Sub Form_Resize()
  Print "Возникает событие Resize"
End Sub

 

Рис 5. Результат выполнения программы

 

Рис 5. Результат выполнения программы

 

Activate – происходит, когда форма становится активной, т.е. получает фокус. Срабатывает лишь при переключении между формами проекта. Происходит каждый раз при активации формы.

 

Click – происходит по щелчку мыши, на свободном месте формы. Как правой, так и левой кнопки.

 

DblClick – происходит по двойному щелчку, правой и левой кнопки. Причем событие Click все же происходит.

 

Пример использования:

 

Private Sub Form_Click()
  Print "1"
End Sub

Private Sub Form_DblClick()
  Print "2"
End Sub

 

Deactivate – событие происходит, в том случае, когда форма перестает быть активной. Противоположно событию Activate. Возникает при потере фокуса. Срабатывает лишь при переключении между формами проекта.

 

DragDrop – происходит при завершении операции перетаскивания. В тот момент, когда элемент сбрасывается на форму.

 

Пример использования:

 

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
  Print "Попытка переместить кнопку"
End Sub

Private Sub Form_Load()
  Command1.DragMode = 1
End Sub

 

DragOver – происходит, когда объект-источник находится над объектом-получателем, но кнопка еще не отпущена.

 

GotFocus – происходит при получении формой фокуса. По нажатию клавиши Tab или с помощью метода SetFocus.

 

Initialize – происходит при создании формы, причем происходит один раз. До загрузки формы, во время конфигурации.

 

KeyDown – происходит, когда форма имеет фокус и пользователь нажимает клавишу на клавиатуре.

 

KeyPress – происходит при нажатии и удерживании клавиши. Причем момент удержания происходит очень быстро, почти мгновенно. При помощи этого события можно получить код нажатой клавиши.

 

KeyUp – происходит, когда форма имеет фокус и пользователь отпускает клавишу на клавиатуре.

 

Load – загрузка формы в память, до ее появления на экране. Данное событие имеет только форма. Форма может быть выгружена и заново загружена в ходе выполнения приложения, сколько угодно раз. Следовательно, событие может возникать по желанию разработчика несколько раз.

Наверное, это самое используемое событие. Код события выполняется пока форма, еще не видна на экране.

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

 

Пример использования:

Центрирует форму на экране.

 

Private Sub Form_Load()
  Me.Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
End Sub

 

LostFocus – происходит когда форма теряет фокус.

 

MouseDown – происходит во время нажатия кнопки мыши на форме.

 

MouseMove – происходит при перемещении указателя мыши над формой.

 

MouseUp – происходит лишь тогда, когда пользователь после нажатия на форме, отпускает клавишу мыши.

 

События MouseDown, MouseMove и MouseUp имеют одинаковые параметры:

Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

 

Button – содержит номер клавиши мыши.

Константы:

Const vbLeftButton = 1

Const vbMiddleButton = 4

Const vbRightButton = 2

 

Shift – содержит информацию о состоянии клавиш ALT, CTRL и SHIFT.

Константы:

Const vbAltMask = 4

Const vbCtrlMask = 2

Const vbShiftMask = 1

 

X, Y – координаты указателя мыши, где произошло событие.

 

QueryUnload – происходит перед событием Unload, перед закрытием формы. Если при обработке события параметру Cancel присвоить значение True, то выгрузка формы будет отменена.

 

Параметр UnloadMode содержит значение, по какой причине происходит закрытие формы.

 

Константы параметра UnloadMode:

Const vbAppTaskManager = 3
- по нажатию Ctrl+Alt+Del
Const vbAppWindows = 2
- по завершению Windows
Const vbFormCode = 1
- в коде приложения вызвано событие Unload
Const vbFormControlMenu = 0
- по нажатию "Закрыть" в оконном меню, в заголовке формы.
Const vbFormMDIForm = 4
- по закрытию главной формы, закрывается дочерняя.

 

Пример использования:

 

Private Sub Form_QueryUnload (Cancel As Integer, UnloadMode As Integer)
  
If UnloadMode = vbFormControlMenu Then
    Cancel = True
  
End If
End Sub

 

Resize – происходит при изменении размеров формы. Можно использовать для масштабирования элементов управления при изменении размера формы.

 

Пример использования:

 

Private Sub Form_Resize()
  Text1.Height = Form1.ScaleHeight
  Text1.Width = Form1.ScaleWidth
End Sub

 

Terminate – выполняется самым последним событием, после Unload. Данное событие имеет только форма.

 

Unload– выгрузка формы и удаление из памяти. Данное событие имеет только форма. С помощью параметра Cancel можно отменить удаление формы.

 

Пример использования:

 

Private Sub Form_Unload(Cancel As Integer)
  
If MsgBox("Вы уверены, что хотите выйти?", vbYesNo, "Выход из программы") = vbYes Then
    Unload Me
    
Set Form1 = Nothing
  
Else
    Cancel = 1
  
End If
End Sub

 

Данная статья не является учебным пособием или полным руководством к использованию - это обзор наиболее часто используемых методов и событий формы. Статья рассчитана на начальный уровень знания программирования на языке Visual Basic 6.

 

Вопросы и мысли, комментарии жду на rootsoft@mail.ru и в форум.

Если вас интересует, какая нибудь тема, пишите – попробую в дальнейшем ее раскрыть.

+ Добавить в избранное
    ? Помощь
Об авторе

[root]

Нет информации об авторе...

См. также:
Профиль автора
[root]
Последние комментарии (всего: 0)

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учетная запись на Kbyte.Ru, пройдите процедуру авторизации OpenID.
Если Вы еще не зарегистрированы на Kbyte.Ru - зарегистрируйтесь.


Нет комментариев...

Авторизация
 
OpenID
Зарегистрируйся и получи 10% скидку на добавление своего сайта в каталоги! Подробнее »
Поиск по сайту
Реклама
Счетчики