快速开发覆盖
我们的编程工作大部分都完成了,现在只需要增加新的继承窗体Form就可,方法是在Form项或项目菜单或工具栏选择添加继承的窗体,在弹出的Form中输入窗体名frmUser按打开,在选择继承器中选择FrmModule确定就生成了一新的窗体。 继承的继承如下:
Public Class frmUser:Inherits frmModel
在生成的窗体中增加一些必要的控件,同时与根据表中字段对应关系设置的TabIndex的值。
通过设置控件TabIndex的值,可以把该控件与物理表中的字段关系对应起来,如TabIndex为1,则对应物理表的第1个字段,如TabIndex为2,则对应物理表的第2个字段,如此例推。这方便把输入控件的数据写入表中,把格数据写入输入控件中,这是技巧,其实现过程见方法:WriteDateToArray(),DataGridToText()。
指定物理表
在类frmUser的New方法中指定所操作的物理表名tUser。为什么要在这里指定表名呢?是因为程序在调用frmUser前,先必须申请frmUser的实类,同时进行实类化,自动执行构造函数New(),执行New()时,就把我们所要完成的功能代码放在这里,让它们自动执行。
Public Sub New()
w()
\'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
dateTable = \"tUser\"
\'在 InitializeComponent() 调用之后添加任何初始化
End Sub
更改控件的属性,隐藏不需要的控件
在 frmUser的Load事件中更改DataGrid1的标题并隐藏不需要的控件:
Private Sub frmUser_Load(ByVal sender As ject, ByVal e As entArgs) Handles ad
ptionText = \"用户列表\"
sible = False
sible = False
End Sub
按同样方法,生成下面的窗体frmInfo,在此窗体上增加一些新控件,如下:
窗体frmInfo类继承frmModel:
Public Class frmInfo:Inherits frmModel
在类frmInfo的New方法中指定所操作的物理表名tInfo。
Public Sub New()
…
dateTable = \" tInfo \"
End Sub
现在,ToolBar1上增加了新的方法\"导入\",应该怎样处理呢?事实上只要在frmInfo的ToolBar1_ButtonClick事件中识别时\"导入\",写要处理的任务就可,如下:
Private Sub ToolBar1_ButtonClick(ByVal sender As ject, ByVal e As olBarButtonClickEventArgs) Handles ttonClick
Select Case xt
Case \"导入\"
…
End Select
End Sub
通过上面的窗体继承方法,凡是对物理表的操作都可以通过这些方法来完成,而不必再重复编写代码。
新的要求
现在假设有物理表tChange与tInfo表是一关联表,通过关键字段fID关联,既表tChange的字段fID的数据是通过tInfo表提供,其它来源于用户的输入,要生成tChange表数据处理的窗体。要实现这些功能,我们同样通过窗体的继承来完成(有物理表tSub也如此)。
.先定义窗体模板frmModul2,此frmModul2继承frmModul, 即:Public Class frmModul2: Inherits mModel。 在frmModul2中加入列表盒控制ListBox1和其它控制,布置好后如下图:
.在frmModul2的Load事件中填充ListBox的数据并隐藏不必要的控件。
Private Sub frmModul2_Load(ByVal sender As ject, ByVal e As entArgs) Handles ad
FillListBox(stBox1)
sible = 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 eDbDataReader
dr = LDataReader(StrSQL)
While ad
d(em(\"a\"))
End While
ose()
End Sub
.当单击ListBox1时选择当前数据并填充至txt1, txt3中
Public Overridable Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As useEventArgs) Handles useDown
Dim i, txt
i = lectedIndex
txt = ems(i)
xt = bstring(0, 15)
xt = bstring(16, Len(txt) - 16).trim
xt = tMaxSystemID + 1
llGrid(DataGrid1)
gIsUpdate = False
End Sub
好了,我们的窗体模板又做好了,下面我们通过窗体模板frmModul2生成继承窗体frmChange,即:
Public Class frmChange:Inherits mModul2
生成的窗体如下图:
依照前面设置所操作的表tChange和其它,不必写其它代码。
妈妈陪你去做手术 Public Sub New()
…
dateTable = \"tChange\"
End Sub
同样可生成操作表tSub的窗体frmSub。
总结
通过以上面事例的介绍,可以生成若干同类似的窗体。不论操作多少表,都可通过窗体继承得到,物理表的操作一次性完成,不必在每个窗体中写代码,所完成的功能及界面布局全在模板窗体中完成。这样极大地降低了编写代码的工作量,同时为设置窗体整体外观提供以方便,提高了开发效率,也降低了软件的测试和维护的工作量。继承是面向对象的开发语言的一个重要组成部分,在程序设计中充分的利用继承关系,可以最大范围的提高程序的可利用性,使得用最少的代码开发比较大的应用程序。
江中黄芪生脉饮价格多少钱台州宫颈糜烂治疗多少钱
海口哪家医院治白癜风好
-
细说锦鲤繁殖饲主喂养指南位置
锦鲤(Carps)我们日常很常见,尤其是在公园,花园等场所,人们喜欢它们鲜艳的色彩,游水时的飘逸身姿。锦鲤其...[详细]
-
罗威纳和德牧哪个好位置
导读:罗威纳和德牧哪个好?罗威纳犬和德国牧羊犬都是大型的犬种,都是出色的工作犬,在工作能力上来说,德...[详细]
-
能否喂金毛犬吃鱼籽来提高它的营养位置
我家金毛还没到两个月,每天给它吃狗粮,现在它不怎么喜欢吃了,我每天给它做鸡肝拌饭吃。我想在鸡肝拌饭里...[详细]
-
苏格兰牧羊犬把耳朵背到后面的含义位置
苏格兰牧羊犬是性格温顺淳厚的狗狗,深受主人的喜欢。有它陪伴在主人身边,能够让主人们更好的生活,也能够...[详细]
-
观赏鱼水蛭病的病原体介绍位置
>招财鱼(详情介绍)观赏鱼患上水蛭病后会表现的非常不安,并且会在硬物上不断摩擦,试图擦掉身上的寄生虫。水...[详细]
-
高加索犬被确诊真菌感染怎么治疗位置
我是新手妈妈.高加索犬确认为皮肤真菌感染.之前带回来开始喜欢不停的挠自己.后去医院打了一针.泡了药水澡.但回...[详细]