表格控件總覽: </B><BR><BR> 在VB開發(fā)環(huán)境中,表格控件在界面開發(fā)元素中占有重要的地位。它不僅有外觀整潔、表達(dá)形式規(guī)范的優(yōu)點(diǎn),而且更重要的是它較高的信息表現(xiàn)率(就是相對(duì)于其他控件來說能夠表達(dá)更多的信息),隨著信息時(shí)代的到來,它的應(yīng)用將更加的廣泛。
那么在VB平臺(tái)下,如何操作這一功能強(qiáng)大的控件元素呢?事實(shí)上我們知道,VB平臺(tái)下面的表格控件是相當(dāng)豐富的,總結(jié)下來提供了4種類型:Microsoft Data Bound grid Control、Microsoft Datagrid Control、Microsoft Flexgrid Control、Microsoft Hierarchial Flexgrid Control. <BR>這四種表格各有其特點(diǎn)。
特點(diǎn)
1. Microsoft Data Bound grid Control
此控件主要用于數(shù)據(jù)綁定(可以不綁定,但是因?yàn)椴惶峁⿲?duì)單個(gè)cell的控制支持,所以實(shí)際上這樣做是不經(jīng)濟(jì)的)。具體說來,就是數(shù)據(jù)源比較固定的情況下可以使用這種控件。
具體使用方法是設(shè)定此控件的datasource屬性,就可以不用編寫任何代碼就可以顯示該數(shù)據(jù)源所指向的記錄數(shù)據(jù)。比如可以將datasource設(shè)置為一個(gè)data控件,而data控件又指向數(shù)據(jù)庫"成績(jī)"的 一個(gè)"語文"表,那么當(dāng)程序運(yùn)行時(shí),它就自動(dòng)顯示此"語文"表的數(shù)據(jù)。 基本步驟如下:
1、向工程上添加Microsoft Data Bound Grid Control控件,即DBGrid控件。
2、在窗體上添加DBGrid控件DBGrid1和Data控件Data1。
3、設(shè)置Data1的DatabaseName屬性為你要看的數(shù)據(jù)庫的名字。
4、設(shè)置Data1的RecordSource屬性為表的名字或合法的SQL Select語句。
5、設(shè)置DBGrid1的DataSource屬性為Data1。
從上面的分析看得出來,這個(gè)控件雖然操作方便,但是它也有局限性,就是不能對(duì)顯示的數(shù)據(jù)進(jìn)行靈活的控制操作,比如有些數(shù)據(jù)允許用戶修改,有些數(shù)據(jù)卻不允許用戶修改,而此控件卻只能提供全部數(shù)據(jù)源的原子操作:即要么全部允許修改,要么就全部不允許。還有另外此控件也不提供對(duì)單個(gè)單元格(cell)進(jìn)行操作,所以提供不了更為個(gè)性化的界面風(fēng)格。
2. Microsoft Datagrid Control
此控件跟前面介紹的Data Bound grid Control控件很相似,也是主要進(jìn)行綁定操作,而缺點(diǎn)和Data Bound grid Control完全一樣。但是它跟Data Bound grid Control不一樣的是其數(shù)據(jù)源的驅(qū)動(dòng)引擎只能是OLEDB形式的,不能是DAO,比如就可以使用ADO數(shù)據(jù)控件,不能使用DATA控件。而Data Bound grid Control卻剛好和它相反,這一點(diǎn)在開發(fā)中一定要注意。
3. Microsoft Flexgrid Control與Microsoft Hierarchial Flexgrid Control.
這里重點(diǎn)介紹這兩種控件,因?yàn)樵趯?shí)際開發(fā)中,這兩種控件應(yīng)用的場(chǎng)合更多一些,它不僅能夠反映數(shù)據(jù),而且也能把數(shù)據(jù)的修改信息反映到數(shù)據(jù)庫中去,所以彌補(bǔ)了上述兩種控件的不足。
如果數(shù)據(jù)不需要修改,那么可以進(jìn)行綁定操作,其方法跟前面介紹的完全一樣,就是通過設(shè)置DataSource屬性來完成數(shù)據(jù)的顯示工作。但是實(shí)際開發(fā)中,需要對(duì)整個(gè)表格控件更為靈活的顯示控制。
在給出例程之前,有必要對(duì)這一控件進(jìn)行比較詳盡的認(rèn)識(shí):這種控件允許將文本或者圖象放置于每個(gè)單元格之中,控件的Row與Col屬性允許用戶在代碼中指定當(dāng)前行和列,當(dāng)然也可通過操作鼠標(biāo)和鍵盤來改變這兩個(gè)屬性,而text屬性指明當(dāng)前單元格的文本。如果單元格的文本太長(zhǎng)而不能完全顯示出來的話,可以通過將WordWrap屬性設(shè)置為true來達(dá)到顯示的目的。下面將比較重要的屬性小結(jié)如下: <BR><BR> DataSource---------用來指定需要綁定的數(shù)據(jù)源,比如data控件。
Cellpicture----------用來設(shè)定當(dāng)前單元格的圖象,便于顯示該圖象。此屬性不能在設(shè)計(jì)時(shí)使用。
Col,Row---------------設(shè)定當(dāng)前列和當(dāng)前行,注意它們均是從0開始的,如果同時(shí)設(shè)定它們,可以指定當(dāng)前的單元格。設(shè)計(jì)時(shí)也不能使用。
Cols,Rows---------------設(shè)置表格控件總的列數(shù)和行數(shù)。
Hwnd---------------表格句柄,可以結(jié)合Windows API對(duì)表格控件進(jìn)行更高級(jí)的控制。
Text---------------指定當(dāng)前的單元格的文本內(nèi)容。
TextMatrix(i,j)-------此屬性比較重要,它用來指定第I行和第j列所確定的單元格的文本內(nèi)容。它等價(jià)于下面的代碼:
MSHFlexGrid1.Rows =i <BR>MSHFlexGrid1.Cols =j <BR>MSHFlexGrid1.Text =指定的字符串 <BR><BR> WordWrap-------為ture時(shí)可以在當(dāng)前單元格換行顯示,否則如果要顯示的字符的長(zhǎng)度超過列寬,那么就不能顯示完全。