Работа с буфером обмена

Вы можете использовать системный буфер обмена для копирования и вставки графики внутрь вашего приложения, а также для переноса графики из вашего приложения в другие и из других приложений в ваше. Для этого используется специальный объект Kylix Сlipboard. Этот объект позволяет оперировать различным типом информации, включая графику и текст.

Прежде чем вы сможете воспользоваться данным объектом, необходимо добавить в блок uses модуля, в котором будет использоваться буфер обмена, имя модуля OClipbrd:

uses
SysUtils, Types, Classes, Variants, QGraphics, QControls, QForms, QDia-logs, QStdCtrls, OClipbrd;

Данный модуль позволит обращаться к объекту Clipboard.

Копирование графики в буфер обмена

Для копирования графической информации в буфер обмена нужно ассоциировать графический объект с объектом Clipboard. Это можно сделать с помощью метода Assign.

Код, приведенный в листинге 13.21, показывает, как можно скопировать графический образ, содержащийся в компоненте типа Timage, имеющем имя Image, в буфер обмена, выбрав пункт меню Edit/Copy формы Form1.

Листинг 13.21.Копирование графики в буфер обмена

procedure TForm1.Copy1Click{Sender: TObject); 
begin
Clipboard.Assign(Image.Picture) end.

Вырезание графики в буфер обмена

Вырезание графики в буфер обмена похоже на копирование. Отличие заключается в том, что после копирования картинка, содержащаяся в источнике, уничтожается.

Для реализации данной операции нужно выполнить два последовательных шага:

1. Скопировать данные в буфер обмена.

2. Уничтожить оригинальные данные.

В листинге 13.22 показано, как можно осуществить операцию вырезания картинки в буфер обмена. Сначала изображение копируется в буфер обмена, затем место, откуда взято изображение, закрашивается белым цветом с помощью установки режима копирования cmWhiteness.

Листинг 13.22. Вырезание графики в буфер обмена

procedure TForm1.Cut1Click(Sender: TObject); 
var
ARect: TRect; begin
Copy1Click{Sender); { копирование картинки в буфер обмена }
with Image.Canvas do begin
CopyMode := cmWhiteness;{установить режим копирования в белый цвет} ARect := Rect(0, 0, Image.Width, Image.Height); {получение квадрата
копирования}
CopyRect(ARect, Image.Canvas, AReCt); { наложение белого
прямоугольника } CopyMode := cmSrcCopy; { восстановление нормального режима
копирования } end; end;

Вставка графики из буфера обмена

Если в буфере обмена содержится какая-либо графическая информация, вы можете вставить ее в любой графический компонент Kylix, включая канву формы.

Для вставки графики из буфера обмена нужно выполнить следующие шаги:

1. Вызвать метод Provides объекта Clipboard для того, чтобы убедиться, что буфер обмена содержит графическую информацию. Метод Provides представляет собой функцию, которая возвращает булевы значения. Если возвращаемое значение True, то буфер обмена содержит данные именно такого типа, которые указаны в параметре метода Provides.

2. Указать объект, в который будет произведено копирование с помощью метода Assign.

Нижеприведенный код (листинг 13.23) показывает, как можно копировать картинку из буфера обмена в компонент Image с помощью пункта меню Edit/Paste.

Листинг 13.23.Копирование графики из буфера обмена

procedure TForm1.PasteButtonClick(Sender: TObject); 
var
Bitmap: TBitmap; begin
if Clipboard.Provides(SDelphiBitmap) then { в буфере обмена
изображение? ) begin
Image1.Picture.Bitmap.Assign(Clipboard);
end; end;

Изображение, находящееся в буфере обмена, может быть скопировано из любого приложения.

Hosted by uCoz