首页 > 编程 > .NET > 正文

转:Visual Basic.NET快速开发MIS系统(4)

2024-07-10 13:02:22
字体:
来源:转载
供稿:网友
新的要求

  现在假设有物理表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。




  总结

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表