Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизКопирование в clipboard Найти похожие ветки
← →
nine_inch_nails (2004-03-31 10:41) [0]Всем привет ! :)
Сначала пролог. Есть табличка dbase"ная, несколько полей. В некоторых полях, естественно, русские символы. В БДЕ лэнгдрайвер dbase"a прописан ansi. Всё путем - символы читаемы, все отлично.
И встала проблемка - нужно значения полей вставлять в ворд или там в эксель.
Теперь собственно промблема:
Естественно все оказалось не так просто -
строка ClipBoard.AsText:=Table1.FieldByName("rus_field").AsString чудесным образом копирует русские символы из поля в буфер обмена, НО! При вставке в ворд вставляются кракозябры! За вчерашние полдня лечения не найдено %)) Вставка в эксель получается только через спец.вставка->неформатированный текст.
Поделитесь противоядием плиз :)
ЗЫ: Нанять программиста просьба не предлагать!
← →
Stas © (2004-03-31 10:56) [1]Dbgrideh
← →
Developerr © (2004-03-31 11:05) [2]http://delphibase.endimus.com/?action=viewfunc&topic=sysiface&id=10253
← →
nine_inch_nails (2004-03-31 11:14) [3]Developerr, ты маг и волшебник! Дай бог тебе жену хорошую! : )))
← →
Alex Konshin © (2004-03-31 12:24) [4]Developerr © (31.03.04 11:05) [2]
http://delphibase.endimus.com/?action=viewfunc&topic=sysiface&id=10253
У того примера куча недочетов видимых невооруженным взглядом.
Я использую такую функцию, которая раьотает и на W9x, и на NT+:
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;
← →
nine_inch_nails (2004-03-31 16:13) [5]мой невооруженный глаз ничего такого не увидел... в любом случае, ОГРОМНОЕ спасибо за ответы.. точнее, за внимание и идеи. Всем кто ответил.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.029 c