原創(chuàng)|其它|編輯:郝浩|2012-09-27 10:25:03.000|閱讀 1363 次
概述:詳細(xì)介紹了Teechart中的數(shù)據(jù)庫圖表,主要包括如何在在設(shè)計(jì)時(shí)連接到數(shù)據(jù)源,在運(yùn)行時(shí)連接到Database數(shù)據(jù)庫,單記錄,分組數(shù)據(jù)總結(jié),數(shù)據(jù)庫圖表特定事件等等,并附有代碼以及圖片詳細(xì)說明。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
可以在設(shè)計(jì)時(shí)使用圖表編輯器或在運(yùn)行時(shí)用很少幾行代碼為數(shù)據(jù)庫連接一個(gè)TeeChart控件。你應(yīng)該使用TDBChart組件,顧名思義,這個(gè)TeeChart組件支持?jǐn)?shù)據(jù)訪問。TDBChart安裝在Data Controls數(shù)據(jù)控制部分的Component Palette組件面板。TDBChart擁有所有TChart屬性和方法,關(guān)鍵的區(qū)別在于,它還包括對Borland數(shù)據(jù)庫引擎的訪問,因此擴(kuò)大了該組件項(xiàng)目編譯的規(guī)模。因?yàn)檫@個(gè)原因,我們建議您使用TeeChart組件,除非你想直接連接到數(shù)據(jù)源。
TeeChart連接到包括TTable,TQuery和TClientDataset在內(nèi)的所有Borland TData組件。當(dāng)連接到Tables 或 Queries時(shí),沒有必要使用TDataset組件,因?yàn)門eeChart可以直接連接。
可以使用圖表編輯器將任何Series連接到表或查詢。每個(gè)Series可以連接到在相同或不同的數(shù)據(jù)庫中的相同或不同的表或查詢。
因你不受限于單一數(shù)據(jù)庫或者單一的表或查詢,所以這種設(shè)計(jì)將使連接到數(shù)據(jù)庫的圖表更具有靈活性。在設(shè)計(jì)時(shí)也可以進(jìn)行數(shù)據(jù)檢索,允許您在開發(fā)過程中看到實(shí)際的數(shù)據(jù)。
下面的步驟是假定您已經(jīng)將一個(gè)TTable,TQuery或TClientDataset放入表單中。對于這個(gè)例子你可以將TTable連接到TeeChart Pro Database數(shù)據(jù)庫,并在安裝TeeChart Pro和選擇Employee Table時(shí),作為一個(gè)ODBC v3 DSN安裝。
1、 在一個(gè)窗體中放置一個(gè)TDBChart控件。
2、 雙擊TDBChart控件顯示Chart Editor圖表編輯器。
3、 添加一個(gè)Series到Chart圖表控件(例如Bar Series)。
4、 點(diǎn)擊 "Series" 選項(xiàng)卡和 "DataSource" 選項(xiàng)卡。
5、 點(diǎn)擊組合框,并選擇"Dataset"。
會(huì)出現(xiàn)如下所示的界面:
6、 選擇"Dataset..."下拉列表框顯示可用數(shù)據(jù)源列表。
通過從下拉列表框選擇一個(gè)項(xiàng)目,你可以將Series連接到指定的Table或Query。
7、 在這個(gè)例子中,我們連接Table1到“TeeChart Pro Database”和“Employee”表,如上圖所示。
定義Table或Query中的檢索字段,并添加到Series。這是通過為每個(gè)Series部分選擇適當(dāng)?shù)淖侄危儆蓤D表編輯器完成。
8、 下面的圖片,是由示例所選擇的Fields字段顯示的Chart editor DataSource標(biāo)簽。
每個(gè)Series都有一個(gè) "Label" 字段(這應(yīng)該是“String”或“Char“ 類型),和一個(gè)數(shù)值字段(對于Bar Series的"Bar" 字段),它應(yīng)該是整數(shù),浮動(dòng)或日期-時(shí)間字段類型。
在這個(gè)例子中,我們?yōu)镾eries標(biāo)簽選擇了"Employee"表中的"LASTNAME"字段,為Bar點(diǎn)值選擇"SALARY"數(shù)字字段。
上面圖片中的DataSet組合框顯示了你所創(chuàng)建的可用的表或查詢。你總是可以在這個(gè)對話框中,選擇一個(gè)不同的數(shù)據(jù)集,或者通過點(diǎn)擊"Edit..."按鈕進(jìn)行編輯。
現(xiàn)在我們已經(jīng)分配了適當(dāng)?shù)淖侄危瑏砜纯吹玫降慕Y(jié)果。
9、 點(diǎn)擊"Close"按鈕來關(guān)閉這個(gè)Chart圖表編輯器并返回到編程環(huán)境。
此時(shí),TChart控件將試著打開選擇的Datasource database Table或者Query,并將開始檢索記錄,并為選擇的Series賦值。
在我們的示例中,您將在設(shè)計(jì)時(shí)看到以下圖表:
如果您運(yùn)行這個(gè)項(xiàng)目,圖表將從Datasource數(shù)據(jù)源檢索所有記錄,并將值添加到Series。您將在項(xiàng)目運(yùn)行前看到和運(yùn)行時(shí)相同的圖表。
10、 運(yùn)行該應(yīng)用程序。
你可以在TeeChart demo中的"Database Chart"節(jié)點(diǎn)下找到一個(gè)示例。
上述設(shè)計(jì)時(shí)的步驟可以以編程的方式通過幾行代碼再現(xiàn)。這給了你在數(shù)據(jù)庫操作方面更多的自由和控制。
在一個(gè)新項(xiàng)目和一個(gè)新Form表單中執(zhí)行上面提到的前三個(gè)步驟。
每個(gè)Series都有DataSource屬性,它確定了數(shù)據(jù)庫值(Table或Query)的原點(diǎn),"YValues.ValueSource"和"LabelsSource"屬性來指定我們所要標(biāo)繪的字段。
LabelsSource和YValues.ValueSource屬性的語法是:
Series1.YValues.ValueSource := "SALARY";
Series1.XLabelsSource := "LASTNAME";
Series DataSource的語法是:
Series1.DataSource := Table1;
//or
Series1.DataSource := Query1;
建議您以上述的順序設(shè)置屬性。首先設(shè)置XLabelsSource和YValues.ValueSource,然后設(shè)置DataSource屬性。
如果數(shù)據(jù)庫值被改變,你想“刷新”連接和再一次進(jìn)行數(shù)值檢索,你應(yīng)該這樣做:
Series1.CheckDataSource;
CheckDataSource的方法將迫使Series再次檢索所有記錄。
所有Series也有"XValues.ValueSource"屬性。這個(gè)屬性只用于XY圖表(當(dāng)每個(gè)點(diǎn)都有一個(gè)X坐標(biāo))。
如果TeeChart不能找到數(shù)據(jù)源或不能打開指定的Table或SQL查詢,就將會(huì)拋出一個(gè)error。記住要設(shè)置您的Datasource數(shù)據(jù)源為'Active'。
單記錄
Single Record數(shù)據(jù)圖表允許從一個(gè)數(shù)據(jù)源記錄中水平的進(jìn)行數(shù)據(jù)檢索。從TeeChart Editor Datasource下拉列表框中選擇'Single Record'選項(xiàng)。
例如:
上面的定義采用了TeeChart的示例Stock圖表的第一個(gè)記錄,為Open, High, Low和Close值劃分一個(gè)Series上的不同點(diǎn)。
通過TeeChart的數(shù)據(jù)集連接檢索的數(shù)據(jù)連接可能是由創(chuàng)建概要所選字段的數(shù)據(jù)集中不同的字段分組的。從TeeChart Editor Datasource下拉列表框中選擇'Summary'。
例如:
上述選擇劃分了Delphi / c++ Builder的'Orders'表的'AmountPaid'字段的Bar Series,由Customer客戶編號”CustNo”進(jìn)行分組。
如果數(shù)據(jù)集包含一個(gè)datetime字段你可能從第一個(gè)'Group by'下拉列表框中選擇分組標(biāo)準(zhǔn)作為一個(gè)DateTimeStep。以下是使用'Saledate'進(jìn)行分組的Quarter year三個(gè)月平均AmountPaid”。
例如:
代碼如下:
with Series1 do
begin
DataSource:=Table1;
YValues.ValueSource:='#AVG#AmountPaid';
XLabelsSource:='#QUARTER#SaleDate';
end;
TChart的控件提供了一個(gè)事件,每次檢索記錄并將其添加到一個(gè)Series就會(huì)被調(diào)用。這個(gè)事件是“OnProcessRecord”,語法是:
procedure TForm1.DBChart1ProcessRecord(Sender: TCustomDBChart;
DataSet: TDataSet);
begin
//
end;
您可以使用此事件來生成一個(gè)沉默終止用以停止檢索數(shù)據(jù)。例如在TeeChart demo演示"Database Chart"節(jié)點(diǎn)。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)