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

Вниз

TStringGrid -> MS Excel   Найти похожие ветки 

 
Modus   (2003-09-08 13:34) [0]

Написал процедурку для перекидывания таблицы TStringGrid в MS Excel, но русские буквы перекидываются кракозябрами. Скажите, где с бубном бегать:


Procedure CopyStringGridToClipBoard(StringGrid: TStringGrid);
Var S: String;
t,r: Integer;
Begin
S:="";
With StringGrid Do For t:=0 to RowCount-1 Do
Begin
For r:=0 to ColCount-1 Do IF r = ColCount-1 then S:=S+Cells[r,t] else S:=S+Cells[r,t]+#9;
S:=S+#13#10;
End; {For}
ClipBoard.AsText:=S;
End;


 
Palladin   (2003-09-08 13:40) [1]

вокруг DDE бегай
xlApp:=CreateOLEObject("Excel.Application");
...
S:="";
With StringGrid Do For t:=0 to RowCount-1 Do
Begin
For r:=0 to ColCount-1 Do IF r = ColCount-1 then S:=S+Cells[r,t] else S:=S+Cells[r,t]+#9;
S:=S+#13#10;
End; {For}
xlDDE:=TDDEClientConv.Create(nil);
xlDDE.SetLink("EXCEL", strSheetName);
xlDDE.PokeData(OLEVariant(xlApp.Range[Col1+Row1,Col2+Row2]).Address[ReferenceStyle:=xlR1C1], pchar(s));
xlDDE.free;


 
Modus   (2003-09-08 13:46) [2]

Ну так ведь это должен быть Excel запущен!
И где взять strSheetName?
Какого типа TDDEClient и xlApp ?

Никак нельзя сделать через буфер обмена?


 
Palladin   (2003-09-08 13:50) [3]


> Ну так ведь это должен быть Excel запущен!

А ты умеешь вставлять в эксель буффер без запуска экселя?


> И где взять strSheetName?

Это переменная содержащая имя листа, непонятно чтоли?


> Какого типа TDDEClient и xlApp ?

TDDEClient это и есть тип. xlApp:OleVariant;


> Никак нельзя сделать через буфер обмена?

Наверно можно...


 
VMcL   (2003-09-08 13:56) [4]

>Modus (08.09.03 13:34)

Если система Win2K, то это скорее всего не твой глюк.
Нужно в Excel"е выбирать "Специальная вставка", а потом в списке "Текст". Второй вариант: при копировании (то есть ClipBoard.AsText:=S;) раскладка клавы должна быть русская.


 
dima_shapkin   (2003-09-08 13:57) [5]

Перед копированием выстави русскую раскладку...

const
RUS_KeyboardLayout = "00000419";
var
kln : PChar;

GetMem(kln, 100);
GetKeyboardLayoutName(kln);
if (kln <> RUS_KeyboardLayout)then
LoadKeyboardLayout(RUS_KeyboardLayout,KLF_ACTIVATE);
// Копируй

// Выстави обратно раскладку


 
Modus   (2003-09-08 14:02) [6]

2VMcL © (08.09.03 13:56) [4]
dima_shapkin © (08.09.03 13:57) [5]

Да у меня XP. Класс, спасибо, помогло.
Только переводить назад не надо, он почему-то обратно сам слетает после копироваться в ClipBoard.



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

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

Наверх




Память: 0.45 MB
Время: 0.008 c
14-58891
CrazyHackers
2003-08-29 14:26
2003.09.18
Помогите с функцией определения даты начала недли


7-58938
R4D][
2003-07-06 16:15
2003.09.18
Хэндл и имя фаила.


7-58957
Dmitriy_R
2003-07-07 08:58
2003.09.18
Win 2000 server и модем (dial-up)


8-58785
Still Swamp
2003-05-15 14:46
2003.09.18
Как в трэде воспроизвести несколько MP3


1-58681
mfender
2003-09-04 17:12
2003.09.18
Как программе указать, потомком чего является компонент.





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