|
Перетаскивание все чаще используется в Windows-приложениях (например, для регулировки положения разделительной полосы в Windows Explorer). Благодаря ему многие операции выполняются быстрее и проще. Наделить приложение Visual Basic возможностью перетаскивания не так уж сложно. Следующий пример показывает, как это делается:
1. Создайте новый проект типа Standard EXE.
2. Задайте свойству Name формы Form1 значение frmMain, а свойству Caption — значение Перетаскивание.
3. Поместите на форму два списка одинакового размера. Один должен находиться в верхней, а другой — в нижней частях формы.
4. Задайте свойству Name верхнего списка значение lstA, а свойству DragIcon — значение \Graphics\Icons\DragDrop\Draglpg.ico.
5. Задайте свойству Name нижнего списка значение lstB, а свойству DragIcon -значение \Graphics\Icons\DragDrop\Draglpg.ico. Примерный вид формы показан на рис. 11.1.
Рис. 11.1. Приложение с поддержкой перетаскивания
6. Добавьте в процедуру события Form_Load() следующий фрагмент:
Private Sub Form_Load()
lstA,AddItem "Яблоки"
lstA.AddItem "Персики"
lstA,AddItem "Апельсины"
End Sub
7. Добавьте в процедуру события lstA_MouseDown() следующий фрагмент:
Private Sub lstA_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If lstA.ListCount > 0 Then
lstA.Drag 1
End If
End Sub
8. Добавьте в процедуру события lstA_DragDrop() следующий фрагмент:
Private Sub lstA_DragDrop(Source As Control, X As Single, Y As Single)
If Source = lstB Then
lstA.Additem lstB.Text
lstB.RemoveItem lstB.ListIndex
End If
End Sub
9. Добавьте в процедуру события lstB_MouseDown() следующий фрагмент:
Private Sub lstB_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If lstB.ListCount > 0 Then
lstB.Drag 1
End If
End Sub
10. Добавьте в процедуру события lstB__DragDrop() следующий фрагмент:
Private Sub lstB_DragDrop(Source As Control, X As Single, Y As Single)
If Source = lstA Then
lstB.Additem lstA.Text
lstA.RemoveItem lstA.ListIndex
End If
End Sub
11. Сохраните и запустите проект.
Верхний список содержит несколько строк с названиями фруктов. Вы можете щелкнуть на любой строке и перетащить ее в нижний список. Когда указатель мыши окажется над ним, отпустите кнопку мыши. Затем строки можно перетащить обратно в верхний список (рис. 11.2).
Рис. 11.2. Перетаскивание строк
Ключевым для этой программы является метод Drag. Обратите внимание — в процедуре события MouseDown() он вызывается с параметром 1, который сообщает элементу о начале перетаскивания. Если параметр равен 0, перетаскивание прекращается. Иными словами, чтобы прекратить перетаскивание, следует присвоить свойствам Тор и Left значения координат x и у указателя мыши и вызвать метод Drag 0. При этом имитируется перемещение объекта, тогда как на самом деле оно выполняется в процедуре события DragDrop().
Наш разговор о перетаскивании подходит к концу. Попробуйте немного поэкспериментировать — развлекайтесь и заодно следите за происходящим. Возможно, вам захочется использовать перетаскивание в своих проектах. Обратите внимание на свойство DragIcon источника, то есть перетаскиваемого объекта. Если не задать его значение, вы увидите лишь контур перетаскиваемого объекта.
Дата добавления: 2015-07-20; просмотров: 72 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Событие MouseDown | | | Свойство OLEDropAllowed |