轉: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。
總結
通過以上面事例的介紹,可以生成若干同類似的窗體。不論操作多少表,都可通過窗體繼承得到,物理表的操作一次性完成,不必在每個窗體中寫代碼,所完成的功能及界面布局全在模板窗體中完成。這樣極大地降低了編寫代碼的工作量,同時為設置窗體整體外觀提供以方便,提高了開發效率,也降低了軟件的測試和維護的工作量。繼承是面向對象的開發語言的一個重要組成部分,在程序設計中充分的利用繼承關系,可以最大范圍的提高程序的可利用性,使得用最少的代碼開發比較大的應用程序。