Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Текст в буфер обмена


Автор: MacTep 22.6.2009, 17:29
Есть текст, выделенный в каком-либо окне (не в форме дельфи)... Например, блокнот или веббраузер или еще что-то. Как можно этот текст поместить в буфер обмена? smile

Автор: former 23.6.2009, 01:26
Цитата(MacTep @  22.6.2009,  17:29 Найти цитируемый пост)
Как можно этот текст поместить в буфер обмена?

Ctrl+C. Другими словами, пользователь сам должен поместить текст в буфер. 

Автор: AntonN 23.6.2009, 08:20
former, после отлавливания этой комбинации клавиш нужен код помещающий текст в буфер, про это автор и спрашивал.


MacTep
Код

uses ClipBrd;

procedure PutStringIntoClipBoard(const Str: WideString);
var Size:Integer; Data:THandle; DataPtr:Pointer;
begin
  Size:=Length(Str);
  if Size=0 then exit;
  if not IsClipboardFormatAvailable(CF_UNICODETEXT) then
    Clipboard.AsText:=Str
  else begin
    Size:=Size shl 1 + 2;
    Data:=GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, Size);
    try
      DataPtr:=GlobalLock(Data);
      try
        Move(Pointer(Str)^, DataPtr^, Size);
        Clipboard.SetAsHandle(CF_UNICODETEXT, Data);
      finally
        GlobalUnlock(Data);
      end;
    except
      GlobalFree(Data);
      raise;
    end;
  end;
end;


пример PutStringIntoClipBoard(memo1.text);

Автор: MacTep 26.6.2009, 11:22
Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)