AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.11.2010, 08:59   #1  
Димитрий is offline
Димитрий
Участник
 
27 / 12 (1) ++
Регистрация: 10.08.2009
? Microsoft Office Chart 11
Помещаю на форму ActiveX компонент "Microsoft Office Chart 11".

Затем при нажатии на кнопку делаю следующее:

X++:
void clicked()
{
    
    Com charts;
    Com chart;
    ;
    super();

    charts = msChart.Charts();//Получаю Charts. Ожидаю, что это аналог Charts из скриптов при создании графиков в экселе.
    chart = Charts.Add(); 
    //chart = Charts.item(0); // Снятие комментария с этой строки ничего не меняет
    chart.HasTitle(true);      //Выполняется - заголовок выводится
    chart.ChartType(72); //xlXYScatterSmooth   тут и вылетает
}
msChart - название компонента. В итоге выдается ошибка, что нет метода ChartType. Если закомментировать эту строку, то выдается сетка графика с заголовком.

Собственно сам затык он происходит вот здесь, т.к. потом точно такие же сообщения выдаются и на попытки создать серии и т.п.

Кто-нибудь знает как у этого контрола достучаться до графиков?
Старый 29.11.2010, 09:10   #2  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Посмотрите примеры здесь:
Графики в Excel
Еще проблема с Excel при построении диаграмм
__________________
С уважением, Александр.
Старый 29.11.2010, 09:15   #3  
Димитрий is offline
Димитрий
Участник
 
27 / 12 (1) ++
Регистрация: 10.08.2009
Там смотрел. Первым делом. Там с документом Эксель работают. А в остальном разницы нет -

X++:
Charts.Add();
Chart = m_comDocument.ActiveChart();
...
    Chart.ChartType(65);
Старый 29.11.2010, 09:50   #4  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от Димитрий Посмотреть сообщение
Там смотрел. Первым делом. Там с документом Эксель работают. А в остальном разницы нет -

X++:
Charts.Add();
Chart = m_comDocument.ActiveChart();
...
    Chart.ChartType(65);
Посмотрите эту статью, это по вашей теме. Вообще, поищите сообщения от Gustav'а, на форуме много рекоммендаций по этому дело. Если не разберетесь - пишите
Старый 29.11.2010, 09:52   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Потому что, надо так
X++:
Chart.Type(23); // chChartTypeScatterSmoothLine
Вообще, у Office Web Components очень сильно отличается объектная модель от обычного офиса. Да и по возможностям они далеко не эквивалентны
Microsoft Office Web Components Visual Basic Reference
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Димитрий (1).
Старый 29.11.2010, 10:01   #6  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от AndyD Посмотреть сообщение
Потому что, надо так
X++:
Chart.Type(23); // chChartTypeScatterSmoothLine
Вообще, у Office Web Components очень сильно отличается объектная модель от обычного офиса. Да и по возможностям они далеко не эквивалентны
Microsoft Office Web Components Visual Basic Reference
интересно, почему? Вот это работает корректно (в 2003-м):

X++:
{
    ComExcelDocument_RU doc = new ComExcelDocument_RU();

    COM     xlApp;
    COM     wbook;
    COM     activeSheet;
    int     i;
    COM     charts;
    COM     activeChart;
    COM     rangeOutputHeader;
    COM     range;
    COM     seriesCollection;
    COM     series;
    ;

    doc.NewFile();
    wbook = doc.getComDocument();

    xlApp = wbook.Parent();
    activeSheet = xlApp.ActiveSheet();

    // генерация тестовых данных для примера
    for (i=1; i<=10; i++)
        doc.insertValue(ComExcelDocument_RU::numToNameCell(i,1), i*10);

    // тестовые значения для XValues
    for (i=5; i<=23; i+=2)
        doc.insertValue(ComExcelDocument_RU::numToNameCell(i,2), strFmt('Категория %1', i));

    // организация непрерывного диапазона в AA2:AJ2
    range = activeSheet.Range('AA2');
    for (i=22;i>=13;i--)
    {
        range.FormulaR1C1(strFmt('=RC[-%1]', i));
        range = range.Offset(0, 1);
    }
    rangeOutputHeader = activeSheet.Range('AA2:AJ2');

    // построение диаграммы
    charts = wbook.Charts();
    activeChart = charts.Add();

    activeChart.ChartType(5); // 5 = xlPie
    activeChart.SetSourceData(activeSheet.Range('A1:J1'));

    series = activeChart.SeriesCollection(1); // немного странно, что это работает, не требуя промежуточного series = seriesCollection.Item(1);

    // если организацию непрерывного диапазона перенести сюда,
    // то будут описанные выше проблемы с формулами

    series.XValues(rangeOutputHeader); // и, как хотелось, здесь Range, а не стринг

    activeChart.Location(2, activeSheet.Name()); // 2 = xlLocationAsObject
}
Взял из обсуждения, сам так делал.
Старый 29.11.2010, 10:08   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Э.
Вы сейчас пишите про Excel, а Дмитрий спрашивает и я отвечаю про ActiveX, который и является компонентом Office Web Components
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: kornix (1).
Старый 29.11.2010, 10:09   #8  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
это работает корректно, видимо, потому, что диаграммы берутся из рабочей книги, а не из контрола ActiveX

X++:
    COM     wbook;
    ;

    doc.NewFile();
    wbook = doc.getComDocument();
    charts = wbook.Charts();
__________________
С уважением, Александр.
За это сообщение автора поблагодарили: kornix (1).
Старый 29.11.2010, 10:15   #9  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от AndyD Посмотреть сообщение
Э.
Вы сейчас пишите про Excel, а Дмитрий спрашивает и я отвечаю про ActiveX, который и является компонентом Office Web Components
бумс.. спасибо
Старый 29.11.2010, 10:35   #10  
Димитрий is offline
Димитрий
Участник
 
27 / 12 (1) ++
Регистрация: 10.08.2009
Спасибо.
Старый 29.11.2010, 10:40   #11  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Димитрий, зайдите в режим правки дизайна вашей формы, выберите ваш элемент ActiveX - msChart, нажмите правой кнопкой мыши на нем, выберите необходимый пункт меню настроек ("Данные" или "Команды и параметры") - таким образом вы можете произвести необходимые настройки данного контрола (в том числе и тип диаграммы), не прибегая к программированию.
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 29.11.2010 в 10:53.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
AX UK: Microsoft Office Performance Point Server Sustain Events Blog bot DAX Blogs 0 16.11.2007 10:30
Dynamics AX: Microsoft Dynamics Client for Microsoft Office and SharePoint Server Blog bot DAX Blogs 0 29.08.2007 22:30
ALEG: Новости Microsoft Dynamics в TechNetFlash Blog bot DAX Blogs 0 02.11.2006 10:20
Axapta Lessons: Integrating Microsoft Axapta with Microsoft Office and Microsoft SharePoint Blog bot DAX Blogs 0 28.10.2006 18:22

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:23.