由于teechart vcl 版本广泛应用于多种开发环境并得到很好的认可,西班牙steema software sl公司于1997年10月又开发了teechart pro activex。对于b/s的开发模式无疑是一个好消息,由于它只需安装在服务器端,客户端无需安装其他软件,只要使用通用浏览器即可显示统计图形,因此一面市更是又一次得到极大的欢迎。
下面我们结合asp技术介绍一下teechart pro v5 activex组件常用属性及应用。
我们先来看一个以teechart组件来显示"季度销售量"情况的二维柱状图实例:
<html><body>
<%’———–teecharteg.asp————————
set tchart1 = createobject("teechart.tchart")
tchart1.header.text(0)="季度销售量统计"
tchart1.addseries(1)
tchart1.aspect.view3d=0
tchart1.series(0).clear
tchart1.series(0).add 180, "1季度",rgb(35,70,128)
tchart1.series(0).add 240, "2季度",rgb(255,80,128)
tchart1.series(0).add 210, "3季度",&hface87
tchart1.series(0).add 280, "4季度",16777215
tchart1.export.savetojpegfile server.mappath("mychart.jpg"),false,jpegbestquality,100,tchart1.width, tchart1.height
set tchart1 = nothing
%>
<img src="mychart.jpg">
</body></html>
1)同asp其他组件的使用方法相同,首先创建对象。
set tchart1 = createobject("teechart.tchart")
2)利用其属性显示一个静态的统计图形。
tchart1.header.text(0)="季度销售量统计"
……
tchart1.series(0).add 210, "3季度",&hface87
tchart1.series(0).add 280, "4季度",16777215
3)生成统计图形文件
tchart1.export.savetojpegfile server.mappath("mychart.jpg"),false,jpegbestquality,100,tchart1.width, tchart1.height
4)释放对象
set tchart1 = nothing
上例中对象类的很多属性都是默认值,我们可以根据具体情况进行添加设置。下面详细介绍一下teechart组件的其他常用属性(采用程序注释的形式列出)
<html> <head><title>teechart对象的属性方法介绍</title></head>
<body>
<%
set tchart1 = createobject("teechart.tchart")
tchart1.height = 440 整个图表的高度
tchart1.width = 500 整个图表的宽度
tchart1.header.text.clear
tchart1.header.text.add "季度销售量统计" 图表标题,方式也可采用 tchart1.header.text(0)="标题"形式
tchart1.header.font.size = 22 标题字体大小
tchart1.header.font.bold = true 标题字体是否粗体
tchart1.header.font.italic = true 标题字体是否斜体
tchart1.panel.marginleft = 3 图表左边距
tchart1.panel.gradient.visible = true 是否有底色
tchart1.panel.gradient.startcolor = &hb3def 图表底色开始颜色
tchart1.panel.gradient.endcolor = &hface87 图表底色结束颜色
tchart1.panel.bevelwidth = 0 画布向内缩进幅度
tchart1.addseries(0) 显示图形的方式,取值范围为1 ~ 39
tchart1.aspect.view3d = false false表示2d图形,true表示3d图形
tchart1.aspect.chart3dpercent = 10 若是3d图形,表示其倾斜度
tchart1.aspect.zoom = 100 图形显示比例
tchart1.aspect.orthogonal = true 3d图表是否侧转
tchart1.aspect.rotation = -20 如果图表是侧转的,水平侧转角度-360~360
tchart1.aspect.elevation = 0 如果图表是侧转的,前后侧转角度-360~360
tchart1.aspect.perspective = 0 3d图形向心聚集程度
tchart1.aspect.chart3dpercent = 20 3d图形厚度1~100
tchart1.walls.bottom.size = 5 如果是3d图形,表示其横坐标厚度
tchart1.walls.bottom.color = rgb(35,70,128) 底座颜色
tchart1.walls.bottom.transparent = true 若是3d图形,底座是否透明 tchart1.walls.back.pen.visible = true 参坐标边框是否显示
tchart1.walls.left.size = 5 如果是3d图形,表示其纵坐标厚度
tchart1.walls.left.color = 8454143 纵坐标颜色
tchart1.walls.left.transparent = true 若是3d图形,纵坐标壁是否透明
tchart1.legend.visible = true 是否显示图例
tchart1.legend.vertspacing = 9 图例框架高度
tchart1.legend.dividinglines.visible = false 图例间是否有间隔线
tchart1.series(0).clear
tchart1.series(0).coloreachpoint = true
tchart1.series(0).add 180,"1季度",rgb(35,70,128) 静态向图表中添加显示数据,参数依次为数值大小,名称,颜色
tchart1.series(0).add 240, "2季度",255
tchart1.series(0).add 210, "3季度",&hface87
tchart1.series(0).add 280, "4季度",16777215
tchart1.axis.depth.visibl e= false 坐标轴是3d透明时,是否显示内壁
tchart1.axis.drawaxesbeforeseries = false 网格是否显示在图的前
tchart1.axis.left.title.caption = "产值(单位:万元)" 纵坐标轴标题
tchart1.axis.left.title.font.bold = true 纵坐标轴标题是否加粗
tchart1.axis.left.title.font.size = 9 纵坐标轴标题大小
tchart1.axis.left.title.visible = true 是否显示纵坐标名称
tchart1.axis.left.labels.angle = 90 纵坐标字体倾斜角度
tchart1.axis.left.gridpen.visible = true 横坐标参量轴是否显示
tchart1.axis.bottom.title.caption = "时间轴" 横坐标轴标题
tchart1.axis.bottom.title.font.bold = true 横坐标轴标题是否加粗
tchart1.axis.bottom.title.font.size= 9 横坐标轴标题大小
tchart1.axis.bottom.labels.angle = 0 横坐标字体倾斜角度0~360
tchart1.axis.bottom.gridpen.visible = true 参纵坐标轴是否显示
tchart1.footer.text.add "图表下标题" 图表的下标题
tchart1.footer.font.size = 11 下标题字体大小
tchart1.footer.font.bold = true 下标题字体是否为粗体
tchart1.footer.font.italic = false 下标题字体是否为斜体
tchart1.export.savetojpegfile server.mappath("mychart.jpg"),false,jpegbestquality, 100 , tchart1.width , tchart1.height 导出存储为mychart.jpg文件
set tchart1 = nothing
%> <img src="mychart.jpg">
</body></html>
注:1. tchart1.addseries(0)图形显示方式的属性值得研究,有兴趣的读者可以从0~39测试一下,找到自己理想的显示方式。
2.对于颜色的引用,采用rgb三种表示方法,例如:rgb(255,255,255) = &hffffff = 16777215。具体的换算方法不在说明。
3.属性为true和false的可以用1和0替代表示。
对于组图的添加,下面列举一个显示二组数据的例子。
<%set tchart1 = createobject("teechart.tchart")
tchart1.header.text(0)="季度销售量"标题
tchart1.addseries(1)
tchart1.addseries(1)
tchart1.series(0).add 180, "1季度",rgb(255,255,255)
tchart1.series(1).add 240, "1季度",255
tchart1.series(0).add 280, "2季度",rgb(255,255,255)
tchart1.series(1).add 200, "2季度",255
tchart1.series(0).add 150, "3季度",rgb(255,255,255)
tchart1.series(1).add 320, "3季度",255
tchart1.series(0).add 360, "4季度",rgb(255,255,255)
tchart1.series(1).add 200, "4季度",255
tchart1.series(0).marks.visible = true 是否显示数据标题
tchart1.series(0).marks.style = 0 数据显示风格0~9,0为数值,1为百分比……
tchart1.series(1).marks.style=0
tchart1.export.savetojpegfile server.mappath("mychart.jpg"),false,jpegbestquality,100,tchart1.width, tchart1.height
set tchart1 = nothing
%>
以上两个例子都是静态的产生统计结果,然后显示。然而在实际工作中,更多的是从现有的数据库中读取动态的统计数据显示。下面我们举一个利用ado直接连接access数据库,动态显示结果的例子。数据库为(test.mdb),表的两列为colname,colvalue。分别为月份名称和对应的统计数据colname(1月份,2月份,……),colvalue(103,210,……):
<%dim outputstream
set tchart1 = createobject("teechart.tchart")
tchart1.header.text(0)="季度销售量"标题
tchart1.addseries(0)显示图形的风格数值为1 ~39见下
set conn=server.createobject("adodb.connection")
set rst=server.createobject("adodb.recordset")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("zcw.mdb")
strsql = "select * from test"
rst.open strsql,conn,1,1
if rst.recordcount > 0 then
tchart1.series(0).datasource = rst
tchart1.series(0).labelssource="colname"
tchart1.series(0).yvalues.valuesource="colvalue"
else
tchart1.series(0).fillsamplevalues(12)
tchart1.header.text(0)="没有结果,随机显示数据"
end if
tchart1.series(0).marks.visible=true
tchart1.series(0).marks.style=4
tchart1.export.savetojpegfile server.mappath("mychart.jpg"),false,jpegbestquality,100,tchart1.width, tchart1.height
set tchart1 = nothing
rst.close
set conn = nothing
%> <img src="mychart.jpg">
以上的三个实例都是生成静态jpg图片文件后显示的,如果对于浏览结果没有保存价值,我们可以使用png(portable network graphics)方式显示。
<% dim charttype, outputstream, viewtype
set chart1 = createobject("teechart.tchart")
chart1.addseries(0)
chart1.series(0).fillsamplevalues 20 随机生成数据
outputstream=chart1.export.aspng.savetostream
set chart1=nothing
response.binarywrite outputstream
%>
以上是对teechart组件属性与asp技术结合的简单介绍,希望对大家有所帮助。teechart pro activex免费试用版本可从http://www.steema.com/download/downloadindex.htm下载。关于teechart与asp结合的代码示例可参阅http://www.steema.com/products/teechart/asp/asphome.htm。 如果您对本文有什么意见或看法请与作者联系 zcwmxn@sina.com.cn。
