Текущий архив: 2005.07.31;
Скачать: CL | DM;
Внизкодировка и clipboard Найти похожие ветки
← →
lehich © (2005-05-18 14:25) [0]копирую в буфер значение Memo.Text но при вставке в Word русские буквы отображаются неверно... сбивается кодировка, что делаю не правильно?
Заранее премного благодарен!
← →
VMcL © (2005-05-18 14:58) [1]>>lehich © (18.05.05 14:25)
1. CF_UNICODETEXT
2. Переключать раскладку на русскую перед операцией копирования в буфер.
← →
lehich © (2005-05-18 16:11) [2]сенкс!
← →
lehich © (2005-05-18 17:25) [3]сразу еще один вопрос:
переключаю раскладку клавиатуры используя -
LoadKeyboardLayout( StrCopy(Layout,"00000419"),KLF_ACTIVATE);
LoadKeyboardLayout(StrCopy(Layout,"00000409"),KLF_ACTIVATE);
а как проверить какая текущая раскладка?
← →
alpet © (2005-05-18 20:00) [4]GetKeyboardLayout ( 0 )) - дает описатель раскладки.
function KbdLayout: string;
const KL_NAMELENGTH = 9;
var name: array [0..KL_NAMELENGTH] of char;
begin
GetKeyboardLayoutName (name);
result := name;
end;
З.Ы. На консольных приложениях не работает.
← →
scolopax © (2005-06-01 11:46) [5]а как и где использовать этот CF_UNICODETEXT ?
← →
Alex Konshin © (2005-06-01 12:34) [6]
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 вся ветка
Текущий архив: 2005.07.31;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.039 c