Работа с буфером обмена
Буфер обмена представляет собой область оперативной памяти и специальных функций, которые используются операционной системой Windows для временного хранения данных. Буфер обмена является общим для всех программ, любое приложение может помещать в него информацию и считывать ее оттуда. Буфер обмена хранит любые данные и сведения об их формате.
Для выполнения операций обмена данными через буфер в Delphi предназначен специальный класс TClipboard и специальный объект Clipboard, являющийся экземпляром этого класса. Для доступа к свойствам и метолам объекта Clipboard необходимо указать в разделе Uses имя модуля Clipbrd. Свойство Clipboard.AsText позволяет получить содержимое буфера обмена, который представлен как текст.
С помощью функции HasFormat(Format:Word) можно проверить, какого формата информации содержится в буфере. В скобках могут быть следующие константы:
-
CF_TEXT – обычный текст в кодировке ANSI
-
CF_BITMAP- рисунок формата BMP
-
CF_METAFILEPICT- рисунок формата WMF
-
CF_TIFF- рисунок формата TIFF
-
CF_WAVE- звук
-
CF_UNICODETEXT- текст в кодировке Unicode
-
CF_PICTURE- объект типа TPicture
Метод Open позволяет открыть монопольный доступ приложения к буферу обмена, а метод Close закрывает его.
Методы CopyToClipboard, CutToClipboard и PasteFromClipboard позволяют выполнить стандартные операции копирования, вырезания и вставки текстового фрагмента. Например, в компоненте Memo1 скопируем набранный текст в буфер обмена, назначив для этого обработчик события - нажатие на кнопку Button1:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
Memo1.SelectAll;
Memo1.CopyToClipboard;
End;
Можно также скопировать в Memo1 содержимое буфера, если там содержится текст:
If Clipboard.HasFormat(CF_Text) then
Memo1.PasteFromClipboard;
Или скопировать в Memo1 содержимое первой строки в следующую строчку:
Clipboard.Astext:=Memo1.Lines[0];
Memo1.Lines[1]:=Clipboard.AsText;
При работе с графическими компонентами используют метод Assign(Source: TPersistent), который позволяет скопировать и извлечь из буфера изображение, принадлежащих классам TBitmap, TPicture или TMetafile. Например, скопируем изображение из одной компоненты Image в другую:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
Clipboard.Open;
Clipboard.Assign(Image1.Picture);
If Clipboard.HasFormat(CF_Picture)
Then Image2.Picture.Assign(Clipboard)
Else Image2.Picture.Assign(nil);
Clipboard.Close;
End;
Объект Clipboard – это глобальный буфер обмена. Кроме него в программе могут использоваться локальные буферы обмена, представляющие собой области оперативной памяти, выделенные программе во время выполнения для временного хранения и использования каких-либо данных. Для обмена между объектом Clipboard и локальным буфером предназначены методы GetTextBuf и SetTextBuf.
-
Содержание
- Новые технологии.
- Создание новых компонент
- Добавление свойств
- Добавление методов
- Добавление событий
- Разработка ресурсов для компоненты
- Установка компоненты
- Испытание компоненты
- Редактирование компоненты
- Создание справочной службы помощи
- Динамически подключаемые библиотеки (dll)
- Работа с буфером обмена
- Динамический обмен данными (dde)
- Связывание и внедрение объектов (ole)
- Упражнения: