摘要:FusionCharts for Visual Basic 6.0(以下簡稱FusionCharts)是一款基于Flash的新型C/S圖表控件,其圖表載體與圖表文件分離的獨特工作模式,以及在圖表類型、顯示效果、輕量化、分發(fā)更新等方面具有較大優(yōu)勢。通過實例,說明利用FusionCharts實現(xiàn)基本圖表類型的方法。
關(guān)鍵詞:C/S;FusionCharts;圖表;VB
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)05-1138-02
The Design and Realization of Chart Based on FusionCharts under C/S Mode
LIU Geng-long, SUI Wei-fang
(Xuzhou College of Industrial Technology, Xuzhou 221140, China)
Abstract: The FusionCharts for VB 6.0,is a Flash-based charting component in C/S mode,hasfeatures of chart viewer and chart files separation,and a large advantage such as chart types, display effects, lightweight, charts updating and etc.Through examples, descript the design and realization of basic chart types using FusionCharts in C/S applications.
Key words: C/S; FusionCharts; Chart; VB
圖表在應用程序開發(fā)中占有重要地位,針對數(shù)據(jù)分析和統(tǒng)計結(jié)果的呈現(xiàn)有不可替代的作用。在C/S開發(fā)模式下,一般通過引入圖表控件的方式開發(fā)圖表,傳統(tǒng)商業(yè)化的圖表控件普遍存在一些不足之處,諸如輕量化和功能之間難以平衡、編程較為復雜、分發(fā)后的更新較為困難等。FusionCharts屬于輕量級的圖表控件,圖表類型豐富、美觀,編程簡單,采用了圖表顯示載體和圖表文件分離的獨特工作原理,方便應用程序發(fā)布和更新,同時支持靜態(tài)和動態(tài)數(shù)據(jù)模式生成圖表。其工作模型和工作模式如圖1、圖2所示。
1 實例目標和要求
實例目標是顯示某單位職工月薪金圖表,要求圖表依據(jù)選擇的職工及薪金年份動態(tài)生成,圖表類型有柱形圖、條形圖、折線圖和面積圖等,X軸為月份,Y軸為薪金金額,薪金數(shù)據(jù)以Microsoft Access數(shù)據(jù)庫文件存儲。
2 實例實現(xiàn)步驟
2.1 數(shù)據(jù)表設計
創(chuàng)建一個Microsoft Access數(shù)據(jù)表,并創(chuàng)建職工姓名、薪金年份、月份和金額4個字段,數(shù)據(jù)表結(jié)構(gòu)定義如圖3所示。
2.2 程序界面布局設計
在VB6.0窗體上放置FusionCharts圖表控件和其它相應控件,最終界面布局如圖4所示。
2.3 代碼設計
依據(jù)實例目標和要求,編程采用從數(shù)據(jù)庫動態(tài)讀取數(shù)據(jù),生成FusionCharts接受的規(guī)范XML數(shù)據(jù)格式后生成并顯示圖表(FusionCharts接受的圖表XML數(shù)據(jù)格式見表1)。本文例出了實例中基于VB6.0的主要代碼,輔助代碼可參考FusionCharts控件屬性說明實現(xiàn)。
1)從數(shù)據(jù)庫中條件讀取數(shù)據(jù)并生成XML數(shù)據(jù)
Private Sub SetSalaryXMLData(ByVal strStaffName As String, _
ByVal strSalaryYear As String)'生成FusionCharts接受的XML數(shù)據(jù)
objDB_Record.Open \"select xj_yf,xj_je from xjb where xj_xm='\" strStaffName \"'\" \" and xj_nf='\" strSalaryYear \"'\" _
\" order by 1\", objDB_Conn, 1, 1'從數(shù)據(jù)庫中讀取指定職工和年份的薪金數(shù)據(jù)
'1/3:生成XML數(shù)據(jù)頭
strSalaryXMLData = \" \" caption='職工薪金發(fā)放圖(\" strSalaryYear \"年)'\" _ \" subcaption='職工姓名:\" strStaffName \"'\" _ \" chartTopMargin='30' chartBottomMargin='2'\" _ \" chartLeftMargin='2' chartRightMargin='20'\" _ \" xAxisName='月份' yAxisName='金額'\" _ \" numberPrefix='¥' baseFontSize='12'\" _ \" formatNumberScale='0' formatNumber='1'\" _ \" baseFont='宋體' showValues='1'\" _ \" animation='1' rotateYAxisName='0'\" _ \" rotateXAxisName='0'>\" '2/3:生成XML數(shù)據(jù)主體(FusionCharts接受的XML數(shù)據(jù)規(guī)范見表1) For lngLoopi = 1 To objDB_Record.RecordCount strSalaryXMLData = strSalaryXMLData _ \" \" objDB_Record.MoveNext Next objDB_Record.Close '3/3:生成XML數(shù)據(jù)尾 strSalaryXMLData = strSalaryXMLData \"\" End Sub 2)'生成并顯示圖表 Private Sub ViewChart() With FusionCharts1 .ChartPath = App.Path \"\\Charts\"'指定Flash SWF圖表文件存放路徑 Select Case List1(2).ListIndex'選擇圖表類型 Case 0: .ChartType = column3d'3D柱形圖 Case 1: .ChartType = column2d'2D柱形圖 Case 2: .ChartType = bar2d'2D條形圖 Case 3: .ChartType = line2d'2D折線圖 Case 4: .ChartType = area2d'2D面積圖 End Select .setDataXML = strSalaryXMLData'接受生成的XML數(shù)據(jù) .RenderChart'生成并顯示圖表 End With End Sub FucionCharts提供了豐富的圖表屬性供編程使用,本文實例涉及的FusionCharts 圖表部分屬性描述見表2。3 實例運行結(jié)果 本文實例在Windows XP/2000/2003、VB6+SP6、FusionCharts for VB 1.0、Flash Player 9平臺下運行通過。運行結(jié)果如圖5、圖6所示。 4 結(jié)束語 限于篇幅,本文僅實例介紹了FusionCharts的基本功能,其支持多達40余種圖表類型、圖表功能強大,圖表交互性強,類比其它商業(yè)圖表控件實現(xiàn)代碼量少等特點無法一一詳述。對于在C/S模式下快速實現(xiàn)圖表應用的開發(fā)人員提供了新的選擇。 參考文獻: [1] InfoSoft Global(P) Ltd.FusionCharts for VB Documentation[EB/OL].(2009-12-22).http://www.fusioncharts.com/VB/docs/index.html. [2] 楊凱.利用FusionCharts組件制作動態(tài)Web統(tǒng)計圖表[J].微電腦世界,2009(7). [3] 張成才,常靜,葉偉.基于OWC的動態(tài)統(tǒng)計圖表的設計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2009,19(10). [4] 張成才,王永信,劉丹丹,等.利用MSChart控件動態(tài)生成統(tǒng)計圖[J].鄭州大學學報:工學版,2007,28(3).