Вниз
Скачать: CL | DM;

Как скопировать строку WideString в ClipBoard и обратно   Найти похожие ветки 

← →
Галин А.М.   (2004-04-08 22:24) [0]

Если бы не широкие символы, то можно использовать
метод Assign Клипбоарда и его свойство AsText,
однако с юникодными символами это не работает,
особенно если они не со стандартной страницы Windows
(см таблицу символов)

Установка в систему юникодных шрифтов необходимое, но не
достаточное условие.

Посоветуйте что-нибудь, ведь вопрос достаточно стандартный.
Заранее благодарен.


← →
Романов Р.В. ©   (2004-04-09 07:05) [1]

REA ©   (24.10.03 09:12)
Из форума (надо в FAQ вынести):


procedure TForm1.Button1Click(Sender: TObject);
const
RusLocale = SUBLANG_DEFAULT shl 10 or LANG_RUSSIAN;
var
Mem: THandle;
P: Pointer;
begin
Clipboard.Open;
Clipboard.AsText := "Русский текст в кодировке ANSI 1251";
Mem := GlobalAlloc(GMEM_MOVEABLE, SizeOf(DWORD));
P := GlobalLock(Mem);
DWORD(P^) := RusLocale;
GlobalUnlock(Mem);
Clipboard.SetAsHandle(CF_LOCALE, Mem);
Clipboard.Close;
end;

const
CODEPAGE = 1251;

procedure SetClipboardText( const AText : String );
var len, ulen : Integer;
 hClip : THandle;
 pClip : Pointer;
begin
if Win32Platform=VER_PLATFORM_WIN32_NT then
 begin
   len := Length(AText)+1;
   ulen := len+len;
   hClip := GlobalAlloc(GMEM_MOVEABLE,ulen);
   if hClip=0 then raise Exception.Create(SysErrorMessage(GetLastError))
   else
     try
       pClip := PWideChar(GlobalLock(hClip));
       if pClip=nil then raise Exception.Create(SysErrorMessage(GetLastError))
       else
         begin
           try
             MultiByteToWideChar(CODEPAGE,0,PChar(AText),len,pClip,ulen);
           finally
             GlobalUnlock(hClip);
           end;
           Clipboard.SetAsHandle(CF_UNICODETEXT,hClip);
         end;
     except
       GlobalFree(hClip);
       raise;
     end;
 end
else
 begin
   Clipboard.SetTextBuf(PChar(AText));
   SetClipboardData(CF_LOCALE,LANG_RUSSIAN);
 end;
end;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.037 c
1-1081141869
AmazedDexter
2004-04-05 09:11
2004.04.25
Recursively using


1-1081161716
wer
2004-04-05 14:41
2004.04.25
Отчёт


14-1080807128
Anatoly Podgoretsky
2004-04-01 12:12
2004.04.25
Про чат


14-1080678492
Soft
2004-03-31 00:28
2004.04.25
Свершилось!!! Рабочий стол в 3D.


1-1081496582
Михаил__
2004-04-09 11:43
2004.04.25
Stringgrid




   Наверх