内容提要: 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 pscusses how to use the grid control of VB to develop pratical software and how to use it conveniently and simply。 Microsoft企业的面对对象的程序开发软件VB日益成为目前所时尚的主流开发工具。作为其显著的特点之一,VB所提供的网格类控件,在实质的数据库管理软件的开发过程中具备非常大的实用性和灵活性。本文旨在讨论在用VB的实质开发过程中,怎么样有选择的用法VB所提供的网格类控件与怎么样便捷、简洁的去用。
关键字汇: Component-based Development Virtual Data Management Spread's Calc Engine 构件开发 虚拟数据管理 计算引擎
伴随基于构件开发技术的进步,供开发者用的软件构件愈加多,单就VB中可用的网格类控件也有很多种。网格类控件常用在数据库管理软件的开发中,用来直观地显示表或视图的二维关系,在对数据的操作上,有的控件也提供了不少便捷的办法。 同样是完成这类显示和操作数据的功能,面对各式各样的控件,选择那种来达到目的,成了软件开发者需要考虑的问题。唯有选择了一个好的控件,才能提升开发效率,增强软件的功能,达到事半功倍的成效。 下面,本人依据自己长期以来积累的实质经验,总结出以下几个方面网格控件的使用应考虑的方面:
第一,要考虑控件的实质功能。功能强、接口多的控件可以增强应用软件的水平,也可降低编程工作量,当然,这要结合应用需要来定,并非功能越多越好。提供的功能多了,控件本身就非常大,占好几兆空间,增加了程序的冗余代码。另外,一些功能闲置,灵活性太强也会致使最后用户不容易学会用。
第二,控件的稳定性要强。作为应用程序的基石,不应使用那些控件本身容易出错,补丁太多的版本。
第三,控件的易用性要高。使用那些属性配置合理,事件触发机制明晰流畅,易于设计和用,项目组中的技术员都容易同意学会的控件。 以下简要介绍几种网格类控件的特征,以供使用。 Grid控件: Grid控件可显示简单的二维表格,不需要和数据库直接连接,具备滚动条、行头、列头等特质,运行时可用鼠标调整行列的宽度,可用于浏览数据,若想对数据进行编辑,需结合TextBox控件,或采取其他变通办法。下面所示画面即为日本东京社会调查研究所开发的《要员管理软件》中硬件管理部分的画面。 画面中的下部即为Grid控件,概念其名字为GrdHardComp。用时,要第一在下图所示的属性窗口中概念其行列数,控制条格式,字体大小,填充格式,鼠标模式等特质。 然后,可以动态的划分其间距: GrdHardComp.ColWidth = GrdHardComp.Width * 1 / 6 GrdHardComp.ColWidth = GrdHardComp.Width * 5 / 24 GrdHardComp.ColWidth = GrdHardComp.Width * 1 / 6 GrdHardComp.ColWidth = GrdHardComp.Width * 1 / 6 GrdHardComp.ColWidth = GrdHardComp.Width * 3 / 24 GrdHardComp.ColWidth = GrdHardComp.Width * 1 / 6 GrdHardComp.ColWidth = GrdHardComp.Width * 1 / 6 Private Hards As M_Hard 概念其标题: GrdHardComp.Row = 0 ' GrdHardComp.Col = 0 GrdHardComp.FixedAlignment = 2 GrdHardComp.Text = "构成番号" GrdHardComp.Col = 1 GrdHardComp.FixedAlignment = 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%为记数变量。 Hards.OrderNum = HardComp![ OrderNum]//输入编号 Hards.MachKind = HardComp![ MachKind]//类型 Hards.MachKindName = HardComp![ MachKindName]//分类名 Hards.MachName = HardComp![ MachName]//名字 … … loop HardComp.MoveFirst 类内数据向Grid内写入: GrdHardComp.Row = H% + 1//记录数统计 GrdHardComp.Col = 0 GrdHardComp.Text = " " & Hards.OrderNum GrdHardComp.Col = 1 GrdHardComp.Text = " " & Hards.MachKind GrdHardComp.Col = 2 GrdHardComp.Text = " " & Hards.MachKindName GrdHardComp.Col = 3 GrdHardComp.Text = " " & Hards.MachName GrdHardComp.Col = 4 … … GrdHardComp.Text = " " & Hards.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 Data4.Refresh 或: DatMonthPlan.RecordSource = "SELECt * FROM 表名WHERe ='" & Key & "')); 假如想对DBGrid中的某个条目进行复制,办法如下: Data4.Recordset.AddNew Data4.Recordset![ 关键词] = Key//关键词索引 Data4.Recordset![记号]= DBGrid.Columns.CellValue)//第一列 Data4.Recordset[番号]=DBGrid.Columns.CellValue)// 第二列 Data4.Recordset![氏名]=DBGrid.Columns.CellValue)//第三列 Data4.Recordset.Update Data4.Refresh//数据库更新 DBGrid.Refresh// DBGrid刷新 假如动态的对DBGrid中的某个栏目进行增减,可以用如下办法: i = 1 //总显示列数记数 Data4.MoveFirst Do Until Data4.EOF DBGrid1.Columns.Width = 1600 //概念宽度 DBGrid1.Columns.Caption = "年龄" //标题 DBGrid1.Columns.DataField = "& 实质数据域 &" DBGrid1.Columns.Visible = True //可见性 DBGrid1.Columns.Alignment = 1 //DBGrid 控件列中的值的对齐方法 Data4.MoveNext i = i + 1 If i > 8 Then Exit Do//列数最大为8 Loop 因为具备好的靠谱性,灵活性和直观性,所以DBGrid控件目前被广泛用。但不足之处在于DBGrid,和直接操作数据库,对数据库的正确性有肯定的威胁。改进办法是,在修改数据库时,加入提示信息。 True DBGrid: DBGrid是Apex软件公司为Microsoft开发的,而Apex的True DBGrid控件也具备较强的数据显示及处置功能,因与DBGrid同出一宗,所以两者有不少相同点。在基本功能上,DBGrid的增,减等操作办法可直接用于True DBGrid,在这里就不再赘述。但在DBGrid的基础上,True DBGrid可以直接嵌入ListBox、Image位图、单选框等控件(如图所示),使软件的界面愈加美观,实用。 SSDBGrid控件: SSDBGrid来自Sheridan软件系统公司,与Sheridan的其它控件一样,以好看的三维界面见长,SSDBGrid还可与其它数据库控件如SSDBData、SSDBCombo等有机结合,为用户处置数据提供便捷,它有几百个属性、办法等接口,为界面的润色提供了非常大的选择空间。另外SSDBGrid还具备虚拟数据管理技术,在内存中只存贮需显示在界面上的记录,如此在处置很多数据时不致耗费系统资源而影响运行速度。SSDBGrid的缺点只不过在有的版本中输入汉字时会出现一些乱码,但显示汉字的成效很好。 MSFlexGrid控件: MSFlexGrid和vsFlexArray在显示数据方面有不少独到之处,在运行中可通过拖放来交换各列的地方,动态地对数据进行排序、分组合并等。vsFlexArray控件是VideoSoft企业的商品,MSFlexGrid的部分技术也来自此公司。 vaSpread控件: vaSpread控件在处置数据方面有着更大的灵活性,它支持数据绑定,虚拟数据管理等技术,而且拥有了电子表格的功能,编辑中可以用剪贴板来剪切或复制单元格地区的数据,单元格中也可以加入公式,借用Spread的计算引擎对数据进行剖析计算。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. Microsoft公司《VB部件工具》,1997年版 2. True DBGrid 4.0d "Hondo" . 3. 《PowerBuilder6.0应用与开发》,清华大学出版社