MSChart控件在Visual Basic环境下的应用与研究

2014-11-23 01:11张利利胡文东
医疗卫生装备 2014年5期
关键词:测试者控件图表

张利利,李 娅,胡文东

0 引言

Visual Basic(VB)作为快速开发 Windows下的编程工具,由于其功能强大、简单易用而受到越来越多的开发者的青睐。VB具有很强的数据访问能力,和数据库的连接也十分便利[1],而衡量能力水平高低的最主要的依据就是测试者回答题目的正确个数及反应时间。如果回答题目的反应时间很短但错误很多,或者正确个数很多但反应时间很长,都表示该测试者的能力水平不高。那么如何将每个测试者的每道题的回答时间用图形直观地显示出来,让主试者很快看出哪个测试者的综合能力水平比较高,是本系统要完成的一个主要功能。

VB编程环境虽然使用简单,但它本身没有自动绘制图形的能力,需要借助编程来实现[2]。一种方法是通过 Object.Line(X1,Y1)-(X2,Y2)函数来实现,其中Object为绘制曲线的对象,(X1,Y1)为曲线的起点坐标,(X2,Y2)为曲线的终点坐标。如果系统只需要简单的几条曲线,用该函数绘制倒还省事,而且绘制图形比较灵活,可以根据用户的需求进行编写。但是如果曲线很多,就需要编写很多条这样的语句,程序就会显得繁琐,延长系统运行时间,可读性差。另一种方法是采用微软自主开发的MSChart图表控件,该控件功能强大,只需设置其相关的属性便能绘制出各种曲线,成为当前开发图形绘制比较流行的方法。

1 MSChart控件分析

1.1 MSChart控件简介

MSchart图表控件是Microsoft推出的一款图表控件,它可以按照一定的规范将数据以30多种图表的方式绘制出来,使数据变得直观生动。在使用该控件之前,首先需要安装该控件,并将该控件添加到“工程”中。可以按照以下步骤来完成控件的添加:

(1)在“工程”菜单中,单击“部件”显示“部件”对话框。

(2)选定“Microsoft Chart Control”控件名称左边的复选框。

(3)单击“确定”关闭“部件”对话框,MSChart控件将出现在工具框中。

(4)将MSChart控件添加到窗体上。

1.2 MSChart控件的组成结构

MSChart控件由以下5个主要对象组成:

(1)Annotations注解集合:它是一个对图形的一些注解对象的集合。所谓注解对象,就是对图形上某个点的详细或者批注的说明。

(2)Chart Areas图表区域集合:它是一个可以作图的区域范围。MS Chart的图形、图例、注释和提示信息都绘制在该区域上,可以在不同的绘图区域放置不同类型的Series。

(3)Legends图例集合:它是标注图形中各个线条或颜色的含义。

(4)Series图表序列集合:它是实际的绘图数据区域,实际呈现的图形形状就是由此集合中的每一个图表来构成的,可以往集合里面添加多个图表,每一个图表可以有自己的绘制形状、样式、独立的数据等。Series有一些重要属性,如Label(数据点标签文本)、ChartType(图表类型)等。

(5)Titles图表的标题集合:它是图表的标题说明。

2 系统设计与实现

2.1 系统设计

绘制图表需要数据,MSChart支持几种数据的添加方式,可以通过在图表的设计界面添加Points对象来添加数据,可以通过设置一个或多个数据源,将数据源绑定到图表中,也可以通过代码动态添加数据[3]。本系统选用最后一种方式来添加数据,即通过MSChart控件的Data属性在程序中动态指定图表的数据,在使用它给图表添加数据之前必须首先指定图表的行数(Row Count)和列数(Column Count)。

2.2 程序实现

2.2.1 图表的绘制

使用MSChart控件完成测试者测试时间的绘制,MSChart控件不能与Remote Data和Data控件一起使用,而是利用ADO和OLEDB的强大功能实现对数据的访问[4]。所以为了填充图表,必须先创建ADO对象,具体步骤如下:

(1)引入ADO对象。要想在程序中使用ADO对象编程,必须先为当前工程引用ADO的对象库。执行工程菜单中的引用命令,启动引用对话框,在清单列表中选择“Microsoft ActiveX Data Object2.x Library”(不同版本x的值不一样)。

(2)声明ADO对象。为了能够在程序中使用ADO对象,首先必须声明Connection和Recordset对象。声明语句如下:

Private Cn As New ADODB.Connection

Private rs As New ADODB.Recordset

(3)创建ADO对象实例。声明了对象以后,还需要创建对象实例并设置连接属性,具体实现代码如下:

Set Cn As New ADODB.Connection

//创建Connection对象实例

Cn.Connection String="Provider=Microsoft Jet OLEDB.4.0;DataSource="&App.Path&"mhealth.mdb"//设定ConnectionString属性连接数据库,mhealth.mdb是与系统相连接的数据库的名字

Cn.Open

Set rs=New ADODB.Recordset创建 Recordset对象实例

rs.Open Mysql,Cn,ad Open Keyset,adLock Optimistic//打开Recordset对象,其中Mysql是根据需要定义的结构化查询字符串

(4)属性设置。由于MSChart控件包含的属性繁杂,因此在应用系统开发中必须结合实际需要对其相关的属性进行设置。本系统所需设置的属性如下:

①Chart Type:返回或设置用于显示图表的类型,前面已经讲述过它的取值。本系统显示的是时间曲线图,所以我们选用二维折线图。

②Column Count:返回或设置与图表相关联的当前数据网格的列数。

③Random Fill:该属性指定是否随机产生图表数据网格的数据。

④Data:确定每条曲线的取值。

(5)代码实现:

With MSChart1

.ChartType=VtCh Chart Type2dLine

.RandomFill=False

.Title.Text="每题标准分"

.Column Count=5 //指定图表的总列数

For i=0 To rs.Record Count-1

.Column=1 //测验每道题的反应时间曲线所在列

.Row Count=rs.Record Count

.row=i+1

.RowLabel=CStr(rs("测试题号"))

.Plot.Series Collection(1).Pen.Width=1

.Plot.Series Collection(1).Pen.Style=VtPenStyle Solid

.Plot.Series Collection(1).Pen.VtColor.Set255,0,0

.Data=rs("测试时间")/1000

.Column=2 //测验每道题的1.15倍时间标准差所在列

.Row Count=

.row=i+1

自2016年以来,黄河科技学院与企业联合开发翻转校园APP,并在全校近3万名师生中全面推广使用,促进了学校进一步更新教育理念,优化教学模式。

.RowLabel=CStr(rs("ID"))

.Plot.Series Collection(2).Pen.Width=1

.Plot.Series Collection(2).Pen.Style=Vt Pen Style Solid

.Plot.Series Collection(2).Pen.VtColor.Set0,0,255

.Data=(rs("均值")+1.15*rs("方差"))*20/1000

…… //第3到第5系列略

rs.Move Next

Next i

End With

系统运行界面如图1所示。

图1 系统运行界面

2.2.2 图表的打印

如果想将测试结果给测试者看,就需要将反映能力水平的结果数据和时间数据打印出来。本系统选用Printer对象进行打印编程,该对象对于打印图表数据非常方便,仅需要简单的编程就可以实现,而且打印效果也相当不错。同时,还可以根据需求自定义打印的格式、字体和大小等参数。下面介绍用Printer对象打印MSChart控件显示的图表。

MS Chart1.Edit Copy

Printer.Print""

Printer.Paint Picture Clipboard.Get Data(),0,800

通过以上几句代码就可以将时间图表打印在指定的位置。

3 存在的不足

虽然利用VB的MSChart控件显示和打印图表都比较简单,生成的图表也很美观,但它也有不足之处,即如果图表上的行列比较多,图表上的字体就会变得凌乱,有的甚至看不清数据和标签。另外,数据在图表上的表示也有不足。由于本系统绘制图表的数据量较少,用该控件足以解决问题。如果系统的数据量比较多的话,建议从以下2个方面加以改进:

(1)将MS Chart控件本身的宽度改变。通过在MSChart控件的下方放置一个水平滚动条(Hscroll)控件,并将MSChart控件与水平滚动条控件绑定,让MSChart控件的宽度属性随数据改变,从而实现数据的同步显示。

(2)换用其他功能更强大的商用图表控件,如用Formulaone和TeeChart即可生成统计图。

[1] 张成才,王永信,刘丹丹,等.利用MSChart控件动态生成统计图[J].郑州大学学报,2007,28(3):73-75.

[2] 阚金明,赵润军.MSChart控件在流动机械维护管理系统中的应用[J].物流工程与管理,2012,34(6):119-120.

[3] 李怀川,吴孟春.利用微软图表控件MSChart实现紫外线数据图形显示[J].计算机与网络,2012(12):47-50.

[4] 陈金水,原小艳.利用VB开发决策支持程序[J].计算机工程与科学,2002,24(3):53-54.

猜你喜欢
测试者控件图表
基于.net的用户定义验证控件的应用分析
搜救犬幼犬挑选测试
关于.net控件数组的探讨
指纹收集器
双周图表
双周图表
双周图表
图表
小议语法测试
很多英国人不会拼常用词