?? 002.htm
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI專題--控件應(yīng)用-->DELPHI中CHARTFX構(gòu)件使用詳解</TITLE>
<META NAME="keywords" CONTENT=" DELPHI專題--控件應(yīng)用 DELPHI中CHARTFX構(gòu)件使用詳解">
<META NAME="description" CONTENT=" - DELPHI專題--控件應(yīng)用 - DELPHI中CHARTFX構(gòu)件使用詳解">
<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋體"}
.tt2 {font: 12pt/15pt "宋體"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<a href="index.html">返回</a>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷體_GB2312">DELPHI中CHARTFX構(gòu)件使用詳解</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<span class="tt2">Delphi是一種新型可視化程序開發(fā)工具。它在功能上遠(yuǎn)遠(yuǎn)勝過VB,甚至被冠以VB殺手(VB
Killer)的美譽(yù)。理由之一就是Delphi可以輕松地安裝和使用VB的VBX控件并轉(zhuǎn)換VB程序?yàn)镈elphi程序。<br>
本文將就Delphi組件VBX頁里ChartFx(圖表)構(gòu)件的特性和使用方法作一較為完備的闡述。相信對讀者建立美觀的圖表有所裨益,并會對Delphi的“屬性管理”有更深一步的認(rèn)識。<br>
首先介紹一下工程上經(jīng)常用到的直方圖和餅圖的概念。由于實(shí)際需要,常需比較一組數(shù)據(jù)或多組數(shù)據(jù)的相對大小(如公司中各部門的收支情況比較、金融利率的調(diào)整情況等)。為了能夠簡潔直觀地得到比較結(jié)果,通常將這些數(shù)據(jù)放入直角坐標(biāo)系,以縱坐標(biāo)的相對大小比較數(shù)據(jù),即所謂直方圖;或是將各數(shù)據(jù)轉(zhuǎn)化為百分點(diǎn),放入一個(gè)單位圓,即形成所謂餅圖。<br>
在Delphi組件VBX頁中,ChartFx構(gòu)件就是以上工程需要而設(shè)計(jì)的。選取該構(gòu)件置于窗體上,調(diào)整至合適大小,即可見到缺省的圖表格式(在未初始化數(shù)據(jù)時(shí),構(gòu)件自動(dòng)生成隨機(jī)數(shù)據(jù)充當(dāng)比較項(xiàng)目)。在對象監(jiān)視器中,設(shè)置不同的屬性,還可以看到其它工具條。以下逐條解釋各屬性:<br>
Nseries需比較的數(shù)據(jù)項(xiàng)的個(gè)數(shù)。<br>
Nvalues每個(gè)數(shù)據(jù)項(xiàng)中的子項(xiàng)目數(shù)。<br>
TitleDlg圖表的標(biāo)題設(shè)置對話框。<br>
AdmDlg圖表構(gòu)件繪圖區(qū)上下左右邊緣處注解設(shè)置對話框。<br>
FontDlg注解文字字體設(shè)置。<br>
BorderStyle圖表構(gòu)件的邊框風(fēng)格。<br>
Height、Width、Top、Left這四項(xiàng)設(shè)置圖表構(gòu)件在窗體中的位置及大小。<br>
BottomGap、TopGap、LeftGap、RightGap這四項(xiàng)設(shè)置圖表構(gòu)件繪圖區(qū)的位置及大小。<br>
ChartType、pThpe、Style這三項(xiàng)設(shè)置圖表構(gòu)件及繪圖區(qū)的類型與風(fēng)格。<br>
Chart3D用以設(shè)置是否以三維形式顯示數(shù)據(jù)。<br>
ViewRot3D設(shè)置觀察三維圖示的視角。<br>
WallWidth設(shè)置三維圖示中X、Y、Z三壁的厚度。<br>
LinebkColor、LineColor、LineStyle、LineWidth設(shè)置線條的顏色和風(fēng)格。<br>
PointType設(shè)置數(shù)據(jù)點(diǎn)的形狀、類型。<br>
RGB3DBK、RGB2DBK、RGBBK、RGBBarHorz設(shè)置2/3維圖示中背景色。<br>
Cursor設(shè)置繪圖區(qū)光標(biāo)形狀。<br>
Decimals設(shè)置圖表中數(shù)據(jù)顯示的小數(shù)位數(shù)。<br>
Stacked設(shè)置圖表中數(shù)據(jù)的歸一化方式。<br>
Grid、VertGridGap設(shè)置坐標(biāo)系的背景網(wǎng)格線。<br>
在制作同時(shí)比較多組數(shù)據(jù)的圖表時(shí),還需要設(shè)置以下屬性:。<br>
FixedGap每個(gè)數(shù)據(jù)項(xiàng)之間間隔。<br>
ThisPoint數(shù)據(jù)項(xiàng)的次序。<br>
ThisSerie每個(gè)數(shù)據(jù)項(xiàng)中子數(shù)據(jù)項(xiàng)的次序。<br>
ThisBkColor、ThisColor顏色設(shè)置。<br>
余下的Visible、Hint、HelpContext、Name、Tag等屬性與其它構(gòu)件相同,不再贅述。下面對CustTool、ToolBar、PalleteBar、PatternBar幾個(gè)關(guān)于圖表中工具條設(shè)置的屬性作簡單介紹。PalleteBar設(shè)為True時(shí)生成的圖表帶有顏色設(shè)置工具條,即可在瀏覽圖表時(shí)改變數(shù)據(jù)項(xiàng)顏色以適應(yīng)不同視覺需求。<br>
PatternBar設(shè)為True時(shí)生成的圖表帶有圖案設(shè)置工具條,作用同上。<br>
ToolBar設(shè)為True時(shí)生成的圖表帶有一個(gè)功能<br>
強(qiáng)大的工具條,其上加速鍵能完成的功能有:從數(shù)據(jù)文件讀入比較數(shù)據(jù)、輸出數(shù)據(jù)到數(shù)據(jù)文件、圖表打印、在直方圖/餅圖/離散點(diǎn)圖/曲線擬合圖之間切換、2/3維切換、改變視角、以表格方式瀏覽、修改數(shù)據(jù)等等。豐富的功能節(jié)省了程序員的開發(fā)時(shí)間,使用極為方便(工具條上每個(gè)加速鍵都有Hint提示)。<br>
CustTool在該屬性里可以設(shè)置需要使用的功能項(xiàng),Delphi自動(dòng)去除未選取的加速鍵。<br>
到目前為止,讀者對ChartFx構(gòu)件的屬性已有了一定的了解,可以設(shè)計(jì)較為復(fù)雜的圖表了,但還不能真正制作實(shí)用的圖表,因?yàn)槲覀冞€未介紹如何初始化數(shù)據(jù)。同時(shí)讀者可能還發(fā)現(xiàn)了這么個(gè)問題:當(dāng)數(shù)據(jù)較多以致構(gòu)件空間容納不下怎么辦?我們舉一實(shí)例來說明這兩個(gè)問題。假定某校要比較全校40個(gè)班級某一學(xué)期班平均成績,40個(gè)班的平均分和名稱(實(shí)驗(yàn)班、初一(2)等)分別存放在兩個(gè)數(shù)組Data[39]、Class
Name[39]中。在窗體FormCreat事件中加入以下代碼:<br>
For i:=0 to 39 Do Begin<br>
ChartFx 1.OpenData[COD-VALUES]:=makelong(1,40);<br>
With ChartFx1 Do Begin<br>
ThisSerie:=0;<br>
Value[i]:=Data[i];<br>
Legend[i]:=ClassName[i];<br>
CloseData[COD-VALUES]:=0;<br>
End;<br>
End;<br>
按F9執(zhí)行,我們發(fā)現(xiàn)圖表并未顯示全部40個(gè)數(shù)據(jù),而是在繪圖區(qū)下方出現(xiàn)了滾行條,滾動(dòng)此條就可以瀏覽全部數(shù)據(jù),Delphi輕松地解決了這個(gè)問題。在繪圖區(qū)的右方則出現(xiàn)了一個(gè)注解框,顯示每個(gè)數(shù)據(jù)項(xiàng)編號所對應(yīng)的班級名稱。<br>
若設(shè)置ChartType為Bar,則每個(gè)數(shù)據(jù)項(xiàng)都用一個(gè)有一定高度(此高度由初始化數(shù)據(jù)及歸一化方式?jīng)Q定)的彩色矩形條來表示。用鼠標(biāo)雙擊矩形條即顯示對應(yīng)數(shù)據(jù),顯示方式由DblClkDlg和RigClkDlg設(shè)定。<br>
現(xiàn)在,整個(gè)圖表的建立已全部完成。只需稍動(dòng)腦筋,我們即可將前述內(nèi)容集成到一個(gè)函數(shù)體DLL中,從而可以建立一個(gè)通用的圖表程序。調(diào)用時(shí)只需將數(shù)據(jù)傳入即可。</span>
<hr color="#EE9B73" size="1" width="94%">
</TD>
</TR>
</table>
</BODY></HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -