|
![]() |
#1 |
Молодой, подающий надежды
|
код рабочий, Ax2012, Office 2013
![]() X++: public SysExcelShape_NET addPicture(str _file, real _width, real _height, boolean _rightSide = false boolean _center = false ) { Microsoft.Office.Interop.Excel.Worksheet curWorksheet; Microsoft.Office.Interop.Excel.Shapes shapes; Microsoft.Office.Interop.Excel.Shape shape; System.Object linkToFile; System.Object saveWithDocument; System.Single left; System.Single top; System.Single width; System.Single height; real leftReal; real widthRangeReal; Microsoft.Office.Interop.Excel.Borders borders; Microsoft.Office.Interop.Excel.Border borderTop; new InteropPermission(InteropKind::ClrInterop).assert(); linkToFile = 0; saveWithDocument = 1; left = range_net.get_Left(); top = range_net.get_Top(); width = _width; height = _height; if (_rightSide) { leftReal = left; widthRangeReal = range_net.get_Width(); left = leftReal + widthRangeReal - _width; } else if (_center) { leftReal = left; widthRangeReal = range_net.get_Width(); left = leftReal + (widthRangeReal / 2) - (_width / 2); } borders = range_net.get_Borders(); borderTop = borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex::xlEdgeTop); curWorksheet = range_net.get_Worksheet(); shapes = curWorksheet.get_Shapes(); shape = shapes.AddPicture(_file, linkToFile, saveWithDocument, left, top, width, height); if (borderTop.get_Weight()) { shape.IncrementTop(1); } return SysExcelShape_NET::construct(version, shape); } |
|
|
За это сообщение автора поблагодарили: Logger (3), ex3em (1). |
![]() |
#2 |
Участник
|
жаль не помогло (( ax2009
немного упростил пример X++: Microsoft.Office.Interop.Excel.Shapes shapes; Microsoft.Office.Interop.Excel.Shape shape; System.Object linkToFile; System.Object saveWithDocument; System.Single lef; System.Single top; System.Single width; System.Single height; str _file; ; new InteropPermission(InteropKind::ClrInterop).assert(); lef = 10.0; top = 10.0; width = 100.0; height = 100.0; linkToFile = 0; saveWithDocument = 1; // shapes = worksheet_net.get_Shapes(); shape.Copy(); //просто поставил, чтобы убедиться что на сам объект компилятор не ругается shapes.SelectAll(); //просто поставил, чтобы убедиться что на сам объект компилятор не ругается shape = shapes.AddPicture(_file, //ругается тут (( linkToFile, saveWithDocument, lef, top, width, height); Класс Microsoft.Office.Interop.Excel.Shapes не содержит эту функцию. хотя в редакторе в списке ф-ций этот метод есть и описание и кол-во переменных совпадает. Может кривая библиотека? Прописана такая Microsoft.Office.Interop.Excel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL |
|
![]() |
#3 |
Молодой, подающий надежды
|
у меня Version = 14.0.0.0
|
|
![]() |
#4 |
Участник
|
Ошибка скорее всего из-за, мягко говоря, кривой реализации работы с .NET в компиляторе AX 2009. Вместо конкретного .NET типа стоит использовать CLRObject. В этом случае, например, проверки на наличие того или иного метода .NET объекта будут выполнятся не на этапе компиляции, а на этапе выполнения. И ошибка про отсутствующий метод должна уйти (на самом деле здесь просто компилятор не может подобрать нужный метод .NET класса по указанным в коде типам фактических параметров).
|
|
|
За это сообщение автора поблагодарили: ex3em (1), Logger (5). |
![]() |
#5 |
Участник
|
Цитата:
Сообщение от makbeth
![]() Ошибка скорее всего из-за, мягко говоря, кривой реализации работы с .NET в компиляторе AX 2009. Вместо конкретного .NET типа стоит использовать CLRObject. В этом случае, например, проверки на наличие того или иного метода .NET объекта будут выполнятся не на этапе компиляции, а на этапе выполнения. И ошибка про отсутствующий метод должна уйти (на самом деле здесь просто компилятор не может подобрать нужный метод .NET класса по указанным в коде типам фактических параметров).
Смог заставить работать это дело через CLRObject в самописном классе SysExcelShapes_NET (делал по аналогии с классами SysExcel *** _NET) сделал метод addPicture Код: CLRObject ms2; ; ms2 = shapes_net; ms2.AddPicture(_fileName, 0, 1, 10.0, 10.0, 100.0, 100.0); |
|
Теги |
clrobject |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|