Для очистки содержимого буфера обмена используется метод Clear. Он вызывается автоматически при изменении содержимого в буфере. Перед записью новых данных, помещаемых в буфер, старая информация удаляется.
Класс TClipboard используется многими другими классами и компонентами, которые поддерживают обмен данными через буфер обмена. К примеру, компоненты Memoи Editимеют специальные методы для обмена текстовой информацией посредством буфера. Методы CopyToClipBoardH CutToClipBoard помещают текстовые данные в буфер обмена, копируя и вырезая их из источника (компонента) соответственно, а метод PasteFromClipBoard вставляет текстовый фрагмент из буфера в текстовое поле.
Только при использовании подобных методов лучше проверять, является ли содержимое буфера обмена текстовой информацией. В листинге 8.4 показан пример копирования в буфер обмена всего текста, введенного в текстовое поле.
...
Листинг 8.4.
Копирование текста из поля редактора Memo в буфер обмена
procedure TFormClipboard.bnCopyTextClick(Sender: TObject);
begin
//Выделяем весь текст в поле редактора
MemoText.SelectAll;
//Копируем текст
MemoText.CopyToClipBoard;
end;
Буфер обмена часто используется для хранения текста, поэтому объект Clipboard имеет специальное свойство AsText типа String, предназначенное для обработки содержимого буфера как данных текстового формата. Свойство AsText предназначено как для чтения, так и для записи. При чтении свойства данные извлекаются из буфера, а при записи – заносятся в буфер обмена (листинг 8.5).
...
Листинг 8.5.
Копирование текстовой информации
procedure TFormClipboard.bnCopyTextAsTextClick(Sender: TObject);
begin
//Если в буфере текст, то выводим его в поле редактора
if Clipboard.HasFormat(CF_Text)
then MemoText := Clipboard.AsText
end;
При работе с графическими компонентами для операций, связанных с обменом информацией через общую область, удобно использовать метод Assign. Процедура Assign (Source: TPers is tent) присваивает буферу обмена объект, указанный параметром Source. Если объект является изображением и принадлежит таким графическим классам, как TBitmap, TPicture или TMetaf ile, то в буфер обмена копируется изображение установленного формата. Для извлечения изображения также может использоваться метод Assign.
Пример использования буфера обмена для копирования изображений проводится в листинге 8.6.
...
Листинг 8.6.
Обмен изображением через буфер обмена
procedure TFormClipboard.bnCopyImageClick(Sender: TObject);
begin
//Открываем монопольный доступ
Clipboard.Open;
//Заносим изображение в буфер
Clipboard.Assign(ImageMyPic1.Picture);
//Проверям формат находящихся в буфере данных
if Clipboard.HasFormat(CF_Picture)
then ImageMyPic2.Picture.Assign(Clipboard);
//Закрываем монопольный доступ к буферу
Clipboard.Close;
end;
Изображение, находящееся в образе ImageMyPicl, помещается в буфер обмена, откуда затем копируется в образ ImageMyPic2. Для выполнения этих операций устанавливается монопольный доступ к объекту Clipboard.
Таким образом, использование объекта Clipboard находит широкое применение в программировании приложений, которым необходим обмен данными с другими программами. Необходимо отметить, что буфер обмена ориентирован на работу с пользователем (пользователь инициирует обмен данными между приложениями), поэтому такой способ обмена данными наиболее удобен с точки зрения пользователя. К тому же буфер обмена поддерживает множество форматов представления информации, что позволяет сделать обмен данными более гибким и эффективным.
8.3. Проецируемые в память файлы
Не менее мощным и гибким методом организации обмена данными между приложениями является метод, который базируется на проецируемых в память файлах (Files Mapping). Главная идея этого механизма основывается на использовании динамической разделяемой памяти системы для хранения в ней данных. Как известно, каждый процесс имеет свой участок памяти, называемый виртуальным адресным пространством. При использовании механизма проецируемых в память файлов данные становятся доступны из любого процесса, который использует этот файл. В этом случае говорят, что файл отображается в виртуальное адресное пространство процесса, поэтому данные, хранимые в файле, доступны процессу, который этот файл открыл. Механизм проецирования файлов в память используется, например, для исполняемых файлов приложений, а также для DLL.
Читать дальше
Конец ознакомительного отрывка
Купить книгу