M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

    Класс TClipboard

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

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

    procedure Open; procedure Close;

    вызываются во всех остальных методах TClipboard, поэтому программист редко нуждается в обращении к ним. В объекте ведется счетчик числа обращений к этим функциям, так что соответствующие функции 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), а также данные класса TPicture. Данные класса Ticon не имеют своего формата и с классом Tclipboard несовместимы.

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

    MyImage.Picture.Assign(Clipboard);

    Clipboard.Assign(MyImage.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.