Класс 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.
Знаете ли Вы, почему "черные дыры" - фикция? Согласно релятивистской мифологии, "чёрная дыра - это область в пространстве-времени, гравитационное притяжение которой настолько велико, что покинуть её не могут даже объекты, движущиеся со скоростью света (в том числе и кванты самого света). Граница этой области называется горизонтом событий, а её характерный размер - гравитационным радиусом. В простейшем случае сферически симметричной чёрной дыры он равен радиусу Шварцшильда". На самом деле миф о черных дырах есть порождение мифа о фотоне - пушечном ядре. Этот миф родился еще в античные времена. Математическое развитие он получил в трудах Исаака Ньютона в виде корпускулярной теории света. Корпускуле света приписывалась масса. Из этого следовало, что при высоких ускорениях свободного падения возможен поворот траектории луча света вспять, по параболе, как это происходит с пушечным ядром в гравитационном поле Земли. Отсюда родились сказки о "радиусе Шварцшильда", "черных дырах Хокинга" и прочих безудержных фантазиях пропагандистов релятивизма. Впрочем, эти сказки несколько древнее. В 1795 году математик Пьер Симон Лаплас писал: "Если бы диаметр светящейся звезды с той же плотностью, что и Земля, в 250 раз превосходил бы диаметр Солнца, то вследствие притяжения звезды ни один из испущенных ею лучей не смог бы дойти до нас; следовательно, не исключено, что самые большие из светящихся тел по этой причине являются невидимыми." [цитата по Брагинский В.Б., Полнарёв А. Г. Удивительная гравитация. - М., Наука, 1985] Однако, как выяснилось в 20-м веке, фотон не обладает массой и не может взаимодействовать с гравитационным полем как весомое вещество. Фотон - это квантованная электромагнитная волна, то есть даже не объект, а процесс. А процессы не могут иметь веса, так как они не являются вещественными объектами. Это всего-лишь движение некоторой среды. (сравните с аналогами: движение воды, движение воздуха, колебания почвы). Подробнее читайте в FAQ по эфирной физике.