Страница 15 из 42 Объект Clipboard TClipboard = class(TPersistent) Объект TClipboard представляет программисту интерфейс с буфером обмена (Clipboard) Windows. При включении в проект модуля CLIPBRD этот глобальный объект создается автоматически и доступен приложению в течение всего цикла. Методы открытия и закрытия буфера обмена procedure Open; procedure Close; вызываются во всех остальных методах TClipboard, поэтому программист редко нуждается в обращении к ним. В объекте ведется счетчик числа обращений к этим функциям, так что соответствующие функции API Windows вызываются только при первом открытии и последнем закрытии. Очистка содержимого буфера (для всех форматов) производится вызовом метода: procedure Clear; О доступных форматах можно узнать, пользуясь следующими свойствами и методами: (Ro) property FormatCount: Integer; — содержит число форматов в буфере на данный момент; (Ro) property Formats[Index: Integer]: Word; — содержит их полный список. Функция function HasFormat(Format: Word): Boolean; проверяет, содержится ли в данный момент формат Format. Волею разработчиков различаются способы обмена графической и текстовой информацией через буфер обмена. Рассмотрим их независимо. Через вызов метода procedure Assign(Source: TPersistent); в буфер обмена помещаются данные классов TGraphic, точнее, его потомков — классов TBitmap (формат CF.BITMAP) и TMetaffle (CF.METAFILEPICT). Данные класса TIcon не имеют своего формата и с TClipboard несовместимы. Допустимо и обратное: в TClipboard есть специальные (скрытые) методы для присваивания содержимого объектам классов TPicture, TBitmap и TMetafile. Допустимы выражения вида: My Image.Picture.Assign(Clipboard) ; Для работы с текстом предназначены методы: 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): TComponent; procedure SetComponent(Component: TComponent); Они используются составными частями среды Delphi. |