网站首页 工具软件 操作系统 办公软件 网页制作 PHP教程 script脚本专栏 photoshop教程 其他精品教程
我发布的文章 - 教程搜索 - 交流论坛 - 帮助中心 - 网站首页 网络工具 - 常用工具 - 媒体工具 - 系统工具 - 实用工具 NT/2003 - Win Xp - Win2000 - DOS/Win9x - IE/注册表 - Linux - 苹 果 Office - Word - Excel - PowerPoint - 输入法 - 邮件处理 Flash - Dreamweaver - Fireworks - FrontPage - HTMLCSS 基础文章 - PHP函数 - PHP技巧 - 数据库相关 - 高级应用 - PHP安装 - 转载精华 - 常见问题 综 合 类 - 状 态 栏 - 游 戏 类 - 页面背景 - 页面特效 - 页面导航 - 文本操作 - 文本特效 - 图形特效 - 鼠标特效 - 时间日期 - 密 码 类 文字特效 - 按钮与图标 - 色彩运用 - 滤镜魔法 - 综合实例 XML教程 - DELPHI基础教程 - VB教程
首页 -> 其他精品教程 -> VB教程

TOP

:用继承加速MIS开发 (3)
文章内容
相关信息
用户评论
文章内容


● 生成的窗体中增加一些必要的控件,同时与根据表中字段对应关系设置的TabIndex的值。

通过设置控件TabIndex的值,可以把该控件与物理表中的字段关系对应起来,如TabIndex为1,则对应物理表的第1个字段,如TabIndex为2,则对应物理表的第2个字段,如此例推。这方便把输入控件的数据写入表中,把网格数据写入输入控件中,这是技巧,其实现过程见方法:WriteDateToArray(),DataGridToText()。

● 指定物理表

在类frmUser的New方法中指定所操作的物理表名tUser。为什么要在这里指定表名呢?是因为程序在调用frmUser前,先必须申请frmUser的实类,同时进行实类化,自动执行构造函数New(),执行New()时,就把我们所要完成的功能代码放在这里,让它们自动执行。

Public Sub New()
       MyBase.New()
       '该调用是 Windows 窗体设计器所必需的。
       InitializeComponent()
        gCls.UpdateTable = "tUser"
        '在 InitializeComponent() 调用之后添加任何初始化
 End Sub


● 更改控件的属性,隐藏不需要的控件。

在 frmUser的Load事件中更改DataGrid1的标题并隐藏不需要的控件:

Private Sub frmUser_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
        DataGrid1.CaptionText = "用户列表"
        cbo.Visible = False
        Me.Label6.Visible = False
 End Sub


按同样方法,生成下面的窗体frmInfo,在此窗体上增加一些新控件,如下:



窗体frmInfo类继承frmModel:
Public Class frmInfo:Inherits frmModel
在类frmInfo的New方法中指定所操作的物理表名tInfo。
Public Sub New()
       …
        gCls.UpdateTable = " tInfo "
End Sub


现在,ToolBar1上增加了新的方法“导入”。事实上只要在frmInfo的ToolBar1_ButtonClick事件中识别时“导入”,写要处理的任务就可,如下:

Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, 
    ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs)
    Handles ToolBar1.ButtonClick
        Select Case e.Button.Text
            Case "导入"
              …
           End Select
     End Sub


通过上面的窗体继承方法,凡是对物理表的操作都可以通过这些方法来完成,而不必再重复编写代码。

● 新的要求

现在假设有物理表tChange与tInfo表是一关联表,通过关键字段fID关联,既表tChange的字段fID的数据是通过tInfo表提供,其它来源于用户的输入,要生成tChange表数据处理的窗体。要实现这些功能,我们同样通过窗体的继承来完成(有物理表tSub也如此)。

先定义窗体模板frmModul2,此frmModul2继承frmModul,即:Public Class frmModul2: Inherits Asset.frmModel。 在frmModul2中加入列表盒控制ListBox1和其它控制,布置好后如下图:



在frmModul2的Load事件中填充ListBox的数据并隐藏不必要的控件。

Private Sub frmModul2_Load(ByVal sender As System.Object, 
ByVal e As System.EventArgs) Handles MyBase.Load
        FillListBox(Me.ListBox1)
        Me.tlbAdd.Visible = False
End SubPublic 
Sub FillListBox(ByVal ListBox As ListBox)
        Dim StrSQL As String
         StrSQL = "select  Distinct fID || '  ' ||  fName as a  FROM tInfo "
        Dim dr As OleDb.OleDbDataReader
        dr = DB.SQLDataReader(StrSQL) 
        While dr.Read
            ListBox.Items.Add(dr.Item("a"))
        End While
        dr.Close()
  End Sub


当单击ListBox1时选择当前数据并填充至txt1,txt3中。

Public Overridable Sub ListBox1_MouseDown(ByVal sender As Object, 
ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
        Dim i, txt
        i = ListBox1.SelectedIndex
        txt = ListBox1.Items(i)
        txt1.Text = txt.Substring(0, 15)
        txt3.Text = txt.Substring(16, Len(txt) - 16).trim
        txtID.Text = gCls.GetMaxSystemID + 1
        gCls.FillGrid(DataGrid1)
        gIsUpdate = False
 End Sub


好了,我们的窗体模板又做好了,下面我们通过窗体模板frmModul2生成继承窗体frmChange,即:

Public Class frmChange:Inherits Asset.frmModul2


生成的窗体如下图:



依照前面设置所操作的表tChange和其它,不必写其它代码。

Public Sub New()
       …
        gCls.UpdateTable = "tChange"
End Sub


同样可生成操作表tSub的窗体frmSub。



总结


通过以上面事例的介绍,可以生成若干同类似的窗体。不论操作多少表,都可通过窗体继承得到,物理表的操作一次性完成,不必在每个窗体中写代码,所完成的功能及界面布局全在模板窗体中完成。这样极大地降低了编写代码的工作量,同时为设置窗体整体外观提供以方便,提高了开发效率,也降低了软件的测试和维护的工作量。继承是面向对象的开发语言的一个重要组成部分,在程序设计中充分的利用继承关系,可以最大范围的提高程序的可利用性,使得用最少的代码开发比较大的应用程序。


相关信息
:用继承加速MIS开发 (3)
发布者:mmcbbs
浏览量:135
发布日期:2005-04-10 10:27:29
所属专题:
用户评论
称  呼:
内  容:

广告位

广告招租,欢迎抢订

热门信息

·什么是ODBC
·初识WTL(上)
·理解ActiveX控件的一些背景..
·VB.NET 的新特点:变..
·探讨VB.Net中的数据绑定
·用VB.NET打造NameSpace
·VB.NET中的面向对象编程特征
·用VB和MTS开发多层数据库应..

推荐信息