![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MS Word и буфер обмена [D7, 95/98, XP]
_Shuler_ © (2008-01-13 19:53:00)всем хай!!!
вставляю из буфера обмена русский текст в документ ворда и пояляются какие-то крякозяблики(((.
если вставить в другой текстовый редактор, то все нормально.
но в виндоузовском блокноте теже глюки. Подскажите а чем проблема???
может из-за кодировки???
Подскажите ПЛЗ
_Shuler_ (2008-01-17 11:10:00) [1]
> {RASkov} © (13.01.08 23:51) [15]
Спасибо.
Разобрался:)
Amoeba (2008-01-15 23:38:00) [2]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=780
Тут много чего интересного, особенно в обсуждении. Да и здесь на форуме в конце прошлого года было немало конкретно полезного.
ketmar (2008-01-15 22:00:00) [3]>[16] _Shuler_ (15.01.08 21:20)
>но что-то я не смог разобраться с этим Unicode(((
>мож кто еще поможет.ПЛЗ
запросто. магазин хозтоваров->метла->нет проблем с Unicode.
или учимся искать в интернете и справках, да вдумчво читать найденое.
_Shuler_ (2008-01-15 21:20:00) [4]мда ;жаль.
но что-то я не смог разобраться с этим Unicode(((
мож кто еще поможет.ПЛЗ
{RASkov} (2008-01-13 23:51:00) [5]> [13] _Shuler_ (13.01.08 23:07)
Не уверен в правильности("тупая переделка"), но всеж:
procedure SetBuffer(Format: Word; var Buffer; Size: Integer);
var
Data: THandle;
DataPtr: Pointer;
begin
OpenClipboard(0);
try
Data := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, Size);
try
DataPtr := GlobalLock(Data);
try
Move(Buffer, DataPtr^, Size);
SetClipboardData(Format, Data);
finally
GlobalUnlock(Data);
end;
except
GlobalFree(Data);
raise;
end;
finally
CloseClipboard;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const S: PWideChar ='Тест русского текста Test English text Яя';
begin
SetBuffer(CF_UNICODETEXT, PWideChar(S)^, Length(S)*2+2);
end;
(Для раздумья)
Anatoly Podgoretsky (2008-01-13 23:08:00) [6]> _Shuler_ (13.01.2008 23:07:13) [13]
Это текст из модуля ClipBrd остальное сам там посмотришь, или можешь сам все сделать напрямую через WinAPI.
_Shuler_ (2008-01-13 23:07:00) [7]что-то не получается.(((
>>>SetBuffer(CF_TEXT, PChar(Value)^, Length(Value) + 1);
делфи говорит что не знает такого.
Anatoly Podgoretsky (2008-01-13 22:47:00) [8]Мне лень заниматься экспериментами, попробуй сам переделать эту функцию из генофонда.
procedure TClipboard.SetAsText(const Value: string);
begin
SetBuffer(CF_TEXT, PChar(Value)^, Length(Value) + 1);
end;
_Shuler_ (2008-01-13 22:05:00) [9]> Anatoly Podgoretsky © (13.01.08 22:00) [10]
> Считай за глюк, поскольку ты работаешь по технологие ДОС,
> а не Windows NTВ буфер надо помещать в Юникоде, а не ANSI
ok.
Подскажите как тогда в Юникоде помещать
или
как сменить раскладку клавы в ворде.
PLZ
Anatoly Podgoretsky (2008-01-13 22:00:00) [10]> _Shuler_ (13.01.2008 20:30:06) [6]
Считай за глюк, поскольку ты работаешь по технологие ДОС, а не Windows NT
В буфер надо помещать в Юникоде, а не ANSI
_Shuler_ (2008-01-13 21:34:00) [11]наверно так бужет корректней: как сменить раскладку именно в ворде???
Спасибо!
_Shuler_ (2008-01-13 21:31:00) [12]возникла еще проблемка.
после подключения к ворду (раскладка у меня по умолчанию english) перед вставкой не успеваю сменить раскладку(((.
делаю так: LoadKeyboardLayout( StrCopy(Layout,'00000419'),KLF_ACTIVATE);
как перед вставкой сменить раскладку?
{RASkov} (2008-01-13 20:36:00) [13]фича
_Shuler_ (2008-01-13 20:30:00) [14]хы. действительно работает. Спасибо.
Вот только не пойму: это как считать за глюк или так и должно быть???
{RASkov} (2008-01-13 20:27:00) [15]> [4] _Shuler_ (13.01.08 20:03)
Проводи операцию копирование-вставка при русской раскладке...
_Shuler_ (2008-01-13 20:03:00) [16]но с английсеом все нормально. только русский глючит...
_Shuler_ (2008-01-13 20:02:00) [17]Clipboard.AsText := clipboard.AsText+'sdfdg'
а в ворде вот так просто:
wordApplication1.Selection.Paste;
Dib@zol (2008-01-13 19:59:00) [18]показывай код добавления в буфер.
savyhinst (2008-01-13 19:57:00) [19]
> может из-за кодировки
Именно из-за неё.