Главная страница
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.038 c
14-1080821740
GanibalLector
2004-04-01 16:15
2004.04.25
INTEGER


6-1078175573
TALLA
2004-03-02 00:12
2004.04.25
Как избавиться от многопоточности DdeClientConv ? :(


4-1077731833
Labert
2004-02-25 20:57
2004.04.25
Как эффективнее реализовать непрямоугольную кнопку?


14-1081095659
Verg
2004-04-04 20:20
2004.04.25
Объясните, кто знает, про F1


7-1078082494
JIruaasgyy
2004-02-29 22:21
2004.04.25
Какой функцией можно получить системную директорию Windows?