2012-11-12 39 views
3

使用Ax2012中的图表,我工作得很好。但是我想改变它启动时显示的图形类型,例如“Spline” - 图表,而不是默认的“列”图表。如何在图表中设置默认系列/样式?

这是我现在有: http://i.stack.imgur.com/RyR9v.png

这就是我想要的: ​​

这里有一点我的基本代码:

Graphics graphics; 
Microsoft.Dynamics.AX.Framework.Client.Controls.ChartToolBar chartToolbarControl1; 
#MACROLIB.ChartFx 
; 

chartToolbarControl1 = chartToolbarControlHostChart.control(); 
chartToolbarControl1.set_ChartControl(Chart.control()); 

graphics = new graphics(); 
graphics.ManagedHostToControl(Chart); 

graphics.parmCreateType(#ct_cluster| #cT_tool); 
Graphics.parmSeriesType(#line); 

graphics.create(); 

这个代码,我加载毕竟数据并显示图形。这可以工作,但我希望它以样条曲线图开始。通过使用图表上方的图表控件,只需选择样条类型,即可轻松完成此操作,但无法使用此设置加载图表。

如果我尝试使用Graphics.parmSeriesType(#line); (或#pie或一些其它) 我没有在我的代码得到一个错误,但是当我运行它,我得到的错误:

Null could not be obtained.

我已经试过几个这些宏,但他们都得到除了如果我使用#series_point相同的错误。我也试过从1-25插入常规整数,看看它是否有效,但它们给我的错误是一样的。

任何想法为什么发生这种情况?

+0

我不知道它如何在ax 2012中工作,但在ax 4.0中,更改图形类型是直接在ActiveX控件上完成的,而不是图形对象。 'myActiveXChartControl.Gallery(#PIE);'例如。 – Pierre

回答

3

我查看了Graphics类和ChartFX宏,并找到了设置列样式的方式和位置。要建立自己的图表样式,然后按照AX当前的模式,请尝试以下操作:

  1. 通过搜索该列表查找SeriesChartType枚举整数值:http://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.seriescharttype.aspx(这个列表是秩序,是从0开始的。Spline是枚举值4)。

  2. ChartFX创建此值的宏,如#DEFINE.SERIES_SPLINE(4)。像这样的三个值(对于点,条和列)已经在ChartFX宏中定义。

  3. 修改Graphics类的classDeclaration添加另一个宏:#DEFINE.SeriesChartTypeEnum_Spline("Spline")

  4. 修改Graphics类的setChartType方法。目前if语句出现在方法后,补充一点:

    else if (seriesType == #SERIES_SPLINE) 
    { 
        newChartType = ClrInterop::parseClrEnum(#SeriesChartTypeEnum, #SeriesChartTypeEnum_Spline); 
    } 
    
  5. 现在,你可以回到你原来的代码示例,并代替Graphics.parmSeriesType(#line);,把Graphics.parmSeriesType(#SERIES_SPLINE);

+2

经过进一步的检查,在我看来''SeriesChartType' enum整数值根本不重要,唯一重要的是当调用'ClrInterop :: parseClrEnum'时,您传递的字符串值作为第二个参数是所需图表类型的名称(例如“样条线”)。 – SShaheen

相关问题