![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите с буфером
beavka © (2004-11-05 09:34:00)procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=memo1.lines.Text;
edit1.selectall;
edit1.CopyToClipboard;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.lines.LoadFromFile('memo.txt');
end;
При этом у меня русские символы, при вставке в другие приложения выглядят не нужным образом.
Федька23 (2004-11-05 22:31:00) [1]to sergey23
И тебе приветики Алёшка
sergey23 (2004-11-05 19:02:00) [2]мне похуй.
приветики.
beavka (2004-11-05 10:15:00) [3]Огромное спасибо) Все теперь работает.
ssk (2004-11-05 10:08:00) [4]>КаПиБаРа
понял. просто в 2000 и XP мне пока не приходилось с таким сталкиваться. имеется ввиду проблема текущей ветки.
beavka (2004-11-05 10:07:00) [5]У меня вообще ХР, но и в 2000 та же проблема(
Сейчас попробую разобраться с вашими примерами))
Спасибо всем)) Очень отзывчивые люди тут) Приятно)
КаПиБаРа (2004-11-05 10:02:00) [6]ssk © (05.11.04 10:01) [8]
В 98 такая проблема не существует
ssk (2004-11-05 10:01:00) [7]>КаПиБаРа
У вас какая OS?
Windows 98 SE
ssk (2004-11-05 10:00:00) [8]>как включить русскую раскладку?
LoadKeyboardLayout('00000409', KLF_ACTIVATE); // английский
LoadKeyboardLayout('00000419', KLF_ACTIVATE); // русский
LoadKeyboardLayout('00000422', KLF_ACTIVATE); // украинский
попробуй еще установить в свойствах шрифта Charset = ANSI_CHARSET. не уверен, но может поможет. у меня было установлено DEFAULT_CHARSET и все работало.
КаПиБаРа (2004-11-05 09:56:00) [9]ssk © (05.11.04 9:49) [4]
вышеуказанных мной приложениях в [2] была установлена английская раскладка
У вас какая OS?
beavka © (05.11.04 9:34)
REA © (24.10.03 09:12)
Из форума (надо в FAQ вынести):
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;
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;
beavka (2004-11-05 09:52:00) [10]
> KSergey © (05.11.04 09:48) [3]
> А вообще ssk © безусловно прав: нафиг через Edit копировать??
Можно и не через Edit
В общем, используя функцию: CopyToClipBoard выходит такая фигня(
> KSergey © (05.11.04 09:45) [1]
> > не нужным образом
>
> ;))))
>
> Надо перед вставкой включить русскую раскладку. (LoadKeyboardLayout
> или что-то вроде этого)
> В инете можно легко найти пример. Впрчем, вопрос стандартный,
> может и другое есть решение.
А можно немного по подробней как включить русскую раскладку?
ssk (2004-11-05 09:49:00) [11]добавлю к
>KSergey © (05.11.04 09:45) [1]
> не нужным образом
;))))
Надо перед вставкой включить русскую раскладку
что во всех вышеуказанных мной приложениях в [2] была установлена английская раскладка.
KSergey (2004-11-05 09:48:00) [12]А вообще ssk © безусловно прав: нафиг через Edit копировать??
ssk (2004-11-05 09:46:00) [13]что значит "не нужным образом"?
этот код у меня прекрасно заработал с:
Word
Excel
ICQ
TheBAT!
Блокнот
З.Ы. А зачем копировать в буфер обмена через Edit?
KSergey (2004-11-05 09:45:00) [14]> не нужным образом
;))))
Надо перед вставкой включить русскую раскладку. (LoadKeyboardLayout или что-то вроде этого)
В инете можно легко найти пример. Впрчем, вопрос стандартный, может и другое есть решение.