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

Вниз

Передача графика TDBChart в Excel   Найти похожие ветки 

 
Igor Stepanov   (2005-05-21 14:18) [0]

Уважаемые мастера,

Я использую компонент TDBChart, помещенный на компонент Quickreport, для рисования графика. Этот график нужно передать в открытую книгу Excel. Подскажите, пожалуйста, как правильно передать график в Excel.

С уважением, Игорь Степанов


 
YurikGL ©   (2005-05-21 15:09) [1]

Я, конечно, не мастер, но можно передать данные, на основе которых формируется твой график в Excel и сделать Excel-й график. А можно попробовать передать график, как рисунок.


 
Igor Stepanov   (2005-05-21 17:24) [2]

А можно ли передать TDBChart через OLEVariant?

Игорь Степанов


 
YurikGL ©   (2005-05-21 17:26) [3]


> А можно ли передать TDBChart через OLEVariant?

Нет. Насколько я знаю. Это ж разные объекты и Excel вряд ли поддерживает борландовский TDBChart


 
Igor Stepanov   (2005-05-22 17:34) [4]

Я нашел способ передачи в буфер обмена с помощью метода
QRDBChart.CopyToClipboardMetafile.

Работает хорошо и вручную прекрасно можно вставить в Word или Excel как графический объект. ОДнако я не могу вставить этот графический объект из буфера в Excel, используя метод Paste.

Подскажите, пожалуйста, как правильно использовать метод Paste.

С уважением, Игорь Степанов


 
YurikGL ©   (2005-05-22 17:42) [5]

Попробуй App.ActiveSheet.paste;
Если не получится - создай макрос "как вставляешь" и посмотри как он выглядит.


 
КиТаЯц ©   (2005-05-31 15:48) [6]

Самого этот вопрос интересовал... В какой-то ветке запостил, да все молчат...
Вот, сделал только что:

var XL: Variant;
...
try
   try
     XL := GetActiveOleObject("Excel.Application");
     except
     XL := CreateOleObject("Excel.Application");
     end;
 except
   raise Exception.Create("Ошибка Excel.Application");
 end;
XL.Visible := True;
XL.Workbooks.Add;
DBChart.CopyToClipboardBitmap;
...
здесь я передаю данные из DataSet...
...
XL.Range[XL.Cells[RecCount, 1], XL.Cells[RecCount, 1]].Select; //RecCount - количество переданных записей
XL.ActiveSheet.PasteSpecial (Link:=False, DisplayAsIcon:= False);

...


Проверено на OfficeXP. Хреново, что буфер используется. Коряво это как-то... Может кто подскажет как без клипборда?


 
Igor Stepanov   (2005-06-05 09:56) [7]

Уважаемые мастера,

Большое спасибо за помощь и советы. Мои проблемы с Paste оказались простыми. Дело в том, что я использовал зачем-то метод
Clipboard.Open перед передачей метафайла в буфер обмена.   После его вызова буфер обмена как-то блокировался и передача не происходила, в результате чего буфер оказывался пуст. К сожалению, метод Paste не проверяет буфер на наличие содержимого, а просто выдает ошибку. Как только я этот метод Clipboard.Open убрал, все заработало, и на моих глазах рисунок появился на листе открытой книги в Excel. Значит, надо перед вызовом метода Paste, обязательно проверять буфер на наличие содержимого.

Таким образом, проблема закрыта. Благодарю всех за помощь.

С уважением и наилучшими пожеланиями,
Игорь Степанов



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

Форум: "Corba";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.01 c
2-1144825642
Сергей И.
2006-04-12 11:07
2006.04.30
автозагрузка


2-1144770126
ViktorZ
2006-04-11 19:42
2006.04.30
сложить два столбца...


2-1144759151
TrainerOfDolphins
2006-04-11 16:39
2006.04.30
Назначение методов переменным класса во время выполнения.


15-1144472265
balepa
2006-04-08 08:57
2006.04.30
"Извлечение" мелодии из MP3


1-1143132806
lookin
2006-03-23 19:53
2006.04.30
В MainMenu пробежаться по всем MenuItem любой степени вложенности





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