Опубликован: 04.07.2006 | Доступ: свободный | Студентов: 5470 / 628 | Оценка: 4.11 / 3.96 | Длительность: 11:08:00
Лекция 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
антонина квасова
антонина квасова
Владимир Муратов
Владимир Муратов

По курсу Visual Basic где же взять материалы для практических работ? 

Светлана Ведяева
Светлана Ведяева
Россия, Саратов
Оксана Пагина
Оксана Пагина
Россия, Москва