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

Вниз

Глюк при копированиии данных StringGrid в Excel?   Найти похожие ветки 

 
JIruaasgyy   (2004-03-03 23:12) [0]

Глюк заключается в следующим.Берем форму.На неепомещаем StringGrid и 2 кнопки (Button1,Button2).В Uses записываем clipbrd - для копирования через буфер обмена.
В options StringGrid-а ставим goEditing на true чтобы можно было писать текст, и шрифт на Arial кириллица.И записываем следующий код в кнопки:

procedure TForm1.Button1Click(Sender: TObject);
Var
i,j:Integer;
sStr:String;
begin
sStr:="";
{}
sstr:=Caption;
sstr:=sstr+Chr(13);
For i:=0 to StringGrid1.RowCount-1 do Begin
If i<>0 then sstr:=sstr+Chr(13);
For j:=0 to StringGrid1.ColCount -1 do Begin
sstr:=sstr+StringGrid1.cells[j,i];
If j<>StringGrid1.ColCount -1 then sstr:=sstr+Chr(9);
End;
End;
Clipboard.Clear;
Clipboard.AsText:=sstr;
End;

procedure TForm1.Button2Click(Sender: TObject);
begin
StringGrid1.Cells[0,0]:="Привет";
end;

Первая заносит данные в буфер, вторая добавляет в фиксированную ячейку слово привет.
Теперь смысл глюка!!!!!Делаем сначала пункт а) затем перегружает прогу и делаем пункт б)

а) Нажимаем Button2 (добавляется слово Привет) затем Button1 (копируется в буфер).Заходим в Excel и нажимаем Вставить.У меня вместо русского названия абракадабра.
б)Сначала вводим русские буквы в любую нефиксированную ячейку.Затем нажимаем Button2 после чего Button1.Заходим в Excel и нажимаем Вставить.НОРМАЛЬНЫЙ РУССКИЙ ШРИФТ!!!
В чем дело? Может у вас не так, но у меня так.Что делать!!!!!


 
ЮЮ   (2004-03-04 05:34) [1]

> б)Сначала вводим русские буквы...
Сначала ты переключился на русскую клавиатуру, а это необходимое и достаточное условие для всего остального


 
Alex Konshin   (2004-03-04 09:24) [2]

Нужно при помещении в клипбоард устанавливать codepage или копировать в клипбоард в UNICODE. Причем в W95+ и 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;


 
Alex Konshin   (2004-03-04 09:28) [3]

Да, естественно, это забыл:

const
CODEPAGE = 1251;


 
Palladin   (2004-03-04 09:31) [4]

Пользуйтесь DDE. Быстрее и никаких проблем с кодировкой.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.013 c
1-43678
Ivolg
2004-03-01 18:18
2004.03.14
Прозрочность


1-43478
Ivolg
2004-02-29 16:47
2004.03.14
Как написать свой компонент


4-43965
yorik
2004-01-04 12:26
2004.03.14
Переименовать папку


1-43438
malkolinge
2004-03-01 13:07
2004.03.14
Указатель за витруальный метод предка.


8-43686
UnDISCOvery
2003-11-06 15:15
2004.03.14
DirectSound. Как записать многоканальный звук ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский