Класс 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). При отсутствии в буфере данных этого формата возвращается пустая строка.
соответственно читают и пишут данные в буфер в заданном формате
Format. При чтении возвращается дескриптор находящихся в буфере данных (или
0 при отсутствии данных). Для дальнейшего использования эти данные должны быть скопированы. При записи данные, передаваемые в параметре
value, в дальнейшем должны быть уничтожены системой (а не программой пользователя).
Два метода предназначены для обмена компонентами через буфер обмена (в специально зарегистрированном формате
CF_COMPONENT):
function GetComponent(Owner, Parent: TComponent): TComponent;
procedure SetComponent(Component: TComponent);
Они используются составными частями среды Delphi.
Знаете ли Вы, что cогласно релятивистской мифологии "гравитационное линзирование - это физическое явление, связанное с отклонением лучей света в поле тяжести. Гравитационные линзы обясняют образование кратных изображений одного и того же астрономического объекта (квазаров, галактик), когда на луч зрения от источника к наблюдателю попадает другая галактика или скопление галактик (собственно линза). В некоторых изображениях происходит усиление яркости оригинального источника." (Релятивисты приводят примеры искажения изображений галактик в качестве подтверждения ОТО - воздействия гравитации на свет) При этом они забывают, что поле действия эффекта ОТО - это малые углы вблизи поверхности звезд, где на самом деле этот эффект не наблюдается (затменные двойные). Разница в шкалах явлений реального искажения изображений галактик и мифического отклонения вблизи звезд - 1011 раз. Приведу аналогию. Можно говорить о воздействии поверхностного натяжения на форму капель, но нельзя серьезно говорить о силе поверхностного натяжения, как о причине океанских приливов. Эфирная физика находит ответ на наблюдаемое явление искажения изображений галактик. Это результат нагрева эфира вблизи галактик, изменения его плотности и, следовательно, изменения скорости света на галактических расстояниях вследствие преломления света в эфире различной плотности. Подтверждением термической природы искажения изображений галактик является прямая связь этого искажения с радиоизлучением пространства, то есть эфира в этом месте, смещение спектра CMB (космическое микроволновое излучение) в данном направлении в высокочастотную область. Подробнее читайте в FAQ по эфирной физике.