当前位置:文档之家› MSChart控件教程

MSChart控件教程

MSChart控件这些内容是在学习过程中进行的整理,由于感到书籍资料或软件帮助中有时让人很不容易理解,特制作这个教程,以方便其他朋友学习,从新学习此控件的人的角度来描述相应的属性,相信也能让跟我一样程度的人更容易理解,可能在学习的过程中对某些属性与方法有理解不正确,请各位指正。

附录:1、AllowDynamicRotation作用:返回或设置是否可旋转图表注:需要图表的ChartType是3d类型才可以,当AllowDynamicRotation=True时,在图表中可按住ctrl+鼠标左键旋转图表。

示例:下列代码在窗体加载时将MSChart1设置为3d柱形图,并允许按住ctrl+鼠标左键旋转。

(窗体上放一个MSChart控件)Private Sub Form_Load()With MSChart1.chartType = VtChChartType3dBar '类型为3d柱形图,类形常数详见附录.AllowDynamicRotation = True '允许旋转End WithEnd Sub下列代码将以对话框的形式返回上面示例的AllowDynamicRotation值:MsgBox MSChart1.AllowDynamicRotation2、ChartData注:书中及软件帮助文档中说到数组需要变体型数值,是指如果要将数组第一个元素作为标题,其他作为数据,那个这个数组既有字符又有数字,那么就需要一个变体形。

如果数组中并不包含标题(或是之后使用属性来赋于标题),那么数组是可以定义类形的,个人建议先给定数组类型,之后再使用属性来设置标题。

作用:设置:将一个数组的数据作表图表的显示数据返回:将图表数据赋给一个数组示例:将数组元素作为图表的显示数据制作一个1行6列的的图表(数组的维代表图表的行,每维的元素代表列)Private Sub Form_Load()Dim 一维数组(1 To 6)'为了表示得更清楚,我们采取逐个赋值的方法一维数组(1) = 1一维数组(2) = 2一维数组(3) = 3一维数组(4) = 4一维数组(5) = 5一维数组(6) = 6With MSChart1.chartType = VtChChartType2dBar '类型为3d柱形图.ChartData = 一维数组()End WithEnd Sub为了理解图表的行列与数组的维数的对应关系,再举例一个二维数组(图表对应就形成2行6列)Private Sub Form_Load()Dim 二维数组(1 To 2, 1 To 6)'为了表示得更清楚,我们采取逐个赋值的方法二维数组(1, 1) = 1二维数组(1, 2) = 2二维数组(1, 3) = 3二维数组(1, 4) = 4二维数组(1, 5) = 5二维数组(1, 6) = 6二维数组(2, 1) = 1二维数组(2, 2) = 2二维数组(2, 3) = 3二维数组(2, 4) = 4二维数组(2, 5) = 5二维数组(2, 6) = 6With MSChart1.chartType = VtChChartType2dBar '类型为2d柱形图.ChartData = 二维数组()End WithEnd Sub下面是将数组的第一个元素设置成字符,使图表加载时将其作为标题的示例:Private Sub Form_Load()Dim 二维数组(1 To 2, 1 To 6)'为了表示得更清楚,我们采取逐个赋值的方法二维数组(1, 1) = "第一行标题"二维数组(1, 2) = 2二维数组(1, 3) = 3二维数组(1, 4) = 4二维数组(1, 5) = 5二维数组(1, 6) = 6二维数组(2, 1) = "第二行标题"二维数组(2, 2) = 5二维数组(2, 3) = 4二维数组(2, 4) = 3二维数组(2, 5) = 2二维数组(2, 6) = 1With MSChart1.chartType = VtChChartType2dBar '类型为2d柱形图.ChartData = 二维数组()End WithEnd Sub最后总结数组元素与维和图表行列的对应关系,作以下关系图:上述例子是将数组的内容反应到图表中,下面我们将使用上面的一维和二维图表,从图表中获得数据给数组,并将数组显示出来以验证结果(我们采取设置一个断点,然后通过视图\本地的方式来查看生成的数组):从图中可以看到,对于我们用2给数组生成的图表,再赋给新的数组时,数组变成了3维,并且每维还多了一个元素用来存储行标签,既“R1”、“R2”,多出来的一维用来存储列标签,既“C1”、“C2”等。

3、ChartType用途:返回或设置图表的类型注:设置类型后不用刷新,可以设计的时候选择属性,也可以代码中设置。

类型种类见附录。

示例:本示例中我们用了一个combox,可以在该combox选择类型,然后通过Click事件用select case语句来根据不同的选择给MSChart1的ChartType赋于不同的值来实现图表类型的改变。

Private Sub Form_Load()Dim 二维数组(1 To 2, 1 To 6)'为了表示得更清楚,我们采取逐个赋值的方法二维数组(1, 1) = 1二维数组(1, 2) = 2二维数组(1, 3) = 3二维数组(1, 4) = 4二维数组(1, 5) = 5二维数组(1, 6) = 6二维数组(2, 1) = 6二维数组(2, 2) = 5二维数组(2, 3) = 4二维数组(2, 4) = 3二维数组(2, 5) = 2二维数组(2, 6) = 1With MSChart1.chartType = VtChChartType2dBar '类型为2d柱形图.ChartData = 二维数组()End WithWith cmb图表类型.AddItem "三维柱形".AddItem "二维柱形".AddItem "三维折线".AddItem "二维折线".AddItem "三维面积".AddItem "二维面积".AddItem "三维梯形".AddItem "二维梯形".AddItem "三维组合".AddItem "二维组合".AddItem "二维饼形".AddItem "二维XY散点".ListIndex = 0End WithEnd SubPrivate Sub cmb图表类型_Click()With MSChart1Select Case cmb图表类型.TextCase "三维柱形".chartType = VtChChartType3dBarCase "二维柱形".chartType = VtChChartType2dBarCase "三维折线".chartType = VtChChartType3dLineCase "二维折线".chartType = VtChChartType2dLineCase "三维面积".chartType = VtChChartType3dAreaCase "二维面积".chartType = VtChChartType2dAreaCase "三维梯形".chartType = VtChChartType3dStepCase "二维梯形".chartType = VtChChartType2dStepCase "三维组合".chartType = VtChChartType3dCombination Case "二维组合".chartType = VtChChartType2dCombination Case "二维饼形".chartType = VtChChartType2dPieCase "二维XY散点".chartType = VtChChartType2dXYEnd SelectEnd WithEnd Sub4、Column用途:返回或设置当前列之所以要设置当前列,是因为我们对数据操作时需要指定当前行与列,因为MSChart没有像EXCEL软件的cells(行,列).text这样指定行与列的属性。

(此处暂不确定,之后更新)注:尝试过MSChart的列数设置为65536,会溢出,设置为30000是可以的,更多就已经无响应了,行就没有试了,不过应该不会有人要这么多行与列吧示例:此示列是1个二维柱形图,我们通过将当前列设置为2,然后修改2列的数值由2变为6Private Sub Command1_Click()MSChart1.Column = 2 '将第2列设置为当前列MSChart1.Data = 6 '更改当前列的值End SubPrivate Sub Form_Load()Dim 一维数组(1 To 6)'为了表示得更清楚,我们采取逐个赋值的方法一维数组(1) = 1一维数组(2) = 2一维数组(3) = 3一维数组(4) = 4一维数组(5) = 5一维数组(6) = 6With MSChart1.chartType = VtChChartType2dBar '类型为2d柱形图.ChartData = 一维数组()End WithEnd Sub示例:对于多行的图形,同时需要指定行和列,如果未指定行(并且未有过其他操作图表的代码),会默认为第一行,未指定列,会默认为1列。

以上例的图表为例,我们要改变第2行的第2列的当前值为6Private Sub Command1_Click()MSChart1.Column = 2 '将第2列设置为当前列MSChart1.Row = 2 '将第2行设置为当前行MSChart1.Data = 6 '更改当前行、列的值End Sub用途:返回或设置图表的总列数示例中使用二维数组生成2行6列的图表,请注意看两次结果的不同之处(代码就使用之前的)下列两图形其实是一个,ColumnCount=6,之所以呈现的外观不一样,是因为设置了以下属性:MSChart1.Plot.DataSeriesInRow = True用途:返回或设置列标签示例:以2行6列的数据图表为例,通过指定当前列=1,然后设置列标签;然后再指定当前列=6,再设置列标签。

相关主题