Visual Basic 6. Руководство разработчика


Программирование операции перетаскивания для вставки объектов


OLE-операции Drag-and-Drop (Перетащить-и-опустить) удобнее задавать в тексте программы, а не определять автоматически. Проект OLEDDMAN (папка OLEDD на компакт-диске) имеет тот же интерфейс, что и проект OLEDDAUTO, но в нем установлено значение Manual свойства OLEDropMode. Значение своиства OLEDragMode элемента управления TextBox установлено в Automatic, поэтому для инициализации операции писать программу не требуется. То же относится и к элементам управления RichTextBox и PictureBox.

Каждый из элементов управления определяет, когда на него опущен объект, и реагирует соответствующим образом. Рассмотрим самый простой элемент управле­ния — TextBox. Когда на него опущен объект, происходит событие OLEDragDrop, эквивалентное событию DragDrop. Событие OLEDragDrop определяется следующим образом:

Private Sub Textl_OLEDragDrop^(Data As Data0b]ect, _

Effect As Long, Button As Integer, Shift As Integer, _

x As Single, у As Single)

Data - это переменная, описывающая объект, который был опущен. Эта пере­менная имеет несколько свойств для доступа к объекту (они рассматриваются вкратце). Effect — константа, которая определяет тип перемещения (операция Move или Copy). Параметр Button

описывает кнопку, щелчок на которой инициализирует операцию помещения объекта; параметр Shift

содержит информацию о состоянии клавиш управления Shift, Alt и Ctrl. Последние два параметра - координаты точки, в которую помещается скопированный или перемещенный объект.

Методы, применяемые при работе с объектами типа Data подобны методам, используемым при работе с буфером обмена Clipboard. Метод GetFormat позволяет определить формат данных. При этом он не возвращает тип данных. При его вызове необходимо указывать предполагаемый тип данных, и если он соответствует указанному, то возвращается значение True, в противном случае — False. Чтобы выяснить, содержит ли объект Data текст, следует воспользоваться следующим оператором If:

If Data.GetFormat(vbCFText) Then

{обработка текста}

End If

(Константы, описывающие различные типы данных, точно такие же, как и ис­пользуемые при работе с буфером обмена.)




Начало  Назад  Вперед