Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Inf_2.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
265 Кб
Скачать
☆

Класс tcIipboard

Класс TCIipboard предоставляет программисту интерфейс с буфером (папкой) обмена (Clipboard) Windows. При включении в проект модуля clipbrd.pas глобальный объект clipboard создается автоматически и доступен приложению в течение всего времени его работы.

Методы открытия и закрытия буфера обмена:

procedure Open;

procedure Close;

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

Очистка содержимого буфера (для всех форматов) производится вызовом метода:

procedure Clear;

О доступных форматах можно узнать, пользуясь следующими свойствами и методами:

  • property FormatCount: Integer;

Содержит число форматов в буфере на данный момент.

  • property Formats[Index: Integer]: Word;

Содержит их полный список.

  • Функции function HasFormat (Format: Word): Boolean; Проверяет, содержится ли в данный момент в буфере обмена формат Format.

Волею разработчиков различаются способы обмена графической и текстовой информацией через буфер обмена. Рассмотрим их независимо.

Через вызов метода

procedure Assign(Source: TPersistent);

в буфер обмена помещаются данные классов TGraphic, точнее, его потомков — классов TBitmap (формат CF_BITMAP) и TMetafile (CF_ENHMETAFILE), a также данные класса Tpicture. Данные класса Ticon не имеют своего формата и с классом TClipboard несовместимы.

Допустимо и обратное: в TClipboard есть специальные (скрытые) методы для присваивания содержимого объектам классов Tpicture, TBitmap и TMetafile. Допустимы выражения вида:

My Image.Picture.Assign(Clipboard);

Clipboard.Assign(My Image.Picture);

Для работы с текстом предназначены методы:

  • function GetTextBuf (Buffer: PChar; BufSize: Integer): Integer;

Читает текст из буфера обмена в буфер Buffer, длина которого ограничена значением BufSize. Функция возвращает истинную длину прочитанного текста.

  • procedure SetTextBuf(Buffer: PChar);

Помещает текст из Buffer в буфер обмена в формате CF_TEXT.

Впрочем, можно поступить проще.

Свойство

property AsText: string;

соответствует содержимому буфера обмена в текстовом формате CF_TEXT (приведенному к типу string). При отсутствии в буфере данных этого формата возвращается пустая строка.

Методы:

function GetAsHandle(Format: Word): THandle;

procedure SetAsHandle(Format: Word; Value: THandle);

соответственно читают и пишут данные в буфер в заданном формате Format. При чтении возвращается дескриптор находящихся в буфере данных (или 0 при отсутствии данных). Для дальнейшего использования эти данные должны быть скопированы. При записи данные, передаваемые в параметре value, в дальнейшем должны быть уничтожены системой (а не программой пользователя).

Два метода предназначены для обмена компонентами через буфер обмена (в специально зарегистрированном формате CF_COMPONENT):

function GetComponent(Owner, Parent: TComponent): TComponent;

procedure SetComponent(Component: TComponent);

Они используются составными частями среды Delphi.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]