Картинку в Буфер обмена
Модератор: Модераторы
Я ж говорю, что там есть какой-то заголовок. Его надо расшифровать и можно пользоваться... =)
ЕМНИП, у гимпа свой собственный буфер обмена, чтобы вставить из системного надо выбирать функцию импорта (Acquire...) По крайней мере под виндовс вроде так было...
Как у Вас получилось? Мне тоже надо скопировать файл.EmeraldMan писал(а):Дело в том, что помимо данных в буфере хранится тип данных. Так вот, как буферу указать что там хранится ссылка на файл, а не текст?
Есть такой модуль Clipbrd.
Надо зарегистрировать свой формат или проверить и зарегистрировать какой нужно.
И там объявлен класс TClipboard и метод RegisterClipboardFormat.
Это все что нужно, а... Еще функция Clipboard, потому, что для каждой оси объявлена по разному, видимо. В Дельфи это было переменной потому что только для винды. В общем, разобраться не сложно.
Вот так я это очень давно делал в Дельфи:
var CF_COMPONENTS: Word;
...
initialization
CF_COMPONENTS := RegisterClipboardFormat('Delphi Components');
function TUnClipboard.CanPaste: boolean;
begin
try
Result:=Clipboard.HasFormat(CF_COMPONENTS) or
(Clipboard.HasFormat(CF_TEXT) and PossibleStream(Clipboard.AsText));
except
Result := False;
end;
end;
и т.д. и т.п. Сейчас посмотрел клирбоард Лазаруса - так там все написано лучше Делфей в мою бытность - только дергай готовые функции. Примеры можно взять из текстовых редакторов для текста. Бинарный примерно так же, только клипбоард надо получить согласно зарегистрированному формату вашему.
Напрмер:
function TClipboard.SetFormat(FormatID: TClipboardFormat; Stream: TStream): Boolean;
Добавлено спустя 3 минуты 29 секунд:
function TClipboard.GetFormat(FormatID: TClipboardFormat; Stream: TStream): Boolean;
Надо зарегистрировать свой формат или проверить и зарегистрировать какой нужно.
И там объявлен класс TClipboard и метод RegisterClipboardFormat.
Это все что нужно, а... Еще функция Clipboard, потому, что для каждой оси объявлена по разному, видимо. В Дельфи это было переменной потому что только для винды. В общем, разобраться не сложно.
Вот так я это очень давно делал в Дельфи:
var CF_COMPONENTS: Word;
...
initialization
CF_COMPONENTS := RegisterClipboardFormat('Delphi Components');
function TUnClipboard.CanPaste: boolean;
begin
try
Result:=Clipboard.HasFormat(CF_COMPONENTS) or
(Clipboard.HasFormat(CF_TEXT) and PossibleStream(Clipboard.AsText));
except
Result := False;
end;
end;
и т.д. и т.п. Сейчас посмотрел клирбоард Лазаруса - так там все написано лучше Делфей в мою бытность - только дергай готовые функции. Примеры можно взять из текстовых редакторов для текста. Бинарный примерно так же, только клипбоард надо получить согласно зарегистрированному формату вашему.
Напрмер:
function TClipboard.SetFormat(FormatID: TClipboardFormat; Stream: TStream): Boolean;
Добавлено спустя 3 минуты 29 секунд:
function TClipboard.GetFormat(FormatID: TClipboardFormat; Stream: TStream): Boolean;
