Ведущий
рассылки: Сёмин Герман Сергеевич akaFerrUM
Привет всем, кто принялся
изучать VisualBasic. Мы
уже прошли с вами четыре урока, и на этом я
познакомлю и расскажу, что такое события,
научу работать с мышью и ListBox’ом.
ВНИМАНИЕ!!!
Если кому-то показалось, что мы слишком
быстро движемся, то напишите мне. Как
всегда я приведу пример программы, которая
будет использовать события мыши и покажет
пример работы с ListBoxом.
Называться она будет “MouseClick”.
Урок
– 5
“MouseClick”
Для
начала узнаем, что такое событие.
Программы
в операционной системе Windowsуправляются
событиями. То есть если вы нажимаете на
кнопку, то происходит событие Click.
Двойное нажатие –DblClick
(DoubleClick).
В
VisualBasicсобытия видны в коде:
Private Sub somebutton_Click
End sub
То
есть при нажатии на кнопку somebuttonпроисходит
событие Clickи выполняются некоторые действия,
указанные вами.
Сейчас
я расскажу, как можно изменять\вставлять
новые события:
1.На
форму перенесите кнопку(Button)
и дважды нажмите на неё, в окне кода вы
увидите следующее:
Private Sub Command1_Click()
End Sub
Это
всё означает, что при одном щелчке на кнопку,
будет выполнены некоторые действия.
2.
Можно изменить события при помощи
выпадающего меню (см. рис.):
Там есть множество событий для
кнопки, с которыми мы познакомимся позже, а
сейчас мы познакомимся с событиями
характерными для мыши.
Самые распространённые события
для мыши – это Clickи DblClick.
Событие Clickгенерируется
при щелчке мышью на элементе. Чаще всего
используется для кнопок.
Событие DblClickгенерируется
при двух быстрых последовательных щелчках
мышью на элементе. Чувствительность
двойного щелчка, как вы наверняка знаете,
задаётся в настройках мыши в панели
управления Windows.
Событие DragDropгенерируется
при сбрасывании объекта или его
перетаскивания. Событие можно наблюдать,
когда вы перетаскиваете значки в Windows.
Вообще эта технология называется DragnDrop (“Взял и
перетащил”) и является больной проблемой в
современных приложениях. С этой
технологией я вас познакомлю далее в
примере. ПроцедурасобытияDragDrop имеетследующийвид:
Private
Sub someitem_DragDrop(Source As Control, X As Single, Y As Single)
Обратите внимание на три
параметра (Source,
X, Y) – перед тем, как выполнять какие-либо
действия, нужно проверить их значение.
Параметр Sourceсодержит имя элемента, сброшенного на
текущий объект, а Xи Y– координаты указателя мыши.
Событие MouseDownгенерируется,
если нажать кнопку и не отпускать её. Имеетследующийвид:
Private
Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As
Single)
Xи Y –
координаты мыши. Buttonможет принимать следующие значения:
1
Если нажата левая кнопка мыши.
2
Если нажата правая кнопка мыши.
4
Если нажата средняя кнопка мыши.
Пример:
Private
Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As
Single)
IfButton = 2 Then‘ Если нажата Правая кнопка мыши, то ….
…
End
If
End
Sub
Параметр Shiftтакже имеет три значения:
1
Если зажата клавиша Shift
2
Если зажата клавиша Ctrl
4
Если зажата клавиша Alt
Внимание!!!
Чтобы указать две зажатые клавиши, нужно
сложить их значения! Например цифра 6
означает,
что были зажаты Ctrl
и Alt
(2 + 4).
Событие MouseMoveгенерируется
при перемещении курсора мыши над элементом.
Событие MouseUpгенерируется
при отпускании зажатой кнопки мыши.
Задайте
свойству Nameформы Form1
значение frmMain,
а Caption– значение Перетаскивание.
Разместите
на форму два списка (ListBox)
одинакового размера. Один сверху, другой
снизу формы, по всей её ширине.
Задайте
свойству Nameпервого списка значение lst1,
а свойству DragIcon
(картинка перетаскивания) – значение папка
visualbasic\Common\Graphics\Icons\DragDrop\Drag1pg.ico
Задайте
свойству Nameпервого списка значение lst2,
а свойству DragIcon
(картинка перетаскивания) – значение папка
visualbasic\Common\Graphics\Icons\DragDrop\Drag1pg.ico
В общем всё
должно выглядеть примерно так:
Дважды
щёлкните на форму и в процедуру Form_Load()
напишите:
Private Sub Form_Load()’ Призагрузкеформы…
lst1.AddItem
"Яблоки"’ При помощи AddItemмы
добавляем в ListBoxэлементы.
lst1.AddItem "Персики"
lst1.AddItem "Апельсины"
End Sub
Добавте
в процедуру события lst1_MouseDown():
Private Sub lst1_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
Iflst1.ListCount
> 0 Then’Если началось перетаскивание.
lst1.Drag 1 ‘Тащимобъект
End If
End Sub
А
теперь в lst1_DragDrop():
Private
Sub lst1_DragDrop(Source As Control, X As Single, Y As Single)
IfSource = lst2
Then ‘ Если
перетаскивают со второго ListBoxa,
то
lst1.AddItemlst2.Text‘в
первый добавляем перетаскиваемый объект
lst2.RemoveItemlst2.ListIndex‘ а из второго удаляем
его.
End
If
End
Sub
А
теперь для второго ListBoxaMouseDownи DragDrop:
Private
Sub lst2_DragDrop(Source As Control, X As Single, Y As Single)
IfSource = lst1
Then ‘Здесь
то же самое, только наоборот
lst2.AddItem
lst1.Text
lst1.RemoveItem
lst1.ListIndex
End
If
End
Sub
Private
Sub lst2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If
lst2.ListCount > 0 Then
lst2.Drag
1
End
If
Сохраните
и запустите проект и посмотрите, что у вас
получилось.
Ну вот и всё. Урок
закончен. Пишите мне обо всём, что вы не
понимаете – я обязательно отвечу!!! В скором
времени мы применим все полученные знания
при создании одной игры.
Но до неё еще
немало нужно изучить, и мы изучим!!! До
свиданья!!!