Показать сообщение отдельно
Старый 16.10.2023, 11:28   #22  
LETTO is offline
LETTO
Участник
 
260 / 63 (3) ++++
Регистрация: 14.07.2022
Цитата:
Сообщение от DesparioN Посмотреть сообщение
Если не сложно, можете раскрыть тему более подробно?

X++:
System.Type                                                     enumValue;
System.Reflection.MethodInfo                          methodInfo;


enumValue = System.Type::GetType("DocumentFormat.OpenXml.EnumValue`1");
methodInfo = enumValue.GetMethod("Value");
А что собственно дальше?

В частности мне надо в DocumentFormat.OpenXml.Spreadsheet.Alignment указать значение для горизонтальных и вертикальных границ.
Коллеги, может у кого есть пример создания типа "DocumentFormat.OpenXml.EnumValue`1" в аксапте. Уже голову сломал.
Вот тут хороший пример:
https://wiki.programstore.ru/primer-...rammy-v-excel/
Но там используется метод OXMLExp::getEnumValue(), а кода нет.

В reflection более менее разбираюсь. Но всё равно не выходит

ЗЫ Ну а если есть готовый код по вставке картинки в XMLExcelReport_RU в XML буду оооочень благодарен.

На С# вот такой простой код:
X++:
            DocumentFormat.OpenXml.EnumValue<DocumentFormat.OpenXml.Drawing.BlipCompressionValues> value;

            value = new DocumentFormat.OpenXml.EnumValue<DocumentFormat.OpenXml.Drawing.BlipCompressionValues>(DocumentFormat.OpenXml.Drawing.BlipCompressionValues.Print);
В аксапте возвращает null (тот же код в C# выдает значение)
X++:
    enumObject = CLRInterop::parseClrEnum('DocumentFormat.OpenXml.Drawing.BlipCompressionValues', 'Print');

    enumType = System.Type::GetType("DocumentFormat.OpenXml.Drawing.BlipCompressionValues, DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
    enumValueType = System.Type::GetType("DocumentFormat.OpenXml.EnumValue`1, DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");

    typeParams = new System.Type[1]();
    typeParams.SetValue(enumType, 0);

    genericType = enumValueType.MakeGenericType(typeParams);

    Object = System.Activator::CreateInstance(genericType, 
              CLRInterop::parseClrEnum('DocumentFormat.OpenXml.Drawing.BlipCompressionValues', 'Print'));

Последний раз редактировалось LETTO; 16.10.2023 в 13:08.