Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб14_VisualBasic.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
595.97 Кб
Скачать

1.2. Автоматическое перетаскивание

Автоматическое перетаскивание – наиболее простая реализация технологии Drag&Drop.

Делается это элементарно. У многих объектов имеется свойство DragMode. Оно определяет режим перетаскивания для объекта и может принимать два значения: DragMode=0, т.e. вручную, и DragMode=1, т.е. автоматически. По умолчанию оно в проекте всегда установлено состояние 0, т.е. ручное.

Установить свойство DragMode=1 можно в окне свойств, а можно программно. Давайте создадим новый проект и посмотрим, как это все работает.

Пример.

1. Расположите на форме три текстовых поля Text1, Text2 и Text3. Организуем перетаскивание содержимого Text1 и Tex2 в Text3.

2. В процедуре загрузки формы установим автоматический режим свойства DragMode для Text1 и Text2 и заполним их текстом, а Text3 очистим (рис. 14.1).

Во время перетаскивания можно менять изображение курсора мышки. Курсор меняется с помощью свойства DragIcon. Это свойство определяет значок, который будет использоваться в качестве указателя мыши при операции перетаскивания. Можно в окне свойств установить свойству DragIcon какую-нибудь иконку – файл с расширением .ico. Мы сделаем это программно. Но при программной загрузке картинок их всегда надо таскать с проектом, а при загрузке картинок в окне свойств они становятся частью проектов и отдельно их хранить не надо.

Option Explicit

Private Sub Form_Load()

Text1.DragMode = 1

Text2.DragMode = 1

Text1.Text = "Доброе утро"

Text2.Text = "Спокойной ночи"

Text3.Text = ""

Text1.DragIcon = LoadPicture(App.Path & "\Drag1pg.ico")

Text2.DragIcon = LoadPicture(App.Path & "\Drag1pg.ico")

End Sub

Соответствующие файлы с расширением .ico нужно скопировать в папку с данным проектом.

Рис. 14.1

3. Мы будем использовать для создания процедуры событие DragDrop, а поскольку оно возникает по окончании процесса перетаскивания, то процедуру надо создавать в Text3. Ведь именно там конечный пункт нашего процесса.

С помощью аргумента Source и ключевого слова TypeOf мы проведем проверку типа объекта (то что мы перетаскиваем Text в Text, а не Text в Picture) и изменим содержимое Text3. Это и будет результат перетаскивания.

Private Sub Text3_DragDrop(Source As Control, X As Single, Y As Single)

If TypeOf Source Is TextBox Then

Text3.Text = Source.Text

End If

End Sub

4. Запустите проект и поперетаскивайте в Text3 и Text1 и Text2.

5. Так как на форме других объектов, кроме текстовых полей нет, то вместо ключевого слова TypeOf можно проверять конкретно каждый элемент и присваивать значение того, которого захотим. Для идентификации элемента есть свойство Tag. Смысл его в том, что по нему с помощью аргумента Source мы можем однозначно идентифицировать объект-источник. В отличие от других свойств, значение свойства Tag не используется языком Visual Basic, но его можно использовать для идентификации объектов. Этому свойству мы можем присвоить любое имя-идентификатор, главное, чтоб они не были одинаковыми. Для этого в процедуру Form_Load допишем две строчки:

Text1.Tag = "Текст1"

Text2.Tag = "Текст2"

Теперь наша процедура Text3_DragDrop будет выглядеть следующим образом:

Private Sub Text3_DragDrop(Source As Control, X As Single, Y As Single)

If Source.Tag = "Текст1" Or Source.Tag = "Текст2" Then

Text3.Text = Source.Text

End If

End Sub

6. Сохраните и протестируйте проект. Обратите внимание, что отредактировать текст ни в Text1, ни в Text2 нельзя. Дело в том, что инициируемые пользователем события мыши или клавиатуры KeyDown, KeyPress, KeyUp, MouseDown, MouseMove и MouseUp распознаваться НЕ БУДУТ! Видя такое дело, нам целесообразно перейти к более сложному, но контролируему ручному перетаскиванию.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]