![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пересылка текста через Clipboard [D7, WinXP]
AlexG © (2004-06-20 19:06:00)У меня не получается в читабельном виде передать текст из Memo в Excel.
Я составляю в Memo таблицу с помощью #9 и #13#10. Данные имеют текстовый формат и русскую кодировку. После того как я составлю все таблицу я копирую содержимое Memo в Clipboard (CopyToClipboard), а потом вставляю из Excel:
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Workbooks.Add(TmpParam);
DataRow.SelectAll;
DataRow.CopyToClipboard;
ExcelApp.ActiveSheet.Paste;
Но в Excel весь текст становится нечитаемым (какая-то непонятная кодировка). :(
Как мне избежать такой перекодировки и вставить текст в читаемом виде? Контролировать это нужно на стороне Delphi или Excel?
AlexG (2004-06-20 19:52:00) [1]ОК. Ладно, буду через вариантный массив. Через клипбоард в целях расширения кругозора было :)
YurikGL (2004-06-20 19:49:00) [2]
> AlexG © (20.06.04 19:45) [5]
В целом, через буфер не советую т.к. пользователью будет печально, если у него что-то в буфере было, да и большой объем через буфер плохо прокачивать.
Попробуй объявить вариантный массив и присваивать его excelapplication.range['a1','c3']
evvcom (2004-06-20 19:49:00) [3]
> Быстрее через вариантный массив и через клипбоард
Вот именно через вариантный массив, но зачем клипбоард? И без буфера обмена все прекрасно работает. А уж разница в несколько миллисекунд, я думаю, никого не устроит.
AlexG (2004-06-20 19:47:00) [4]Это, скорее всего, клипбоард портит, потому что такое было не только в этом случае... Издругих программ копировал и вставлял в нечитаемом виде... Хотя... Надо проверить.
AlexG (2004-06-20 19:45:00) [5]> YurikGL
Я XML еще не изучал. Книг нет, а до распечаток и-нетовских пока время не пускает. Поэтому не получится пока через XML :(...
Может мне нужно объект Clipboard создать? И через него управлять клипбоардом?
YurikGL (2004-06-20 19:44:00) [6]Указанный тобой код сработал без проблем.
Попробуй
Memo1.SelectAll;
Memo1.CopyToClipboard;
Потом руками вставить в блокнот например, или еще куда. Так можно определить, кто путает кодировку.
YurikGL (2004-06-20 19:40:00) [7]
> AlexG © (20.06.04 19:34) [2]
Хочешь по быстрому - работай через XML. Paste я делал, как - не помню. Сейчас попробую найти.
AlexG (2004-06-20 19:34:00) [8]YurikGL
Так, как ты говоришь, дольше. Быстрее через вариантный массив и через клипбоард. Попробовал второй и наткнулся на эту кочку...
YurikGL (2004-06-20 19:28:00) [9]А зачем через буфер работать? Можно же напрямую ячейкам текст присваивать.