Класс 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.

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

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

procedureAssign(Source: TPersistent) ;

в буфер обмена помещаются данные классов TGraphic, точнее, его потомков - классов TBitmap (формат cf^bitmap) и TMetafile (cf_enhmetafile), а также данные класса TPicture. Данные класса Ticon не имеют своего формата и с классом TClipboard несовместимы.

Допустимо и обратное: в TCiipboard есть специальные (скрытые) методы ДЛЯ присваивания СОДерЖИМОГО объектам КЛаССОВ TPicture, TBitmap И TMetafile. Допустимы выражения вида:

MyImage.Picture.Assign(Clipboard);
Clipboard.Assign(Mylmage.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. При чтении возвращается дескриптор находящихся в буфере данных (или О при отсутствии данных). Для дальнейшего использования эти данные должны быть скопированы. При записи данные, передаваемые в параметре value, в дальнейшем должны быть уничтожены системой (а не программой пользователя).

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

function GetComponent(Owner, Parent: TComponent): TCorrponent;
procedure SetComponent(Component: TComponent);

⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Декабрь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс