Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.30;
Скачать: CL | DM;

Вниз

Копирование из clipboard с указанием языка текста   Найти похожие ветки 

 
YuVoUA   (2003-04-21 16:49) [0]

Каким образом сгенерировать текст на русском языке в clipboard, чтобы он потом корректно отображался после вставки в Notepad или Ms Word ?

После использования такой процедуры:
Clipboard.AsText := "Это тест";

и последующей вставки текста в Notepad или Ms Word текст отображается некорректно и это нельзя изменить в Ms Word принудительной установкой языка текста.


 
MBo ©   (2003-04-21 17:13) [1]

Сформировать юникодную строку и setashandle
Можно и тупо переключать раскладку клавы на русский перед копированием


 
Anatoly Podgoretsky ©   (2003-04-21 18:10) [2]

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;


 
YuVoUA   (2003-04-21 18:45) [3]

Большое спасибо !!!


 
Alex Konshin ©   (2003-04-22 03:20) [4]

2AP: Я четко помню, что нужно делать по-разному под W9x и под NT+. И еще это также работает по-разному с разными версиями с MS Office.
И у меня дома есть кусок кода, который точно хорошо работает под обоими семействами систем. Вообще-то я когда-то кидал его в ФИДО и он разошелся, так что если поискать, то можно найти.
Дойду до дому - заброшу.


 
Alex Konshin ©   (2003-04-22 08:00) [5]

Вот так это у меня выглядит.

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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.015 c
3-97534
dabadabiabo
2003-06-05 11:10
2003.06.30
Запрос из запроса


14-97842
Separator
2003-06-12 05:12
2003.06.30
asm


11-97571
Святослав
2002-10-24 12:44
2003.06.30
Подключение OLE-сервера к программе на KOL


1-97614
m_e_t_a_n
2003-06-17 11:39
2003.06.30
HELP PLZ!!!


8-97759
revo
2003-03-17 17:34
2003.06.30
Распознавание голоса