Форум: "Основная";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
ВнизПрорблемы с буфером обмена Найти похожие ветки
← →
Islander (2003-10-24 01:28) [0]Здравствуйте! Не могу записать в буфер обмена текст в нужной кодировке. ClipBoard.AsText:="Мой текст". Так вот: при вставке русский текст отображается коряво...
← →
Романов Р.В. (2003-10-24 06:27) [1]При вставке попробуй переключиться на русскую раскладку
← →
Islander (2003-10-24 08:38) [2]Нет, не помогает
← →
Islander (2003-10-24 08:45) [3]Т.е. помогает такая вещь,
ActivateKeyboardLayout(LoadKeyboardLayout("00000419",0),0);
но это не цивильно, т.к. у меня многоя зыковое приложение и русская раскаладка может просто и не стоять
← →
Романов Р.В. (2003-10-24 08:48) [4]Почитай про CF_LOCALE
← →
Кулюкин Олег (2003-10-24 08:51) [5]Переведите русский текст в юникод.
См. WideCharToMultyByte
← →
Islander (2003-10-24 08:56) [6]>>Кулюкин Олег
Я если это 98 винда, то там праблы будут, насколько я знаю
← →
REA (2003-10-24 09:12) [7]Из форума (надо в 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;
← →
Islander (2003-10-24 09:34) [8]Спасибо, все хорошо, вот только такая прабла еще осталась: а как сделать, чтобы система автоматически распознавала LOCALE? Например, чтобы хорват или китаец могли копировать свои данные безпрепятственно
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c