|
![]() |
#1 |
Участник
|
Ну, не получается так просто. Не получается. Получаем усложнение, а не упрощение. Не в самом методе копирования, а в его использовании. Как с этим работать-то?
Чтобы использовать объектные параметры их предварительно надо создать. Значит, озаботится их хранением где-то во вне. Значит, в общем случае код получается примерно такой ComSource = создатьCom(BookMark1) ComTarget = создатьCom(BookMark2) copyAndInsertRange(ComSource, ComTarget) Это альтернатива существующему copyAndInsertRange(BookMark1, BookMark2) Имеем минимум 3 строчки кода против 1 (а реально больше, поскольку надо озаботится описанием переменных и дополнительными проверками). Хуже того, это придется постоянно повторять (писанину кода) при написании новых отчетов. Новый отчет - новые 3 строчки, вместо 1. Какие уж тут последующие удобства! Когда такое будет оправдано? Только при многократном использовании, хотя бы одного из Com-объектов. Или же при копировании между разными файлами Excel. Это действительно настолько часто встречающаяся ситуация, чтобы создавать себе проблемы? |
|
![]() |
#2 |
Moderator
|
Я написал постом выше, что можно не создавать отдельные переменные диапазонов для разового вызова. Диапазон как COM-объект можно передать методу при помощи волшебного слова Range с квалификатором родительского объекта, которым может выступать либо Worksheet, либо - и, возможно, это выглядит не столь естественно - Application (нужно помнить, что при использовании Application будет подразумеваться текущий активный Worksheet). В случае использования Worksheet выглядеть будет примерно так:
X++: COM doc = new ComExcelDocument_RU();
COM worksheet;
worksheet = doc.getWorkSheet(1);
copyAndInsertRange( worksheet.Range(BookMark1),
worksheet.Range(BookMark2) ); Что касается проверок, то их мы уже однажды пообсуждали: О проверках в классе ComExcelDocument_RU Владимир, предлагаю на этом прервать нашу "битву парадигм" до будущих встреч в новых темах ![]() |
|