Текст заносится в DataObject методом SetText, а извлекается оттуда методом GetText:
объект. SetText(StoreData [, format])
и
Строка = объект. GetText([format]),
где объект – объект – владелец метода;
StoreData – текст, который надо запомнить в объекте;
format – это необязательный параметр, задающий «формат» данных (1 соответствует стандартному текстовому формату, а другие числа и строки соответствуют пользовательским форматам).
Если параметр format в вызове SetText явно не указан, то запоминаемому тексту присваивается формат стандартного текста 1. Так как для каждого формата DataObject содержит лишь один текст с этим форматом, то фактически формат играет роль ключа, с помощью которого текст заносится и извлекается из DataObject. Метод GetFormat позволяет узнать, имеется ли в объекте DataObject текст определенного формата:
BooleanVar = объект. GetFormat(format)
Переменная BooleanVar получит значение True, если данные с указанным форматом входят в объект. Объект DataObject может обмениваться данными с буфером обмена посредством методов GetFromClipboard и PutInClipboard. Оператор
String = объект. GetFromClipboard()
помещает содержимое буфера обмена в DataObject, а вызов
объект. PutInClipboard
переносит данные из DataObject, имеющие текстовый формат 1, в буфер обмена.
Пример 28. Форма содержит два текстовых поля, в одном из них программно отображается текст, который при помощи методов объекта dataobject необходимо перенести (перекопировать) во второе текстовое поле. Данное действие происходит после нажатия на кнопку «Копировать», причем все производимые действия программы отображаются в соответствующей метке на форме (рис. 58).
Рис. 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. Откомпилируйте программу и запустите форму на выполнение.
Примечание. Перенос информации из одного поля в другое можно осуществить и через буфер обмена, минуя DataObject. Для копирования данных из поля ввода в буфер обмена можно использовать метод Сору.
Перемещение объектов. Реализация технологии DragAndDrop
Для копирования данных из поля ввода в буфер обмена обычно вызывают метод Сору. Однако при организации интерфейса в диалоговых формах полезно предоставить пользователю возможность работы с техникой DragAndDrop (Переместить и Опустить). Некоторый объект захватывается мышью, перетаскивается к другому целевому объекту и отпускается, изменяя при этом свойства целевого объекта. Типичным примером является возможность перетаскивать элемент из одного списка в другой. Другой пример – перетаскивание писем и опускание их в почтовый ящик. Важным элементом этой техники является изменение внешнего вида курсора. Захват объекта происходит при подведении курсора к объекту и нажатии левой кнопки мыши. В этот момент курсор меняет внешнюю форму. Когда происходит перемещение мыши, то в тех областях, где расположен целевой объект, курсор снова меняет форму, показывая, что цель достигнута. Если в этот момент отпустить левую кнопку мыши, то операция перемещения заканчивается успешно. Если отпустить кнопку мыши в других областях, то это приведет к неудаче. Объект DataObject и его метод StartDrag являются частью этой технологии.
Пример 29. Создать форму, имеющую два элемента управления: список и текстовое поле. При помощи мыши из списка перетаскивают в текстовое поле необходимый элемент, выделенный в списке (рис. 59, 60, 61).
Программно заполняются элементы списка, который содержит наименования месяцев года. Программа, используя технологию DragAndDrop объекта DataObject, позволяет перетащить выбранный элемент из списка в текстовое поле выбора (рис. 60). При неправильном действии, т. е. перетаскивании не в текстовое поле, происходит вызов предупреждающего сообщения (рис. 61).
Читать дальше
Конец ознакомительного отрывка
Купить книгу