- 相關(guān)推薦
VB編程中網(wǎng)格控件的選用及使用方法
內(nèi)容提要: The software of visual basic developed by Microsoft corporation is becoming one of the main develop tools at today。 As it's remarkable peculiarity, the Grid control has very great practical and active use。 This topic discusses how to use the grid control of VB to develop pratical software and how to use it conveniently and simply。 微軟公司的面對對象的程序開發(fā)軟件VB(Visual Basic)日益成為當(dāng)前所流行的主流開發(fā)工具。作為其顯著的特色之一,VB所提供的網(wǎng)格類控件,在實際的數(shù)據(jù)庫管理系統(tǒng)的開發(fā)過程中具有很大的實用性和靈活性。本文旨在討論在使用VB的實際開發(fā)過程中,如何有選擇的使用VB所提供的網(wǎng)格類控件以及如何方便、簡潔的去使用。關(guān)鍵詞匯: Component-Based Development Virtual Data Management Spread's Calc Engine 構(gòu)件開發(fā) 虛擬數(shù)據(jù)管理 計算引擎
隨著基于構(gòu)件開發(fā)(Component-Based Development)技術(shù)的發(fā)展,供開發(fā)者使用的軟件構(gòu)件越來越多,單就VB中可使用的網(wǎng)格類控件也有許多種。網(wǎng)格類控件常用在數(shù)據(jù)庫管理系統(tǒng)的開發(fā)中,用來直觀地顯示表或視圖的二維關(guān)系,在對數(shù)據(jù)的操作上,有些控件也提供了很多便捷的方法。 同樣是完成這些顯示和操作數(shù)據(jù)的功能,面對各式各樣的控件,選擇那種來達(dá)到目的,成了軟件開發(fā)者必須考慮的問題。唯有選擇了一個好的控件,才能提高開發(fā)效率,增強軟件的功能,達(dá)到事半功倍的效果。 下面,本人根據(jù)自己長期以來積累的實際經(jīng)驗,總結(jié)出以下幾點網(wǎng)格控件的選用應(yīng)考慮的方面:
第一,要考慮控件的實際功能。功能強、接口多的控件可以增強應(yīng)用軟件的質(zhì)量,也可減少編程工作量,當(dāng)然,這要結(jié)合應(yīng)用需求來定,并不是功能越多越好。提供的功能多了,控件本身就很大,占好幾兆空間,增加了程序的冗余代碼。另外,一些功能閑置,靈活性太強也可能導(dǎo)致最終用戶不易掌握使用。
第二,控件的穩(wěn)定性要強。作為應(yīng)用程序的基石,不應(yīng)選用那些控件本身容易出錯,補丁(patch)太多的版本。
第三,控件的易用性要高。選用那些屬性配置合理,事件觸發(fā)機制明晰流暢,易于設(shè)計和使用,項目組中的程序員都容易接受掌握的控件。 以下簡要介紹幾種網(wǎng)格類控件的特點,以供選用。 Grid控件: Grid控件可顯示簡單的二維表格,不用和數(shù)據(jù)庫直接連接,具有滾動條、行頭、列頭等特性,運行時可用鼠標(biāo)調(diào)整行列的寬度,可用于瀏覽數(shù)據(jù),若想對數(shù)據(jù)進行編輯,需結(jié)合TextBox控件,或采取其他變通方法。下面所示畫面即為日本東京社會調(diào)查研究所開發(fā)的《要員管理系統(tǒng)》中硬件管理部分的畫面。 畫面中的下部即為Grid控件,定義其名稱為GrdHardComp。使用時,要首先在下圖所示的屬性窗口中定義其行列數(shù),控制條格式,字體大小,填充格式,鼠標(biāo)模式等特性。 然后,可以動態(tài)的劃分其間距: GrdHardComp.ColWidth(0) = GrdHardComp.Width * 1 / 6 GrdHardComp.ColWidth(1) = GrdHardComp.Width * 5 / 24 GrdHardComp.ColWidth(2) = GrdHardComp.Width * 1 / 6 GrdHardComp.ColWidth(3) = GrdHardComp.Width * 1 / 6 GrdHardComp.C olWidth(4) = GrdHardComp.Width * 3 / 24 GrdHardComp.ColWidth(5) = GrdHardComp.Width * 1 / 6 GrdHardComp.ColWidth(6) = GrdHardComp.Width * 1 / 6 Private Hards() As M_Hard 定義其標(biāo)題: GrdHardComp.Row = 0 ' GrdHardComp.Col = 0 GrdHardComp.FixedAlignment(GrdHardComp.Col) = 2 GrdHardComp.Text = "構(gòu)成番號" GrdHardComp.Col = 1 GrdHardComp.FixedAlignment(GrdHardComp.Col) = 2 GrdHardComp.Text = "構(gòu)成機器區(qū)分"① … … 在數(shù)據(jù)向Grid中寫入或取出時,為了便于大量的數(shù)據(jù)同時,簡便地寫入與修改,可以定義一個類型。如下: Type M_Hard Number As String OrderNum As String MachKind As String MachKindName As String … … End Type (其中Number等均為要輸入的圖示條目) ;Private Hards() As M_Hard Hards(),此時就作為數(shù)據(jù)的傳輸變量,進行Grid與TextBox之間的數(shù)據(jù)傳輸。 數(shù)據(jù)向類內(nèi)寫入: If HardComp.RecordCount > 0 Then HardComp.MoveFirst Do Until HardComp.EOF ReDim Preserve Hards(H%)// H%為記數(shù)變量。 Hards(H%).OrderNum = HardComp![ OrderNum]//輸入編號 Hards(H%).MachKind = HardComp![ MachKind]//種類 Hards(H%).MachKindName = HardComp![ MachKindName]//分類名 Hards(H%).MachName = HardComp![ MachName]//名稱 … … loop HardComp.MoveFirst 類內(nèi)數(shù)據(jù)向Grid內(nèi)寫入: GrdHardComp.Row = H% + 1//記錄數(shù)統(tǒng)計 GrdHardComp.Col = 0 GrdHardComp.Text = " " & Hards(H%).OrderNum GrdHardComp.Col = 1 GrdHardComp.Text = " " & Hards(H%).MachKind GrdHardComp.Col = 2&nb sp;GrdHardComp.Text = " " & Hards(H%).MachKindName GrdHardComp.Col = 3
GrdHardComp.Text = " " & Hards(H%).MachName GrdHardComp.Col = 4 … … GrdHardComp.Text = " " & Hards(H%).HardLastDate GrdHardComp.Rows = GrdHardComp.Rows + 1//行數(shù)加1 HardComp.MoveNext H% = H% + 1 當(dāng)然,如果使數(shù)據(jù)真正寫入數(shù)據(jù)庫,還需進行數(shù)據(jù)庫的讀寫操作。Grid只是提供了一個預(yù)覽的功能,便于數(shù)據(jù)的修改。 由以上Grid的特點及其使用方法可以看出,在需要對數(shù)據(jù)庫進行大量數(shù)據(jù)的操作時,為了減少對數(shù)據(jù)庫的直接操作,提高數(shù)據(jù)庫的安全性,使用Grid控件,還是有很大方便的。 Grid是VB在早期版本中就帶有的控件,使用簡便,穩(wěn)定性好,在早期的VB開發(fā)過程中,使用尤其廣泛。但現(xiàn)在與其它控件比較起來功能有些不足。 DBGrid控件: DBGrid是專用來操作數(shù)據(jù)庫的網(wǎng)格控件,可以綁定到Data控件,幾乎不用寫代碼就可方便地對數(shù)據(jù)進行顯示,增加、刪除或修改記錄, DBGrid具有OnAddNew、BeforeDelete等事件,可在增加新記錄或刪除修改時對數(shù)據(jù)進行有效性檢驗,來實現(xiàn)事務(wù)處理功能。DBGrid也可以在設(shè)計時編輯網(wǎng)格格式,指定顯示字段等,由于它提供了Column、Split、SelBookmarks等對象,更增強了顯示和操作數(shù)據(jù)的能力。 下面是筆者所參與開發(fā)的東京社會調(diào)查研究所的項目--《健康診斷系統(tǒng)》的一個實例。 圖中的Data4控件把數(shù)據(jù)庫和DBGrid直接連起來,DBGrid的題目,項目設(shè)置可以在屬性窗口里直接做到。在使用時,要注意新數(shù)據(jù)是先更新數(shù)據(jù)庫,然后才回寫到DBGrid里。方法如下: Sql = "SELECT * FROM 表名" //SQL語句 Set Data4.Recordset = MyDB2.OpenRecordset(sSql, dbOpenSnapshot) Data4.Refresh 或: DatMonthPlan.RecordSource = "SELECT * FROM 表名WHERE (((關(guān)鍵字)='" & Key & "')); 如果想對DBGrid中的某個條目進行復(fù)制,方法如下: Data4.Recordset.AddNew Data4.Recordset![ 關(guān)鍵字] = Key//關(guān)鍵字索引 Data4.Recordset![記號]= D BGrid.Columns(0).CellValue(DBGrid.GetBookmark(0))//第一列 Data4.Recordset[番號]=DBGrid.Columns(1).CellValue(DBGrid.GetBookmark(0))// 第二列 Data4.Recordset![氏名]=DBGrid.Columns(2).CellValue(DBGrid.GetBookmark(0))//第三列 Data4.Recordset.Update Data4.Refresh//數(shù)據(jù)庫更新 DBGrid.Refresh// DBGrid刷新 如果動態(tài)的對DBGrid中的某個欄目進行增減,可以用如下方法: i = 1 //總顯示列數(shù)記數(shù) Data4.MoveFirst Do Until Data4.EOF DBGrid1.Columns(i).Width = 1600 //定義寬度 DBGrid1.Columns(i).Caption = "年齡" //標(biāo)題 DBGrid1.Columns(i).DataField = "& 實際數(shù)據(jù)域 &" DBGrid1.Columns(i).Visible = True //可見性 DBGrid1.Columns(i).Alignment = 1 //DBGrid 控件列中的值的對齊方式 Data4.MoveNext i = i + 1 If i > 8 Then Exit Do//列數(shù)最大為8 Loop 由于具有良好的可靠性,靈活性和直觀性,所以DBGrid控件現(xiàn)在被廣泛使用。但不足之處在于DBGrid,和直接操作數(shù)據(jù)庫,對數(shù)據(jù)庫的正確性有一定的威脅。改進方法是,在修改數(shù)據(jù)庫時,加入提示信息。 True DBGrid: DBGrid是Apex軟件公司為微軟開發(fā)的,而Apex的True DBGrid控件也具有較強的數(shù)據(jù)顯示及處理功能,因與DBGrid同出一宗,所以兩者有很多相同點。在基本功能上,DBGrid的增,減等操作方法可直接用于True DBGrid,在這里就不再贅述。但在DBGrid的基礎(chǔ)上,True DBGrid可以直接嵌入ListBox、Image位圖、單選框等控件(如圖所示),使軟件的界面更加美觀,實用。 SSDBGrid控件: SSDBGrid來自Sheridan軟件系統(tǒng)公司 http://www.shersoft.com ),與Sheridan的其它控件一樣,以漂亮的三維界面見長,SSDBGrid還可與其它數(shù)據(jù)庫控件如SSDBData、SSDBCombo等有機結(jié)合,為用戶處理數(shù)據(jù)提供方便,它有幾百個屬性、方法等接口,為界面的潤色提供了很大的選擇余地。另外SSDBGrid還具有虛擬數(shù)據(jù)管理(virtual data management)技術(shù),在內(nèi)存中只存貯需顯示在界面上的記錄,這樣在處理大量數(shù)據(jù)時不致耗費系統(tǒng)資源而影響運行速度。SSDBGrid的缺點只是在有些版本中輸入漢字時會出現(xiàn)一些亂碼,但顯示漢字的效果很不錯。 MSFlexGrid控件: MSFlexGrid和vsFlexArray在顯示數(shù)據(jù)方面有很多獨到之處,在運行中可通過拖放來交換各列的位置,動態(tài)地對數(shù)據(jù)進行排序、分組合并等。vsFlexArray控件是VideoSoft公司(www.videosoft.com)的產(chǎn)品,MSFlexGrid的部分技術(shù)也來自此公司。 vaSpread控件: vaSpread控件在處理數(shù)據(jù)方面有著更大的靈活性,它支持?jǐn)?shù)據(jù)綁定,虛擬數(shù)據(jù)管理等技術(shù),而且具備了電子表格的功能,編輯中可以使用剪貼板來剪切或復(fù)制單元格區(qū)域的數(shù)據(jù),單元格中也可以加入公式,借助Spread的計算引擎(Spread's Calc Engine)對數(shù)據(jù)進行分析計算。Spread Designer還可方便地設(shè)計表格的格式,在單元格中加入按鈕、圖片、組合框等,自己設(shè)計的表格格式還能作為模板與數(shù)據(jù)分開來保存。若想得到簡單的報表,vaSpread的打印功能可直接把界面和數(shù)據(jù)打印出來,而不需通過專門的報表打印控件。vaSpread是FarPointTechnologies公司的產(chǎn)品,網(wǎng)址為 http://www.fpoint.com 。 Formula One控件: Formula One有更強的數(shù)據(jù)處理功能,是與Excel兼容的電子表格控件,在PowerBuilder中經(jīng)常用到,它來自Sybase下屬
的Visual components公司,網(wǎng) http://www.visualcomp.com 。l另外,PowerBuilder中,常用子窗口--Database Windows 的形式來顯示數(shù)據(jù)庫的構(gòu)成。如下圖,至于其使用方法,這里就不再贅述了。 參考文獻(xiàn): 1. 微軟公司《VB部件工具》,1997年版 2. True DBGrid 4.0d "Hondo" (Build 4.0.0130, dated 10/16/96). 3. 《PowerBuilder6.0應(yīng)用與開發(fā)》,清華大學(xué)出版社
【VB編程中網(wǎng)格控件的選用及使用方法】相關(guān)文章:
VC 中靜態(tài)控件的特殊用法04-16
用POWERPOINT課件提高《VB基礎(chǔ)編程》課的課堂效果08-13
如何用VB存取SQL Server中的圖像數(shù)據(jù)04-12
英語原聲電影在英語教學(xué)中的選用08-13
職高VB教學(xué)心得08-24
vb實訓(xùn)心得11-25
編程的心得09-13
編程的心得最新09-19
系統(tǒng)托盤的編程08-19
編程求職信12-17