Основы офисного программирования и язык VBA


Перемещение объектов. Как реализовать технику DragAndDrop - часть 2


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

Function StartDrag ([Effect As fmDropEffect]) As fmDropEffect

Эта функция обычно вызывается в операторе присваивания вида:

ResultEffect=объект. StartDrag ([Effect as fmDropEffect])

Необязательный параметр Effect и результат выполнения функции принадлежат перечислению fmDropEffect. Константы, входящие в это перечисление имеют следующие значения:

  • fmDropEffectNone = 0 - не копировать и не передвигать опущенный исходный элемент на место назначения,
  • fmDropEffectCopy = 1 - копировать опущенный исходный элемент на место назначения,
  • fmDropEffectMove = 2 - передвинуть опущенный исходный элемент на место назначения,
  • fmDropEffectCopyOrMove = 3 - скопировать или передвинуть опущенный исходный элемент на место назначения.

Параметр Effect задает цель операции и имеет по умолчанию значение 1 (fmDropEffectCopy). Обычно он опускается, поскольку значение по умолчанию задает наиболее вероятную цель операции. Возвращаемое методом StartDrag значение определяет результат выполнения операции. Его можно использовать для анализа того, что же произошло в результате перетаскивания на самом деле. Важно только понимать, что между запуском метода StartDrag в правой части оператора присваивания и присваиванием результата левой части переменной ResultEffect происходит много событий в процессе перемещения объекта, работают обработчики этих событий и результат говорит о том, как закончился этот процесс.

Вот как выглядит спроектированное нами диалоговое окно "Поле и Список" в процессе работы с ним:

Окно "Поле и Список" в процессе работы

Рис. 13. 6.  Окно "Поле и Список" в процессе работы

В этом диалоговом окне пользователь имеет возможность выбрать произвольный элемент списка "Цвета" и перетащить его мышью в поле "Любимый цвет"

Рассмотрим обработчики событий, поддерживающие процесс перетаскивания. Начнем с обработчика события Initialize для диалогового окна, обеспечивающего инициализацию начального состояния:




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