Картинку в Буфер обмена

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Картинку в Буфер обмена

Сообщение B4rr4cuda » 26.10.2008 19:54:29

Я ж говорю, что там есть какой-то заголовок. Его надо расшифровать и можно пользоваться... =)
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Картинку в Буфер обмена

Сообщение Cheb » 30.10.2008 06:41:37

ЕМНИП, у гимпа свой собственный буфер обмена, чтобы вставить из системного надо выбирать функцию импорта (Acquire...) По крайней мере под виндовс вроде так было...
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Картинку в Буфер обмена

Сообщение dalfy » 12.05.2024 11:00:00

EmeraldMan писал(а):Дело в том, что помимо данных в буфере хранится тип данных. Так вот, как буферу указать что там хранится ссылка на файл, а не текст?

Как у Вас получилось? Мне тоже надо скопировать файл.
dalfy
новенький
 
Сообщения: 12
Зарегистрирован: 07.10.2021 20:47:01

Re: Картинку в Буфер обмена

Сообщение stikriz11 » 12.05.2024 16:06:34

Есть такой модуль 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;
stikriz11
постоялец
 
Сообщения: 126
Зарегистрирован: 04.09.2023 15:54:19

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 6

Рейтинг@Mail.ru