Access 2002

Использование буфера обмена


В отличие от Visual Basic, ни в Access, ни в VBA нет встроенного объекта Clipboard. Это ограничивает возможность совместного использования кода в проектах VBA и Visual Basic. Сейчас вы увидите, как с помощью функций Windows API эмулировать этот полезный класс. Наш класс носит имя CClipboard и обладает двумя методами, SetText и GetText, соответствующими методам объекта Clipboard Visual Basic. При реализации этих методов использованы 12 различных вызовов Windows API. Количество, как видите, немалое для таких вроде бы простых задач, как чтение и запись текста в буфер обмена Windows. Инкапсуляция этих функций в модуле класса раз и навсегда избавляет вас от выполнения сложной и рутинной процедуры их вызова.

Метод SetText выполняет следующие действия.

1.   Выделяет память с помощью функции Global All ос.

2.   Помещает в нее полученную им строку.

3.   Открывает буфер обмена.

4.   Удаляет текущее содержимое буфера.

5.   Записывает данные в буфер обмена.

6.   Закрывает буфер обмена.

Метод GetText делает прямо противоположное.

1.   Проверяет, есть ли в буфере обмена какой-нибудь текст.

2.   Если да, открывает буфер обмена.

3.   Считывает текущее содержимое буфера обмена.

4.   Копирует его в строку.

5.   Обрезает строку до нужного размера.

6.   Закрывает буфер обмена.

Обе эти функции вы можете включить в свое приложение, импортировав в него модуль класса CClipboard из базы данных CH14.MDB.

Просмотрев предложенные нами функции, вы, возможно, заметите несколько особенностей, общих для многих функций Windows API. Прежде всего, для решения большинства стандартных задач нужно вызвать очень много функций. Windows API построен таким образом, что каждая из его функций выполняет очень маленькую задачу; можно сказать, что это достаточно низкоуровневый интерфейс программирования.

Комментарии закрыты