Teechart圖表應(yīng)用技術(shù)詳解—第七章之交叉表圖表應(yīng)用
Steema公司和慧都科技針對(duì)中國(guó)市場(chǎng)聯(lián)合推出中文版TeeChart for .NET圖表控件,一共漢化2000個(gè)詞條(17000個(gè)單詞),漢化文檔35000個(gè)單詞,包括控件設(shè)計(jì)時(shí)與運(yùn)行時(shí)的界面漢化以及控件使用向?qū)臋n的漢化,總漢化90%以上!
TeeChart for .NET中文版讓您在使用和學(xué)習(xí)上沒(méi)有任何語(yǔ)言障礙,至少可以節(jié)省30%的開(kāi)發(fā)時(shí)間。TeeChart for .NET中文版具有易上手,使用方便,穩(wěn)定性好,性價(jià)比高,價(jià)格優(yōu)惠等優(yōu)勢(shì),并且針對(duì)Web應(yīng)用提供無(wú)限制服務(wù)器分發(fā)授權(quán)方式,非常有利于產(chǎn)品集成。
點(diǎn)擊下載TeeChart for .NET最新試用版
交叉表圖表應(yīng)用(Cross Tab Charts)
所謂交叉式圖表是指在程序運(yùn)行中可以對(duì)一個(gè)數(shù)據(jù)庫(kù)表中的兩個(gè)字段的值進(jìn)行分組求和或計(jì)數(shù),利用該功能使得圖表的顯示動(dòng)態(tài)交叉進(jìn)行。這里仍以Delphi7自帶的數(shù)據(jù)庫(kù)DBDEMOS的定單表Orders.db為例說(shuō)明。
實(shí)例組件屬性設(shè)置
實(shí)例設(shè)計(jì)階段的界面如下圖所示,組件屬性設(shè)置如下表所示。在這個(gè)例子中有兩個(gè)最關(guān)鍵問(wèn)題:一是如何設(shè)置交叉源;二是如何在系統(tǒng)運(yùn)行中動(dòng)態(tài)切換分組。前者可在程序設(shè)計(jì)階段實(shí)現(xiàn),也可在程序運(yùn)行階段實(shí)現(xiàn)。在設(shè)計(jì)階段可以通過(guò)圖表編輯器在Series選項(xiàng)卡的DataSourc選項(xiàng)卡中手動(dòng)設(shè)置,也可在對(duì)象觀察窗口Object Inspector中實(shí)現(xiàn)。
交叉式圖表演示有關(guān)屬性
組件 | 屬性 | 設(shè)定值 | 說(shuō)明 |
TDBChart |
Name |
DBChart1 |
圖表組件 |
TBarSeries |
Name |
Series1 |
|
Datasource | DBCrossTabSource1 | 序列的數(shù)據(jù)源是由組件DBCrossTabSource提供 | |
ParentChart | DBChart1 | 表示該序列屬于DBChart1組件 | |
TTable | Name |
Table1 |
數(shù)據(jù)庫(kù)別名,Delphi自帶數(shù)據(jù)庫(kù) |
DatabaseaName | DBDEMOS | ||
TableName | Orders.db | 有關(guān)定單信息的表 | |
TDataSource | Name | DataSource1 |
為DBNavigator提供數(shù)據(jù)源 為DBGrid提供數(shù)據(jù)源 |
DataSet | Table1 | ||
TDBGrid | Name | DBGrid1 | 用于顯示定單信息 |
DataSource |
DataSource1 |
||
TDBNavigator | Name | DBNavigator1 | 數(shù)據(jù)導(dǎo)航 |
DataSource | DataSource1 | ||
Series1 |
DataSource |
參看下圖 |
參看在圖表編輯器中設(shè)置 |
TDBCrossTableSource |
Name |
DBCrossTableSource1 |
|
DataSet |
Table1 |
交叉源 | |
Formula |
gfSum |
計(jì)算公式 | |
GroupField | Terms | 分組字段 | |
LabelField | ShipVIA | 序列顯示時(shí)橫軸標(biāo)簽 | |
ValueField | AmountPaid | 計(jì)算使用字段 | |
Series |
Series1 |
顯示計(jì)算結(jié)果的序列 | |
Active | false | 交叉源初始狀態(tài)為關(guān)閉 | |
TRadioGroup |
Name |
RadioGroup |
計(jì)算選擇(計(jì)數(shù)、求和) |
Item | 計(jì)數(shù),求和 | ||
ItemIndex |
1 | ||
TCheckBox |
Name |
CheckBox1 |
打開(kāi)數(shù)據(jù)庫(kù) |
Checked |
false |
||
TButton |
Name |
Nutton1 |
退出按鈕 |
Caption |
&E.退出 |
在圖表編輯器中設(shè)置
在程序設(shè)計(jì)階段,雙擊圖表組件DBChart1打開(kāi)圖表編輯器,然后選擇Series選項(xiàng)卡中的DataSource選項(xiàng)卡,按如下圖所示進(jìn)行設(shè)置。在這里,當(dāng)選擇組合框的CrossTab之后,就需要設(shè)置使用的數(shù)據(jù)集、計(jì)算種類(求和、計(jì)數(shù))、計(jì)算字段、分組字段和標(biāo)簽字段以及是否大小寫敏感、是否打開(kāi)表等。
在對(duì)象觀察窗口設(shè)置
實(shí)際中,當(dāng)在圖表編輯器中選擇CrossTab之后,系統(tǒng)就自動(dòng)在窗口放置了TDBCrossTabSource組件。在選中該組件后,在對(duì)象觀察窗口就可看到需要設(shè)置的一些屬性了如下圖所示。在這里要注意領(lǐng)會(huì)計(jì)算字段、分組字段、標(biāo)簽字段以及計(jì)算公式等屬性的含義??梢钥闯觯辛薚DBCrossTabSource組件后,不僅可以使用戶在設(shè)計(jì)階段改變分組、計(jì)算、標(biāo)簽字段的選擇,更為在程序運(yùn)行中動(dòng)態(tài)地改變分組、計(jì)算、標(biāo)簽字段和計(jì)算公式提供了方便。
編寫代碼
在CheckBox1組件的OnClick事件中根據(jù)選擇確定DBCrossTabSource1的打開(kāi)與關(guān)閉,且處于關(guān)閉狀態(tài)時(shí)計(jì)算公式選擇框和交換按鈕Button是不可用的,代碼如下:
procedure TForml.CheckBox1Click(Sender: TObject); begin DBCrossTabSource1.Active:=CheckBox1, Checked; RadioGroup1.Enabled:=CheckBox1.Checked; Button2.Enabled:=CheckBox1.Checked; end;
在RadioGroup1組件的OnClick事件中根據(jù)選擇確定分組計(jì)算公式,在公式改變后立即激活組件起到刷新數(shù)據(jù)的效果:
procedure TForm1.RadioGroup1Click(Sender:TObject); begin case RadioGroup1.ItemIndex of 0:DBCrossTabSource1.Formula:=gfCount; 1:DBCrossTabSource1.Formula:=gfSum; end; DBCrossTabSource1.ValueField:='AmountPaid'; DBCrOssTabSource1.Active:=TRUE;
在Button按鈕的OnClick事件中加入下列代碼,用于實(shí)時(shí)切換分組方式。由于采用按鈕進(jìn)行切換,所以需要設(shè)置一個(gè)邏輯變量進(jìn)行區(qū)分,代碼如下:
procedure TForm1.Button2Click( Sender:Tobject); begin if not bswap then begin DBCrossTabSource1.GroupField:='Terms'; DBCrossTabSource1.LabelField:='ShipVIA'; bswap:=not bswap; end else begin DBCrossTabSource1.GroupField:='ShipVIA'; DBCrossTabSource1.Labeleield:='Terms'; bswap not bswap; end; DBCrossTabSource1.ValueField :='AmountPaid'; DBCrossTabSource1.Active:=TRUE; end;
本例運(yùn)行階段的界面如圖1所示,圖2是求和計(jì)算分組字段交換后的效果圖。
圖1:
圖2:
相關(guān)資料推薦:
=====================================
現(xiàn)TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在線訂購(gòu),現(xiàn)在搶購(gòu)可立享優(yōu)惠!
關(guān)注慧聚IT微信公眾號(hào)???,了解產(chǎn)品的最新動(dòng)態(tài)及最新資訊。