Опубликован: 04.07.2006 | Уровень: для всех | Доступ: свободно
Лекция 5:

Макросы. Дальнейшая информация об объектах

38в. Мышь; перетаскивание элементов списков
  • Создать на форме два текстовых поля,
  • свойствам DragIcon обoих полей списка присвоить одно из значенией: :\Program File\Microsoft Visual Studio\Common\Graphics\Icons\DragDrop\Drag1pg.ico, : \Drag3pg.ico, : \Drop1pg.ico,
  • ввести код, данный ниже,
  • стартовать проект, маркировать элементы первого поля списка, перетаскивать их поочерeдно во второе поле списка и наоборот, рис. 5.8.

Пояснения: процедура Form_Load () обеспечивает создание элементов списка первого поля списка. Две процедуры Private Sub lstK_DragDrop(Source As Control, X As Single, Y As Single) обеспечивают возможность перетаскивания элемента списка в другое поле списка и удаление его из первого поля. В процедурах:

Private Sub lstК_MouseDown(Button As Integer, Shift As Integer,_
X As Single, Y As Single),

см. ниже, используется параметр 1 ("ListК.Drag 1").

Мышь; перетаскивание элементов списков

Рис. 5.8. Мышь; перетаскивание элементов списков
Private Sub Form_Load()
lst1.AddItem "Buch"
lst1.AddItem "Heft"
lst1.AddItem "Bleistift"
End Sub

Private Sub lst1_DragDrop(Source As Control, X As Single, Y As Single)
If Source = lst2 Then
lst1.AddItem lst2
lst2.RemoveItem lst2.ListIndex
End If
End Sub

Private Sub lst1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
lst1.Drag 1
End Sub

Private Sub lst2_DragDrop(Source As Control, X As Single, Y As Single)
If Source = lst1 Then
lst2.AddItem lst1
lst1.RemoveItem lst1.ListIndex
End If
End Sub

Private Sub lst2_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
lst2.Drag 1
End Sub
Клавиатура

События, генерируемые клавиатурой, получает объект, имеющий фокус (форма получает событие, если ни один объект не имеет фокуса). Нажатие клавиши ТАВ игнорируется, т.к. она служит для перемещения фокуса . В табл. 5.6 представлены события, связанные с клавиатурой.

Таблица 5.6. События, связанные с клавиатурой
Событие Пояснение
KeyPress Вызывается только при нажатии клавиш, имеющих ANSI-код. Возвращается код ANSI нажатой клавиши; синтаксис: Control_KeyPress(KeyAscii As Integer)
KeyDown Возникает при нажатии любой клавиши; синтаксис: Control_KeyDown(KeyCode As Integer, Shift As Integer)
KeyUp Возникает при отпускании любой клавиши; синтаксис: Control_KeyUp(KeyCode As Integer, Shift As Integer)

Параметр Shift даeт информацию о состоянии клавиш Shift, Ctrl, Alt.

При обработке 2-х последних событий используются клавишные константы (например, vbKeyLeft, vbKeyUp и.т.д), а не ANSI-код. Список KeyCodeConstants находится в каталоге объектов (Members of KeyCodeConstants; Class: KeyCodeConstans).

Практическая работа 39. Клавиатура; обработка событий KeyPress, KeyDown

Последовательность действий:

  • Создать на форме элементы управления Image и два поля Label: у первого значение Name = lbl1, второе используется для надписи, рис. 5.9 внизу, см. также код, данный ниже,
  • ввести код, стартовать проект,
  • нажимать клавиши клавиатуры со стрелками, наблюдать перемещение объекта Image (см. использование метода Move: img1.Move x, y в процедуре Private Sub Form_KeyDown(keycode As Integer, shift As Integer)),
  • нажимать клавиши с символами, наблюдать смену данных в поле метки (обработка события КeyРress), см. процедуру Private Sub Form_KeyPress(keyascii As Integer).
(General) (Declarations)
Dim x As Integer, y As Integer

Private Sub Form_KeyPress(keyascii As Integer)
lbl1.Caption = Chr(keyascii)
End Sub

Private Sub Form_KeyDown(keycode As Integer, shift As Integer)
Select Case keycode
Case vbKeyLeft
x = x - 350
If x <= 0 Then
x = frm.Width - img1.Width
End If
Case vbKeyUp
y = y - 350
If y <= 0 Then
y = frm.Height - img1.Height
End If
Case vbKeyRight
x = x + 350
If x >= frm.Width Then
x = 0
End If
Case vbKeyDown
y = y + 350
If y >= frm.Height Then
y = 0
End If
End Select

img1.Move x, y
End Sub
Клавиатура; Event KeyPress, Evens KeyDown, KeyUp

Рис. 5.9. Клавиатура; Event KeyPress, Evens KeyDown, KeyUp
Константин Новков
Константин Новков
Как подключить библиотеку DLL ?
антонина квасова
антонина квасова
Что реализует инструкция Open - Open "a:\t.txt" For Output As #1
Светлана Ведяева
Светлана Ведяева
Россия, Саратов
Оксана Пагина
Оксана Пагина
Россия, Москва