Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: 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 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.056 c
14-1080645968
DillerXX
2004-03-30 15:26
2004.04.25
Ззадача :)


1-1081154455
MegaVolt
2004-04-05 12:40
2004.04.25
Как преместить данные в буфер не с начала?


14-1081168443
senator
2004-04-05 16:34
2004.04.25
Как получить хендел окна текущего приложения?


9-1066558051
Timur
2003-10-19 14:07
2004.04.25
Counter-strike map


3-1080205699
NorthMan
2004-03-25 12:08
2004.04.25
Проблема с динамическим ADOQuery