四、用FlexGrid控件來(lái)操縱數(shù)據(jù)
使用FlexGrid ActiveX控件可以在Microsoft Visual Basic的窗體中創(chuàng)建一個(gè)電子數(shù)據(jù)表格,也可稱(chēng)之為網(wǎng)格。FlexGrid ActiveX控件可以在網(wǎng)格中顯示任何類(lèi)型的表格式數(shù)據(jù):文本、數(shù)字、日期,甚至圖形。但是下面將主要學(xué)習(xí)使用FlexGrid控件顯示Microsoft Access數(shù)據(jù)庫(kù)的字段和記錄。
FlexGrid控件在電子數(shù)據(jù)表格中分別用行和列來(lái)顯示數(shù)據(jù)庫(kù)表的記錄和字段。你可以在FlexGrid對(duì)象中進(jìn)行許多電子數(shù)據(jù)表格的典型操作,包括選中單元、重置列寬、對(duì)齊標(biāo)題和格式化文本。你可以從用文本填充簡(jiǎn)單的FlexGrid控件開(kāi)始,選中文本、設(shè)置幾個(gè)格式選項(xiàng)。接下來(lái),你將進(jìn)一步深入到把FlexGrid控件綁定到數(shù)據(jù)庫(kù)上、顯示數(shù)據(jù)庫(kù)表、對(duì)記錄進(jìn)行排序、在整個(gè)數(shù)據(jù)庫(kù)中搜索用戶(hù)定義的字符串文本。
1、將FlexGrid用作通用電子數(shù)據(jù)表格
FlexGrid是Microsoft Visual Basic 專(zhuān)業(yè)版和企業(yè)版中包含的ActiveX控件。在工程中使用FlexGrid控件之前,需要在Project(工程)菜單的Components(部件)菜單項(xiàng)打開(kāi)的對(duì)話框中選擇Microsoft FlexGrid 6.0 control(即msflxgrd.ocx),把控件添加到工程中的工具箱中。
FlexGrid控件提供了許多電子數(shù)據(jù)網(wǎng)格傳統(tǒng)的組織優(yōu)點(diǎn)??梢杂盟鼇?lái)創(chuàng)建貨物清單、計(jì)算稅款、管理帳目、跟蹤零件列表和庫(kù)存清單等等。另外,Microsoft將FlexGrid控件設(shè)計(jì)為一種可綁定的控件,它可以通過(guò)在同一窗體上的Data控件來(lái)顯示數(shù)據(jù)庫(kù)信息。如果你想用原始的表格形式迅速顯示數(shù)據(jù)庫(kù)信息,那么FlexGrid控件就是的選擇。
提示:Visual Basic 6.0專(zhuān)業(yè)版還提供了一個(gè)被稱(chēng)為Hierarchical FlexGridActiveX 的同類(lèi)電子表格控件(即mshflxgd.ocx)。此控件的用法與FlexGrid控件一樣,并且它們有一套相同的屬性、方法和事件。但是,HierarchicalFlexGrid控件必須被綁定到ActiveX Data Objects(ADO)控件上,注意ADO控件并不是Visual Basic工具箱中的內(nèi)部Data控件。“Hierarchical”表示這個(gè)控件可以顯示由數(shù)據(jù)庫(kù)中的多個(gè)表創(chuàng)建的記錄集。
理解行和列
由FlexGrid控件產(chǎn)生的電子數(shù)據(jù)網(wǎng)格是一種包括平行的行和垂直的列組成的表格。在缺省情況下,第一行和最左一列作為保留的行標(biāo)題和列標(biāo)題,并且用陰影背景色顯示。你可以用屬性Rows來(lái)設(shè)置表格中行的數(shù)量,用屬性Cols來(lái)設(shè)置表格中列的數(shù)量。下圖顯示了一個(gè)帶有8行5列的FlexGrid表格的窗體:
FlexGrid控件中的表格數(shù)據(jù)可以像二維數(shù)組那樣操作。表格的第一維是行數(shù),第二維是列數(shù)。例如,表格最左上角的單元可以用地址0,0(0行,0列)來(lái)引用。
向單元中添加文本
用TextMatrix屬性向單元中添加文本。
當(dāng)要把一個(gè)值放到FlexGrid的某一個(gè)單元中時(shí),需要設(shè)置TextMatrix屬性來(lái)指定單元的位置和一個(gè)值。表格中你可以指定任何數(shù)值或字符串?dāng)?shù)據(jù)類(lèi)型的值。
例如,要把單詞“Bob”放到第3行第1列的單元中,可以輸入如下的程序語(yǔ)句:
MSFlexGrid1.TextMatrix(3,1) = "Bob"
同樣,要把數(shù)字1500放到第2行第1列的單元中,可以使用如下的語(yǔ)法:
MSFlexGrid1.TextMatrix(2,1)= 1500
在單元中插入圖形
使用CellPicture屬性來(lái)添加圖形。
你可以通過(guò)使用Set語(yǔ)句、CellPicture屬性和LoadPicture函數(shù)在FlexGrid表格單元中插入圖形。有效的圖形類(lèi)型包括圖標(biāo)文件(.ico)、位圖文件(.bmp)和Windows的圖元文件(.wmf)。
例如,下列程序語(yǔ)句在表格的指定單元中顯示圖元文件Coins.wmf:
Set MSFlexGrid1.CellPicture = LoadPicture (“c:\vb\coins.wmf”)
調(diào)整單元的高度和寬度
當(dāng)你向一個(gè)單元中添加圖形時(shí),F(xiàn)lexGrid控件并不會(huì)自動(dòng)重置單元的大小來(lái)顯示它。你可以用RowHeight和ColWidth屬性來(lái)調(diào)整單元的高度和寬度,給它們指定一個(gè)以Twip為計(jì)量單位的數(shù)值。
例如,下列語(yǔ)句把表格的第1行和第1列的高度和寬度設(shè)置為2000 Twip,括號(hào)里的數(shù)字分別指出了當(dāng)前行和當(dāng)前列:
MSFlexGrid1.RowHeight(1)= 2000
MSFlexGrid1.ColWidth(1)= 2000
直接把這兩條語(yǔ)句加入到上面在CellPicture屬性中顯示圖形的Set語(yǔ)句中,單元將會(huì)擴(kuò)大到足以顯示整個(gè)圖形的尺寸。
注意:當(dāng)改變表格中一個(gè)單元的大小時(shí),實(shí)際上就改變了那個(gè)單元所在的整個(gè)行和整個(gè)列的大小。
選中單元
使用Row和Col屬性選中單元。
如大多數(shù)電子數(shù)據(jù)表格一樣,在格式化單元內(nèi)容之前,必須要在FlexGrid控件中選中它們。在FlexGrid控件中,你可以用程序代碼選中單獨(dú)的單元或一組(相鄰的塊)的單元。
要選中單獨(dú)的單元,只要簡(jiǎn)單的將Row和Col的屬性設(shè)置到你想選擇的行和列即可。你指定的行和列的交叉處就是你選中的單元。
例如,如果要選中表格的單元1,1,可以使用下列程序語(yǔ)句:
MSFlexGrid1.Row = 1
MSFlexGrid1.Col = 1
要選擇一個(gè)區(qū)域的單元時(shí),必須要指定所選區(qū)域的開(kāi)始點(diǎn)和結(jié)束點(diǎn)。開(kāi)始點(diǎn)就是你剛剛用Row和Col屬性指定的單元(第1行,第1列以上),
使用FlexGrid ActiveX控件可以在Microsoft Visual Basic的窗體中創(chuàng)建一個(gè)電子數(shù)據(jù)表格,也可稱(chēng)之為網(wǎng)格。FlexGrid ActiveX控件可以在網(wǎng)格中顯示任何類(lèi)型的表格式數(shù)據(jù):文本、數(shù)字、日期,甚至圖形。但是下面將主要學(xué)習(xí)使用FlexGrid控件顯示Microsoft Access數(shù)據(jù)庫(kù)的字段和記錄。
FlexGrid控件在電子數(shù)據(jù)表格中分別用行和列來(lái)顯示數(shù)據(jù)庫(kù)表的記錄和字段。你可以在FlexGrid對(duì)象中進(jìn)行許多電子數(shù)據(jù)表格的典型操作,包括選中單元、重置列寬、對(duì)齊標(biāo)題和格式化文本。你可以從用文本填充簡(jiǎn)單的FlexGrid控件開(kāi)始,選中文本、設(shè)置幾個(gè)格式選項(xiàng)。接下來(lái),你將進(jìn)一步深入到把FlexGrid控件綁定到數(shù)據(jù)庫(kù)上、顯示數(shù)據(jù)庫(kù)表、對(duì)記錄進(jìn)行排序、在整個(gè)數(shù)據(jù)庫(kù)中搜索用戶(hù)定義的字符串文本。
1、將FlexGrid用作通用電子數(shù)據(jù)表格
FlexGrid是Microsoft Visual Basic 專(zhuān)業(yè)版和企業(yè)版中包含的ActiveX控件。在工程中使用FlexGrid控件之前,需要在Project(工程)菜單的Components(部件)菜單項(xiàng)打開(kāi)的對(duì)話框中選擇Microsoft FlexGrid 6.0 control(即msflxgrd.ocx),把控件添加到工程中的工具箱中。
FlexGrid控件提供了許多電子數(shù)據(jù)網(wǎng)格傳統(tǒng)的組織優(yōu)點(diǎn)??梢杂盟鼇?lái)創(chuàng)建貨物清單、計(jì)算稅款、管理帳目、跟蹤零件列表和庫(kù)存清單等等。另外,Microsoft將FlexGrid控件設(shè)計(jì)為一種可綁定的控件,它可以通過(guò)在同一窗體上的Data控件來(lái)顯示數(shù)據(jù)庫(kù)信息。如果你想用原始的表格形式迅速顯示數(shù)據(jù)庫(kù)信息,那么FlexGrid控件就是的選擇。
提示:Visual Basic 6.0專(zhuān)業(yè)版還提供了一個(gè)被稱(chēng)為Hierarchical FlexGridActiveX 的同類(lèi)電子表格控件(即mshflxgd.ocx)。此控件的用法與FlexGrid控件一樣,并且它們有一套相同的屬性、方法和事件。但是,HierarchicalFlexGrid控件必須被綁定到ActiveX Data Objects(ADO)控件上,注意ADO控件并不是Visual Basic工具箱中的內(nèi)部Data控件。“Hierarchical”表示這個(gè)控件可以顯示由數(shù)據(jù)庫(kù)中的多個(gè)表創(chuàng)建的記錄集。
理解行和列
由FlexGrid控件產(chǎn)生的電子數(shù)據(jù)網(wǎng)格是一種包括平行的行和垂直的列組成的表格。在缺省情況下,第一行和最左一列作為保留的行標(biāo)題和列標(biāo)題,并且用陰影背景色顯示。你可以用屬性Rows來(lái)設(shè)置表格中行的數(shù)量,用屬性Cols來(lái)設(shè)置表格中列的數(shù)量。下圖顯示了一個(gè)帶有8行5列的FlexGrid表格的窗體:
FlexGrid控件中的表格數(shù)據(jù)可以像二維數(shù)組那樣操作。表格的第一維是行數(shù),第二維是列數(shù)。例如,表格最左上角的單元可以用地址0,0(0行,0列)來(lái)引用。
向單元中添加文本
用TextMatrix屬性向單元中添加文本。
當(dāng)要把一個(gè)值放到FlexGrid的某一個(gè)單元中時(shí),需要設(shè)置TextMatrix屬性來(lái)指定單元的位置和一個(gè)值。表格中你可以指定任何數(shù)值或字符串?dāng)?shù)據(jù)類(lèi)型的值。
例如,要把單詞“Bob”放到第3行第1列的單元中,可以輸入如下的程序語(yǔ)句:
MSFlexGrid1.TextMatrix(3,1) = "Bob"
同樣,要把數(shù)字1500放到第2行第1列的單元中,可以使用如下的語(yǔ)法:
MSFlexGrid1.TextMatrix(2,1)= 1500
在單元中插入圖形
使用CellPicture屬性來(lái)添加圖形。
你可以通過(guò)使用Set語(yǔ)句、CellPicture屬性和LoadPicture函數(shù)在FlexGrid表格單元中插入圖形。有效的圖形類(lèi)型包括圖標(biāo)文件(.ico)、位圖文件(.bmp)和Windows的圖元文件(.wmf)。
例如,下列程序語(yǔ)句在表格的指定單元中顯示圖元文件Coins.wmf:
Set MSFlexGrid1.CellPicture = LoadPicture (“c:\vb\coins.wmf”)
調(diào)整單元的高度和寬度
當(dāng)你向一個(gè)單元中添加圖形時(shí),F(xiàn)lexGrid控件并不會(huì)自動(dòng)重置單元的大小來(lái)顯示它。你可以用RowHeight和ColWidth屬性來(lái)調(diào)整單元的高度和寬度,給它們指定一個(gè)以Twip為計(jì)量單位的數(shù)值。
例如,下列語(yǔ)句把表格的第1行和第1列的高度和寬度設(shè)置為2000 Twip,括號(hào)里的數(shù)字分別指出了當(dāng)前行和當(dāng)前列:
MSFlexGrid1.RowHeight(1)= 2000
MSFlexGrid1.ColWidth(1)= 2000
直接把這兩條語(yǔ)句加入到上面在CellPicture屬性中顯示圖形的Set語(yǔ)句中,單元將會(huì)擴(kuò)大到足以顯示整個(gè)圖形的尺寸。
注意:當(dāng)改變表格中一個(gè)單元的大小時(shí),實(shí)際上就改變了那個(gè)單元所在的整個(gè)行和整個(gè)列的大小。
選中單元
使用Row和Col屬性選中單元。
如大多數(shù)電子數(shù)據(jù)表格一樣,在格式化單元內(nèi)容之前,必須要在FlexGrid控件中選中它們。在FlexGrid控件中,你可以用程序代碼選中單獨(dú)的單元或一組(相鄰的塊)的單元。
要選中單獨(dú)的單元,只要簡(jiǎn)單的將Row和Col的屬性設(shè)置到你想選擇的行和列即可。你指定的行和列的交叉處就是你選中的單元。
例如,如果要選中表格的單元1,1,可以使用下列程序語(yǔ)句:
MSFlexGrid1.Row = 1
MSFlexGrid1.Col = 1
要選擇一個(gè)區(qū)域的單元時(shí),必須要指定所選區(qū)域的開(kāi)始點(diǎn)和結(jié)束點(diǎn)。開(kāi)始點(diǎn)就是你剛剛用Row和Col屬性指定的單元(第1行,第1列以上),