蔣祝平
摘要:闡述DevExpress VCL控件在C++ Builder下的安裝、編譯及使用。通過(guò)采用該控件中強(qiáng)大的Grid組件,實(shí)現(xiàn)數(shù)據(jù)庫(kù)開發(fā)中復(fù)雜表單的設(shè)計(jì),采用Ribbon組件,實(shí)現(xiàn)最新的Office Ribbon界面,增強(qiáng)開發(fā)軟件的用戶操作性。
關(guān)鍵詞:C++ Builder;DevExpress;Ribbon;Grid
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)16-3782-07
在Windows平臺(tái)Win32軟件開發(fā)領(lǐng)域,由于Microsoft的大力推廣及不斷更新,Visual Studio系列可以說(shuō)是目前最為流行的開發(fā)平臺(tái)。當(dāng)然,任何領(lǐng)域都不可能只有一家獨(dú)大,在軟件開發(fā)工具的進(jìn)化歷史長(zhǎng)河中,有家公司一直與Microsoft競(jìng)爭(zhēng),那就是Borland軟件公司。但隨著Microsoft在Visual Studio系列上的逐漸發(fā)力,Borland的競(jìng)爭(zhēng)逐漸處于下風(fēng),最終將開發(fā)工具業(yè)務(wù)出售給現(xiàn)在的Embarcadero,Embarcadero將Delphi和C++ Builder等開發(fā)工具放在一起稱為RAD Studio。近幾年,雖然Embarcadero不斷推陳出新,幾乎每年升級(jí)RAD Studio,無(wú)奈市場(chǎng)占有率不斷下降,但這并不能否定目前最新版本的RAD Studio XE6是非常優(yōu)秀的開發(fā)工具。
筆者從Delphi 5.0時(shí)代開始,一直使用C++ Builder 作為主要開發(fā)工具,現(xiàn)在使用的版本是C++ Builder 2010。RAD Studio從2009版本開始,幾乎每年一升級(jí),經(jīng)歷了2010、XE、XE2、XE3、XE4,直到目前最新的XE6,最新版本支持原生Android移動(dòng)平臺(tái)開發(fā),有很大發(fā)展前景。由于目前我的工作基本上只用到Windows平臺(tái),所以一直使用的是2010版本。
在Delphi和C++ Builder開發(fā)領(lǐng)域,有一款重量級(jí)的開發(fā)控件,那就是DevExpress公司開發(fā)的用于Delphi與C++ Builder的DevExpress VCL Controls。這套控件功能十分強(qiáng)大,涵蓋了界面設(shè)計(jì)、數(shù)據(jù)表單等方方面面。由于功能的強(qiáng)大,也造成這套控件的使用也非常復(fù)雜,該文就從這套控件在C++ Builder中的安裝開始,對(duì)它在開發(fā)使用過(guò)程中的一些技巧及問(wèn)題做一闡述。
1 DevExpress VCL Controls的編譯與安裝
DevExpress VCL Controls的版本更新很快,每當(dāng)RAD Studio新版本發(fā)布,DevExpress都會(huì)及時(shí)跟進(jìn),使自己的控件能夠兼容最新的Delphi和C++ Builder。目前官網(wǎng)上最新的版本是13.2,支持C++ Builder 2007至最新的C++ Builder XE6,而我們能夠從網(wǎng)上獲取到的最新版本為13.1.4。該控件的很多版本分為多種安裝格式,最完整的是第三方制作的帶源碼、實(shí)例及幫助的完整版安裝程序,只需要一步步安裝即可,非常方便;但另外一種是只有源代碼、實(shí)例,而沒(méi)有安裝程序。這種只有源代碼的包安裝起來(lái)很復(fù)雜,因?yàn)檎麄€(gè)DevExpress VCL包含超過(guò)180個(gè)控件,將近30個(gè)package,需要在C++ Builder中將每個(gè)package的源代碼編譯安裝,且有一定的安裝順序。這個(gè)編譯安裝過(guò)程相當(dāng)繁瑣,造成每次需要安裝DevExpress VCL的過(guò)程經(jīng)常出現(xiàn)問(wèn)題。
筆者依據(jù)近幾年開發(fā)的經(jīng)驗(yàn),參考Delphi的dcc32編譯器的詳細(xì)使用幫助,采用命令行編譯的方式,將每個(gè)package用dcc32進(jìn)行命令行編譯,代碼格式如下:
dcc32.exe "..\..\ExpressCore Library\Packages\dxCoreRS14.dpk" -JL -B -U"..\..\ExpressCore Library\Sources;..\..\Library\RS14" -R"..\..\ExpressCore Library\Sources" -N"." -LE"." -LN"." -NH"." -NO"."
這條編譯命令中所用到的參數(shù)說(shuō)明:
-JL = 生成C++需要的 .lib,.bpi以及所有的.hpp文件
-B = 編譯所有單元文件
-U
-R
-LE
-LN
-NH
-NO
其中所有的輸出文件指定的目錄都是“.”,表示該批處理文件運(yùn)行時(shí)所在的目錄,方便最后C++ Builder進(jìn)行開發(fā)時(shí),搜索需要的各種文件。
這是單個(gè)dpk文件的編譯命令,將所有的dpk文件編譯命令生成一個(gè)批處理,就可以通過(guò)運(yùn)行該批處理文件,一次性將所有的dpk文件編譯完成。在批處理中,由于各個(gè)dpk之間的相互依賴關(guān)系,有一定的先后順序,經(jīng)過(guò)測(cè)試,確定了整個(gè)DevExpress VCL控件編譯的順序,保證所有控件都能正常編譯,生成的批處理文件如圖1所示:
將下載獲取的DevExpress VCL控件源碼包解壓,復(fù)制到自己想要存放的目錄,筆者參考自動(dòng)安裝程序的目錄,存放到Program Files(x86)\DevExpress VCL,并且在該目錄下創(chuàng)建Library\RS14,用于RAD Studio 2010版本的編譯后的文件存放,這樣方便識(shí)別,如果想要編譯其他版本,就創(chuàng)建RS15等等其他目錄。將我自己創(chuàng)建的批處理文件manuinstallRS14.bat復(fù)制到RS14,以管理員身份運(yùn)行command命令,執(zhí)行該批處理,稍等片刻,所有的控件就編譯好了,文件都生成在RS14目錄。
運(yùn)行C++ Builder 2010,進(jìn)入Install Packages,添加編譯生成的所有以dcl開頭的bpl控件,這是設(shè)計(jì)時(shí)控件,這樣DevExpress VCL就全部安裝完成,可以在C++ Builder中看到這些控件。后面還要在Options中設(shè)置軟件開發(fā)中使用這些控件的編譯路徑,這個(gè)一般程序員都應(yīng)該清楚,就不多說(shuō)了。
2 DevExpress VCL中Ribbon控件的使用
DevExpress VCL這套控件包中有超過(guò)180個(gè)控件,幾乎涵蓋了軟件開發(fā)過(guò)程中界面設(shè)計(jì)的方方面面,可以說(shuō),有了這套控件,基本上可以不需要安裝其他第三方控件。其中的Ribbon控件就是用于開發(fā)Ribbon界面的有力工具,Microsoft自從2007年發(fā)布Office2007后,其標(biāo)志性的Office Ribbon界面目前已成為流行軟件開發(fā)的標(biāo)準(zhǔn)UI,現(xiàn)在許多軟件的操作界面都采用Ribbon,包括現(xiàn)在最新的Win8/Win8.1系統(tǒng),很多地方都已經(jīng)集成Ribbon操作。RAD Studio從2009版本開始也自帶了Ribbon控件,但是自帶的這個(gè)控件使用起來(lái)很麻煩,而且功能不強(qiáng),比起DevExpress VCL中的Ribbon控件有很大的差距。下面以筆者自己寫的幾個(gè)軟件為例,簡(jiǎn)單介紹一下Ribbon控件的開發(fā)使用。
Ribbon控件位于ExpressBars分類中,名稱顯示為TdxRibbon,TdxRibbon要與TdxBarManager配合使用,先將一個(gè)TdxBarManager放置于Form上,然后放置TdxRibbon,TdxRibbon會(huì)自動(dòng)與TdxBarManager關(guān)聯(lián),缺省情況下,Ribbon欄只有一個(gè)Tab,且是Office 2007 Ribbon的風(fēng)格,一般與Ribbon相配合的還有一個(gè)TdxRibbonStatusBar,也放在Form上即可。很簡(jiǎn)單的三步,一個(gè)Ribbon界面的Form即設(shè)計(jì)好了。在缺省的Tab上面點(diǎn)擊右鍵,就會(huì)彈出右鍵菜單,可以增加或者刪除Tab,可以增加Group。每個(gè)Tab就是Ribbon欄上一個(gè)選項(xiàng)卡,每個(gè)選項(xiàng)卡下面可以增加多個(gè)Group,在Group中創(chuàng)建各種工具按鈕。如下圖所示,就是一個(gè)簡(jiǎn)單的Ribbon空界面。在Ribbon控件的屬性設(shè)置中,有個(gè)Style屬性,可以設(shè)置Office 2007、2010、2013這三種風(fēng)格。2007與2010的設(shè)置還不一樣,我們選擇2010即可。在現(xiàn)在這個(gè)階段,Ribbon界面左邊的那個(gè)File菜單還沒(méi)有出現(xiàn),對(duì)于2010的風(fēng)格,我們需要放置TdxRibbonBackstageView控件,將TdxRibbon屬性中ApplicationButton下Menu關(guān)聯(lián)至TdxRibbonBackstageView,Text屬性中輸入菜單顯示的文字,比如File,同時(shí),在TdxBarManager中創(chuàng)建一個(gè)ToolBar,將TdxRibbon的QuickAccessToolbar屬性下的Toobar屬性關(guān)聯(lián)至這個(gè)新創(chuàng)建的Toolbar,這樣,Ribbon的菜單就出來(lái)了。運(yùn)行一下這個(gè)程序,就可以看到如圖2的界面了。
這時(shí)候,你會(huì)發(fā)現(xiàn)一個(gè)小小的問(wèn)題,那就是Windows系統(tǒng)自己的標(biāo)題欄還是存在的,而真正的Ribbon界面程序,是沒(méi)有這個(gè)標(biāo)題欄的。這個(gè)問(wèn)題筆者是參考Devexpress提供的demo解決的,首先將TdxRibbon的SurpportNonClientDrawing屬性設(shè)為true,然后修改該Form創(chuàng)建的基類。即將BCB缺省創(chuàng)建的基類class TForm1 : public TForm,修改為class TForm1 : public TdxCustomRibbonForm,重新編譯運(yùn)行,是不是成功了?
由于Ribbon欄上面眾多的Group,每個(gè)Group中又有眾多的按鈕,所以,需要我們?cè)赥dxBarManaager控件中詳細(xì)分類設(shè)置好每個(gè)Tab,每個(gè)Group中對(duì)應(yīng)的按鈕,這是個(gè)細(xì)活,不能著急。以上就是TdxRibbon控件的關(guān)鍵幾個(gè)問(wèn)題,注意這幾個(gè)問(wèn)題,整個(gè)Ribbon界面就搭建好了,其他的Tab欄上面各種按鈕控件一個(gè)個(gè)試用一下即可掌握使用方法。
3 DevExpress VCL中TcxGrid控件的使用
用到DevExpress VCL的控件,我們就不得不提到其中的TcxGrid控件,筆者最初就是從使用這個(gè)強(qiáng)大的Grid表格控件開始的。
3.1 TcxGrid基礎(chǔ)應(yīng)用
使用TcxGrid控件創(chuàng)建一個(gè)表格應(yīng)用很簡(jiǎn)單,首先設(shè)置好連接數(shù)據(jù)庫(kù)的各種控件,根據(jù)連接方式的不同,有不同的設(shè)置方法,比如,筆者使用的是ADO連接SQL Server,這也是數(shù)據(jù)庫(kù)開發(fā)常用的一種方式,設(shè)置好TADOQuery和TDataSource控件,將TcxGrid放置在Form上,TcxGrid控件中有兩個(gè)概念需要理清:Level和View。Level相當(dāng)于TcxGrid自帶的PageControl控件,每個(gè)Level下鏈接一個(gè)View,這個(gè)View就是具體的表格。圖3就是基礎(chǔ)的TcxGrid形態(tài)。
3.2 TcxGrid分組統(tǒng)計(jì)功能
TcxGrid自帶很多強(qiáng)大的功能,比如匯總、分組查詢,可以得到強(qiáng)大的統(tǒng)計(jì)功能。圖4顯示的是以“發(fā)貨日期”為一級(jí)分組,“市縣”為二級(jí)分組,這樣就能顯示某一天中,某個(gè)縣詳細(xì)的學(xué)校清單,縣一級(jí)有合計(jì),當(dāng)天那一級(jí)也有合計(jì),非常清楚明晰。
4 結(jié)束語(yǔ)
采用Devexpress的控件解決方案,極大地提高了軟件開發(fā)的效率,降低系統(tǒng)維護(hù)的復(fù)雜性,也同時(shí)降低了投資成本和后期管理成本,具有很高的實(shí)用性。該文主要針對(duì)支持Delphi與C++ Builder的VCL控件進(jìn)行介紹,Devexpress的控件,尤其是TcxGrid還有深入的開發(fā)方法,需要更深層次的使用與挖掘。
參考文獻(xiàn):
[1] 陳寬達(dá). C++ Builder深度歷險(xiǎn)[M]. 上海:華中科技大學(xué)出版社,2002.
[2] Satya Sai Kolachina.C++Builder6 Developers Guide[M]. Wordware Publishing, Inc,2003.endprint
運(yùn)行C++ Builder 2010,進(jìn)入Install Packages,添加編譯生成的所有以dcl開頭的bpl控件,這是設(shè)計(jì)時(shí)控件,這樣DevExpress VCL就全部安裝完成,可以在C++ Builder中看到這些控件。后面還要在Options中設(shè)置軟件開發(fā)中使用這些控件的編譯路徑,這個(gè)一般程序員都應(yīng)該清楚,就不多說(shuō)了。
2 DevExpress VCL中Ribbon控件的使用
DevExpress VCL這套控件包中有超過(guò)180個(gè)控件,幾乎涵蓋了軟件開發(fā)過(guò)程中界面設(shè)計(jì)的方方面面,可以說(shuō),有了這套控件,基本上可以不需要安裝其他第三方控件。其中的Ribbon控件就是用于開發(fā)Ribbon界面的有力工具,Microsoft自從2007年發(fā)布Office2007后,其標(biāo)志性的Office Ribbon界面目前已成為流行軟件開發(fā)的標(biāo)準(zhǔn)UI,現(xiàn)在許多軟件的操作界面都采用Ribbon,包括現(xiàn)在最新的Win8/Win8.1系統(tǒng),很多地方都已經(jīng)集成Ribbon操作。RAD Studio從2009版本開始也自帶了Ribbon控件,但是自帶的這個(gè)控件使用起來(lái)很麻煩,而且功能不強(qiáng),比起DevExpress VCL中的Ribbon控件有很大的差距。下面以筆者自己寫的幾個(gè)軟件為例,簡(jiǎn)單介紹一下Ribbon控件的開發(fā)使用。
Ribbon控件位于ExpressBars分類中,名稱顯示為TdxRibbon,TdxRibbon要與TdxBarManager配合使用,先將一個(gè)TdxBarManager放置于Form上,然后放置TdxRibbon,TdxRibbon會(huì)自動(dòng)與TdxBarManager關(guān)聯(lián),缺省情況下,Ribbon欄只有一個(gè)Tab,且是Office 2007 Ribbon的風(fēng)格,一般與Ribbon相配合的還有一個(gè)TdxRibbonStatusBar,也放在Form上即可。很簡(jiǎn)單的三步,一個(gè)Ribbon界面的Form即設(shè)計(jì)好了。在缺省的Tab上面點(diǎn)擊右鍵,就會(huì)彈出右鍵菜單,可以增加或者刪除Tab,可以增加Group。每個(gè)Tab就是Ribbon欄上一個(gè)選項(xiàng)卡,每個(gè)選項(xiàng)卡下面可以增加多個(gè)Group,在Group中創(chuàng)建各種工具按鈕。如下圖所示,就是一個(gè)簡(jiǎn)單的Ribbon空界面。在Ribbon控件的屬性設(shè)置中,有個(gè)Style屬性,可以設(shè)置Office 2007、2010、2013這三種風(fēng)格。2007與2010的設(shè)置還不一樣,我們選擇2010即可。在現(xiàn)在這個(gè)階段,Ribbon界面左邊的那個(gè)File菜單還沒(méi)有出現(xiàn),對(duì)于2010的風(fēng)格,我們需要放置TdxRibbonBackstageView控件,將TdxRibbon屬性中ApplicationButton下Menu關(guān)聯(lián)至TdxRibbonBackstageView,Text屬性中輸入菜單顯示的文字,比如File,同時(shí),在TdxBarManager中創(chuàng)建一個(gè)ToolBar,將TdxRibbon的QuickAccessToolbar屬性下的Toobar屬性關(guān)聯(lián)至這個(gè)新創(chuàng)建的Toolbar,這樣,Ribbon的菜單就出來(lái)了。運(yùn)行一下這個(gè)程序,就可以看到如圖2的界面了。
這時(shí)候,你會(huì)發(fā)現(xiàn)一個(gè)小小的問(wèn)題,那就是Windows系統(tǒng)自己的標(biāo)題欄還是存在的,而真正的Ribbon界面程序,是沒(méi)有這個(gè)標(biāo)題欄的。這個(gè)問(wèn)題筆者是參考Devexpress提供的demo解決的,首先將TdxRibbon的SurpportNonClientDrawing屬性設(shè)為true,然后修改該Form創(chuàng)建的基類。即將BCB缺省創(chuàng)建的基類class TForm1 : public TForm,修改為class TForm1 : public TdxCustomRibbonForm,重新編譯運(yùn)行,是不是成功了?
由于Ribbon欄上面眾多的Group,每個(gè)Group中又有眾多的按鈕,所以,需要我們?cè)赥dxBarManaager控件中詳細(xì)分類設(shè)置好每個(gè)Tab,每個(gè)Group中對(duì)應(yīng)的按鈕,這是個(gè)細(xì)活,不能著急。以上就是TdxRibbon控件的關(guān)鍵幾個(gè)問(wèn)題,注意這幾個(gè)問(wèn)題,整個(gè)Ribbon界面就搭建好了,其他的Tab欄上面各種按鈕控件一個(gè)個(gè)試用一下即可掌握使用方法。
3 DevExpress VCL中TcxGrid控件的使用
用到DevExpress VCL的控件,我們就不得不提到其中的TcxGrid控件,筆者最初就是從使用這個(gè)強(qiáng)大的Grid表格控件開始的。
3.1 TcxGrid基礎(chǔ)應(yīng)用
使用TcxGrid控件創(chuàng)建一個(gè)表格應(yīng)用很簡(jiǎn)單,首先設(shè)置好連接數(shù)據(jù)庫(kù)的各種控件,根據(jù)連接方式的不同,有不同的設(shè)置方法,比如,筆者使用的是ADO連接SQL Server,這也是數(shù)據(jù)庫(kù)開發(fā)常用的一種方式,設(shè)置好TADOQuery和TDataSource控件,將TcxGrid放置在Form上,TcxGrid控件中有兩個(gè)概念需要理清:Level和View。Level相當(dāng)于TcxGrid自帶的PageControl控件,每個(gè)Level下鏈接一個(gè)View,這個(gè)View就是具體的表格。圖3就是基礎(chǔ)的TcxGrid形態(tài)。
3.2 TcxGrid分組統(tǒng)計(jì)功能
TcxGrid自帶很多強(qiáng)大的功能,比如匯總、分組查詢,可以得到強(qiáng)大的統(tǒng)計(jì)功能。圖4顯示的是以“發(fā)貨日期”為一級(jí)分組,“市縣”為二級(jí)分組,這樣就能顯示某一天中,某個(gè)縣詳細(xì)的學(xué)校清單,縣一級(jí)有合計(jì),當(dāng)天那一級(jí)也有合計(jì),非常清楚明晰。
4 結(jié)束語(yǔ)
采用Devexpress的控件解決方案,極大地提高了軟件開發(fā)的效率,降低系統(tǒng)維護(hù)的復(fù)雜性,也同時(shí)降低了投資成本和后期管理成本,具有很高的實(shí)用性。該文主要針對(duì)支持Delphi與C++ Builder的VCL控件進(jìn)行介紹,Devexpress的控件,尤其是TcxGrid還有深入的開發(fā)方法,需要更深層次的使用與挖掘。
參考文獻(xiàn):
[1] 陳寬達(dá). C++ Builder深度歷險(xiǎn)[M]. 上海:華中科技大學(xué)出版社,2002.
[2] Satya Sai Kolachina.C++Builder6 Developers Guide[M]. Wordware Publishing, Inc,2003.endprint
運(yùn)行C++ Builder 2010,進(jìn)入Install Packages,添加編譯生成的所有以dcl開頭的bpl控件,這是設(shè)計(jì)時(shí)控件,這樣DevExpress VCL就全部安裝完成,可以在C++ Builder中看到這些控件。后面還要在Options中設(shè)置軟件開發(fā)中使用這些控件的編譯路徑,這個(gè)一般程序員都應(yīng)該清楚,就不多說(shuō)了。
2 DevExpress VCL中Ribbon控件的使用
DevExpress VCL這套控件包中有超過(guò)180個(gè)控件,幾乎涵蓋了軟件開發(fā)過(guò)程中界面設(shè)計(jì)的方方面面,可以說(shuō),有了這套控件,基本上可以不需要安裝其他第三方控件。其中的Ribbon控件就是用于開發(fā)Ribbon界面的有力工具,Microsoft自從2007年發(fā)布Office2007后,其標(biāo)志性的Office Ribbon界面目前已成為流行軟件開發(fā)的標(biāo)準(zhǔn)UI,現(xiàn)在許多軟件的操作界面都采用Ribbon,包括現(xiàn)在最新的Win8/Win8.1系統(tǒng),很多地方都已經(jīng)集成Ribbon操作。RAD Studio從2009版本開始也自帶了Ribbon控件,但是自帶的這個(gè)控件使用起來(lái)很麻煩,而且功能不強(qiáng),比起DevExpress VCL中的Ribbon控件有很大的差距。下面以筆者自己寫的幾個(gè)軟件為例,簡(jiǎn)單介紹一下Ribbon控件的開發(fā)使用。
Ribbon控件位于ExpressBars分類中,名稱顯示為TdxRibbon,TdxRibbon要與TdxBarManager配合使用,先將一個(gè)TdxBarManager放置于Form上,然后放置TdxRibbon,TdxRibbon會(huì)自動(dòng)與TdxBarManager關(guān)聯(lián),缺省情況下,Ribbon欄只有一個(gè)Tab,且是Office 2007 Ribbon的風(fēng)格,一般與Ribbon相配合的還有一個(gè)TdxRibbonStatusBar,也放在Form上即可。很簡(jiǎn)單的三步,一個(gè)Ribbon界面的Form即設(shè)計(jì)好了。在缺省的Tab上面點(diǎn)擊右鍵,就會(huì)彈出右鍵菜單,可以增加或者刪除Tab,可以增加Group。每個(gè)Tab就是Ribbon欄上一個(gè)選項(xiàng)卡,每個(gè)選項(xiàng)卡下面可以增加多個(gè)Group,在Group中創(chuàng)建各種工具按鈕。如下圖所示,就是一個(gè)簡(jiǎn)單的Ribbon空界面。在Ribbon控件的屬性設(shè)置中,有個(gè)Style屬性,可以設(shè)置Office 2007、2010、2013這三種風(fēng)格。2007與2010的設(shè)置還不一樣,我們選擇2010即可。在現(xiàn)在這個(gè)階段,Ribbon界面左邊的那個(gè)File菜單還沒(méi)有出現(xiàn),對(duì)于2010的風(fēng)格,我們需要放置TdxRibbonBackstageView控件,將TdxRibbon屬性中ApplicationButton下Menu關(guān)聯(lián)至TdxRibbonBackstageView,Text屬性中輸入菜單顯示的文字,比如File,同時(shí),在TdxBarManager中創(chuàng)建一個(gè)ToolBar,將TdxRibbon的QuickAccessToolbar屬性下的Toobar屬性關(guān)聯(lián)至這個(gè)新創(chuàng)建的Toolbar,這樣,Ribbon的菜單就出來(lái)了。運(yùn)行一下這個(gè)程序,就可以看到如圖2的界面了。
這時(shí)候,你會(huì)發(fā)現(xiàn)一個(gè)小小的問(wèn)題,那就是Windows系統(tǒng)自己的標(biāo)題欄還是存在的,而真正的Ribbon界面程序,是沒(méi)有這個(gè)標(biāo)題欄的。這個(gè)問(wèn)題筆者是參考Devexpress提供的demo解決的,首先將TdxRibbon的SurpportNonClientDrawing屬性設(shè)為true,然后修改該Form創(chuàng)建的基類。即將BCB缺省創(chuàng)建的基類class TForm1 : public TForm,修改為class TForm1 : public TdxCustomRibbonForm,重新編譯運(yùn)行,是不是成功了?
由于Ribbon欄上面眾多的Group,每個(gè)Group中又有眾多的按鈕,所以,需要我們?cè)赥dxBarManaager控件中詳細(xì)分類設(shè)置好每個(gè)Tab,每個(gè)Group中對(duì)應(yīng)的按鈕,這是個(gè)細(xì)活,不能著急。以上就是TdxRibbon控件的關(guān)鍵幾個(gè)問(wèn)題,注意這幾個(gè)問(wèn)題,整個(gè)Ribbon界面就搭建好了,其他的Tab欄上面各種按鈕控件一個(gè)個(gè)試用一下即可掌握使用方法。
3 DevExpress VCL中TcxGrid控件的使用
用到DevExpress VCL的控件,我們就不得不提到其中的TcxGrid控件,筆者最初就是從使用這個(gè)強(qiáng)大的Grid表格控件開始的。
3.1 TcxGrid基礎(chǔ)應(yīng)用
使用TcxGrid控件創(chuàng)建一個(gè)表格應(yīng)用很簡(jiǎn)單,首先設(shè)置好連接數(shù)據(jù)庫(kù)的各種控件,根據(jù)連接方式的不同,有不同的設(shè)置方法,比如,筆者使用的是ADO連接SQL Server,這也是數(shù)據(jù)庫(kù)開發(fā)常用的一種方式,設(shè)置好TADOQuery和TDataSource控件,將TcxGrid放置在Form上,TcxGrid控件中有兩個(gè)概念需要理清:Level和View。Level相當(dāng)于TcxGrid自帶的PageControl控件,每個(gè)Level下鏈接一個(gè)View,這個(gè)View就是具體的表格。圖3就是基礎(chǔ)的TcxGrid形態(tài)。
3.2 TcxGrid分組統(tǒng)計(jì)功能
TcxGrid自帶很多強(qiáng)大的功能,比如匯總、分組查詢,可以得到強(qiáng)大的統(tǒng)計(jì)功能。圖4顯示的是以“發(fā)貨日期”為一級(jí)分組,“市縣”為二級(jí)分組,這樣就能顯示某一天中,某個(gè)縣詳細(xì)的學(xué)校清單,縣一級(jí)有合計(jì),當(dāng)天那一級(jí)也有合計(jì),非常清楚明晰。
4 結(jié)束語(yǔ)
采用Devexpress的控件解決方案,極大地提高了軟件開發(fā)的效率,降低系統(tǒng)維護(hù)的復(fù)雜性,也同時(shí)降低了投資成本和后期管理成本,具有很高的實(shí)用性。該文主要針對(duì)支持Delphi與C++ Builder的VCL控件進(jìn)行介紹,Devexpress的控件,尤其是TcxGrid還有深入的開發(fā)方法,需要更深層次的使用與挖掘。
參考文獻(xiàn):
[1] 陳寬達(dá). C++ Builder深度歷險(xiǎn)[M]. 上海:華中科技大學(xué)出版社,2002.
[2] Satya Sai Kolachina.C++Builder6 Developers Guide[M]. Wordware Publishing, Inc,2003.endprint