Текущий архив: 2005.06.06;
Скачать: CL | DM;
Вниз
Почему портится кодировка при копировании в буфер? Найти похожие ветки
← →
Aleksandr. (2005-05-19 18:54) [0]Пришлось повесить свой обработчик на Ctrl+C и копирование в программе:
var
s : string;
begin
s:="";
if (Screen.ActiveControl IS TDBGrid)
AND (TDBGrid(Screen.ActiveControl).SelectedField<>nil) then
s:=TDBGrid(Screen.ActiveControl).SelectedField.DisplayText
else if (Screen.ActiveControl IS TCustomEdit) then
s:=TCustomEdit(Screen.ActiveControl).SelText
else if (Screen.ActiveControl IS TCustomComboBox) then
s:=TCustomComboBox(Screen.ActiveControl).SelText
else if (Screen.ActiveControl IS TCustomMemo) then
s:=TCustomMemo(Screen.ActiveControl).SelText;
if s<>"" then
ClipBoard.AsText:=s
end
Но у копируемого текста ломается кодировка - при вклейке из буфера на сайт, в ворд и т.д., вместо, например, "меридиан" отображается "ìåðèäèàí", а вот в доки 1С - все правильно. В чем тут проблема и как ее лечить?
← →
SteppesSon © (2005-05-20 09:34) [1]Попробуй поменять программно раскладку клавиатуры на русский перед копированием в буфер
← →
Aleksandr. (2005-05-20 11:41) [2]Хм. Вот когда раскладку вручную меняешь на русскую, то все нормально становится, а когда программно - фигня, нет эффекта.
← →
REA (2005-05-20 14:22) [3]Например так (цитата):
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 вся ветка
Текущий архив: 2005.06.06;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.037 c