NumClick = 0

'число щелчков

TextBox1.Text = 'Пример переноса данных с помощью

DataObject»

End Sub

4. При последовательных щелчках по командной кнопке будут происходить последовательно действия, описанные в программе:

Private Sub CommandButton1_Click()

Select Case NumClick

Case 0

NewData.SetText TextBox1.Text

Label1.Caption = «Из первого поля в DataObject»

Case 1

NewData.PutInClipboard

Label1.Caption = «Из DataObject в буфер обмена»

Case 2

TextBox2.Paste

Label1.Caption = «Из буфера обмена во второе поле»

End Select

NumClick = NumClick + 1

If NumClick = 3 Then NumClick = 0

End Sub

5. Откомпилируйте программу и запустите форму на выполнение.

Примечание. Перенос информации из одного поля в другое можно осуществить и через буфер обмена, минуя DataObject. Для копирования данных из поля ввода в буфер обмена можно использовать метод Сору.

Перемещение объектов. Реализация технологии DragAndDrop

Для копирования данных из поля ввода в буфер обмена обычно вызывают метод Сору. Однако при организации интерфейса в диалоговых формах полезно предоставить пользователю возможность работы с техникой DragAndDrop (Переместить и Опустить). Некоторый объект захватывается мышью, перетаскивается к другому целевому объекту и отпускается, изменяя при этом свойства целевого объекта. Типичным примером является возможность перетаскивать элемент из одного списка в другой. Другой пример – перетаскивание писем и опускание их в почтовый ящик. Важным элементом этой техники является изменение внешнего вида курсора. Захват объекта происходит при подведении курсора к объекту и нажатии левой кнопки мыши. В этот момент курсор меняет внешнюю форму. Когда происходит перемещение мыши, то в тех областях, где расположен целевой объект, курсор снова меняет форму, показывая, что цель достигнута. Если в этот момент отпустить левую кнопку мыши, то операция перемещения заканчивается успешно. Если отпустить кнопку мыши в других областях, то это приведет к неудаче. Объект DataObject и его метод StartDrag являются частью этой технологии.

Пример 29. Создать форму, имеющую два элемента управления: список и текстовое поле. При помощи мыши из списка перетаскивают в текстовое поле необходимый элемент, выделенный в списке (рис. 59, 60, 61).

Программно заполняются элементы списка, который содержит наименования месяцев года. Программа, используя технологию DragAndDrop объекта DataObject, позволяет перетащить выбранный элемент из списка в текстовое поле выбора (рис. 60). При неправильном действии, т. е. перетаскивании не в текстовое поле, происходит вызов предупреждающего сообщения (рис. 61).

Рис. 59. Форма примера 29 в режиме конструктора

Рис. 60. Форма примера 29 в рабочем режиме

Рис. 61. Окно предупреждения о неправильно выполненной операции

Когда пользователь захватывает выбранный им элемент списка, то возникает некоторое событие. В нашем примере это событие MouseMove, обработчик которого и будет вызывать метод StartDrag объекта DataObject, который хранит значение перетаскиваемого элемента. Синтаксис метода:

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 в процессе перемещения объекта происходит много событий. Работают обработчики этих событий, и результат говорит о том, как закончился этот процесс.

Технология выполнения

1. Активизируйте приложение Word и сохраните документ.

2. Перейдите в редактор VBA и создайте форму (рис. 59).

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

Private Sub UserForm_Initialize()

With Me.ListBox1

AddItem «январь»

AddItem «февраль»

AddItem «март»

AddItem «апрель»

AddItem «май»

AddItem «июнь»

AddItem «июль»

AddItem «август»

AddItem «сентябрь»

AddItem «октябрь»

AddItem «ноябрь»

AddItem «декабрь»

End With

End Sub

4. В результате инициализируется список «Месяц года», имеющий имя ListBox1. Готовясь перетащить этот элемент в другое место, пользователь выбирает элемент этого списка. Затем он нажимает

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату