Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];

Вниз

Копирование из 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
14-97813
Sergey13
2003-06-11 08:52
2003.06.30
Вопрос к женатым и с детьми.


14-97864
Soft
2003-06-12 12:53
2003.06.30
Думают ли электроны?


7-97913
BaRToV
2003-04-13 13:13
2003.06.30
CD-Rom и все что с ним связано...


1-97642
EgorKA
2003-06-20 00:03
2003.06.30
Какойнибуть цикл для перевода букв с анг на рус...


6-97764
[BAD]Angel
2003-04-23 19:20
2003.06.30
Включение DHCP и отказ от статических адресов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский