Если параметр format в вызове SetText явно не указан, то запоминаемому тексту присваивается формат стандартного текста 1. Так как для каждого формата DataObject содержит лишь один текст с этим форматом, то фактически формат играет роль ключа, с помощью которого текст заносится и извлекается из DataObject. Метод GetFormat позволяет узнать, имеется ли в объекте DataObject текст определенного формата:
BooleanVar = объект. GetFormat(format)
Переменная BooleanVar получит значение True, если данные с указанным форматом входят в объект. Объект DataObject может обмениваться данными с буфером обмена посредством методов GetFromClipboard и PutInClipboard. Оператор
String = объект. GetFromClipboard
помещает содержимое буфера обмена в DataObject, а вызов
объект. PutInClipboard
переносит данные из DataObject, имеющие текстовый формат 1, в буфер обмена.
Рис. 58. Форма примера 28 в режиме конструктора и в рабочем режиме
Технология выполнения
1. Активизируйте приложение Word и сохраните документ.
2. Перейдите в редактор VBA и создайте форму (рис. 58).
3. Пропишите при инициализации окна в поле TextBox1 текстовую информацию и проинициализируйте глобальные переменные:
Public NewData As DataObject
Public NumClick As Integer
Private Sub UserForm_Initialize
Set NewData = New DataObject 'инициализация объекта
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. Откомпилируйте программу и запустите форму на выполнение.
Для копирования данных из поля ввода в буфер обмена обычно вызывают метод Сору. Однако при организации интерфейса в диалоговых формах полезно предоставить пользователю возможность работы с техникой DragAndDrop (Переместить и Опустить). Некоторый объект захватывается мышью, перетаскивается к другому целевому объекту и отпускается, изменяя при этом свойства целевого объекта. Типичным примером является возможность перетаскивать элемент из одного списка в другой. Другой пример – перетаскивание писем и опускание их в почтовый ящик. Важным элементом этой техники является изменение внешнего вида курсора. Захват объекта происходит при подведении курсора к объекту и нажатии левой кнопки мыши. В этот момент курсор меняет внешнюю форму. Когда происходит перемещение мыши, то в тех областях, где расположен целевой объект, курсор снова меняет форму, показывая, что цель достигнута. Если в этот момент отпустить левую кнопку мыши, то операция перемещения заканчивается успешно. Если отпустить кнопку мыши в других областях, то это приведет к неудаче. Объект DataObject и его метод StartDrag являются частью этой технологии.
Программно заполняются элементы списка, который содержит наименования месяцев года. Программа, используя технологию DragAndDrop объекта DataObject, позволяет перетащить выбранный элемент из списка в текстовое поле выбора (рис. 60). При неправильном действии, т. е. перетаскивании не в текстовое поле, происходит вызов предупреждающего сообщения (рис. 61).