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