專利名稱:一種多窗體系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)領(lǐng)域,尤其涉及一種多窗體系統(tǒng)。
背景技術(shù):
軟件通常有一個(gè)總體的功能入口,即主窗體;通過(guò)主窗體,可以進(jìn)入具體的功能界 面,即子窗體。為了便于用戶使用,現(xiàn)有軟件可以支持同時(shí)打開(kāi)主窗體和多個(gè)子窗體,使得 用戶可用在不關(guān)閉當(dāng)前窗體的情況下,能切換到另外的窗體?,F(xiàn)有能實(shí)現(xiàn)同時(shí)打開(kāi)主窗體 和多個(gè)子窗體的多窗體系統(tǒng)主要有下面兩種
多窗體系統(tǒng)1.采用標(biāo)準(zhǔn)EXE工程實(shí)現(xiàn) 在VB6或VC6開(kāi)發(fā)環(huán)境下,新建一個(gè)標(biāo)準(zhǔn)EXE工程,增加一個(gè)多文檔界面窗體 (Multi-Document Interface Form,MDIForm)作為主窗體,增加多個(gè)Form窗體作為子窗體, 并令子窗體的屬性MDIchid = True,比較容易實(shí)現(xiàn)同時(shí)打開(kāi)一個(gè)基本的主窗體和多個(gè)子窗 體。但是,該方案要求主窗體和多個(gè)子窗體必須在同一工程中。
多窗體系統(tǒng)2.采用標(biāo)準(zhǔn)EXE工程和多個(gè)OCX控件 在上述多窗體系統(tǒng)1的基礎(chǔ)上進(jìn)行改進(jìn),包括主窗體工程和至少一個(gè)子窗體功能 控件,主窗體工程包括主窗體和一個(gè)公共的空白的子窗體。采用子窗體功能控件來(lái)實(shí)現(xiàn)一 個(gè)子窗體的具體功能。需要增加子窗體時(shí),將對(duì)應(yīng)的子窗體功能控件加載到主窗體工程中, 這樣可以實(shí)現(xiàn)主窗體和子窗體的組件分離。但是,為了使主窗體工程能引用各實(shí)現(xiàn)具體功 能的子窗體功能控件,每增加一個(gè)子窗體都需要手動(dòng)修改主窗體工程,造成頻繁修改。
綜上所述,現(xiàn)有多窗體系統(tǒng)在每加載一個(gè)子窗體時(shí),都需要手動(dòng)修改主窗體工程, 不能動(dòng)態(tài)加載子窗體、維護(hù)成本高。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于解決現(xiàn)有技術(shù)存在的問(wèn)題,提供一種多窗體系統(tǒng),能動(dòng) 態(tài)加載子窗體、維護(hù)成本低。 本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種多窗體系統(tǒng),包括主窗體工程和至少一個(gè)子窗 體功能控件,所述主窗體工程中包括主窗體,所述主窗體工程中還包括 接收單元,用于接收子窗體開(kāi)啟觸發(fā)命令,所述子窗體開(kāi)啟觸發(fā)命令包括控件類 型信息;以及 控件加載單元,用于根據(jù)所述接收單元接收到的子窗體開(kāi)啟觸發(fā)命令,將對(duì)應(yīng)的 子窗體功能控件加載到主窗體工程添加的子窗體中。 在本發(fā)明實(shí)施例中,根據(jù)接收到的子窗體開(kāi)啟觸發(fā)命令,將對(duì)應(yīng)的子窗體功能控 件加載到主窗體工程添加的子窗體中,實(shí)現(xiàn)了一種多窗體系統(tǒng),能動(dòng)態(tài)加載子窗體、維護(hù)成 本低。
3
圖1是本發(fā)明實(shí)施例提供的
圖2是本發(fā)明實(shí)施例提供的
說(shuō)明書(shū)
種多窗體系統(tǒng)的結(jié)構(gòu)示意圖; 種管理信息的多窗體系統(tǒng)的界面示意圖。
具體實(shí)施例方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì) 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。 在本發(fā)明實(shí)施例中,根據(jù)接收到的子窗體開(kāi)啟觸發(fā)命令,將對(duì)應(yīng)的子窗體功能控 件加載到主窗體工程添加的子窗體中。
圖1示出了本發(fā)明實(shí)施例提供的一種多窗體系統(tǒng)的結(jié)構(gòu),為了便于說(shuō)明僅示出了 與本發(fā)明實(shí)施例相關(guān)的部分。該多窗體系統(tǒng)包括主窗體工程101和至少一個(gè)子窗體功能控 件102,主窗體工程101中包括主窗體1011,主窗體工程101中還包括
接收單元1012,接收子窗體開(kāi)啟觸發(fā)命令,該子窗體開(kāi)啟觸發(fā)命令包括控件類型 信息; 控件加載單元1013,根據(jù)接收單元1012接收到的子窗體開(kāi)啟觸發(fā)命令,將對(duì)應(yīng)的 子窗體功能控件加載到主窗體工程101添加的子窗體中。 其中,主窗體工程101與現(xiàn)有多窗體系統(tǒng)包括的主窗體工程相同,在主窗體工程 101中實(shí)現(xiàn)主窗體1011,主窗體工程101負(fù)責(zé)管理主窗體1011和其后加載到主窗體工程 101的子窗體,并實(shí)現(xiàn)公共的控制邏輯;子窗體功能控件102也與現(xiàn)有多窗體系統(tǒng)包括的子 窗體功能控件相同,采用子窗體功能控件102來(lái)填充子窗體,實(shí)現(xiàn)子窗體的具體業(yè)務(wù)功能; 子窗體開(kāi)啟觸發(fā)命令可以是用戶根據(jù)需要通過(guò)主窗體1011界面的按鍵輸入的,也可以是 主窗體工程101根據(jù)運(yùn)行需要等產(chǎn)生的;子窗體開(kāi)啟觸發(fā)命令包括的控件類型信息可以為 控件類型名、控件類型ID等唯一標(biāo)識(shí)各控件類型的信息。
進(jìn)一步地,控件加載單元1013還包括 子窗體添加模塊10131,在主窗體工程101中添加一個(gè)空白的子窗體;
許可字串添加模塊10132,根據(jù)接收到的子窗體開(kāi)啟觸發(fā)命令中包括的控件類型 信息,添加對(duì)應(yīng)子窗體功能控件102的許可字串的引用到空白的子窗體,許可字串是子窗 體功能控件102的特殊標(biāo)識(shí),用于唯一標(biāo)識(shí)各子窗體功能控件102 ; 控件對(duì)象添加模塊10133,根據(jù)接收到的子窗體開(kāi)啟觸發(fā)命令中包括的控件類型 信息和空白的子窗體包括的許可字串的引用,動(dòng)態(tài)添加對(duì)應(yīng)子窗體功能控件102的對(duì)象到 空白的子窗體。 在實(shí)現(xiàn)上,可以在VB6或VC6開(kāi)發(fā)環(huán)境下實(shí)現(xiàn),新建一個(gè)標(biāo)準(zhǔn)EXE工程作為主窗 體工程101,增加一個(gè)MDIForm作為主窗體,實(shí)現(xiàn)各子窗體的具體業(yè)務(wù)功能的子窗體功能 控件102可以為對(duì)象鏈接和嵌入用戶控件(Object Linkingand Embedding (OLE) Control Extension, OCX),即采用OCX控件來(lái)實(shí)現(xiàn)子窗體的具體功能,子窗體功能控件102的工程屬 性為ACTIVEX 0CX,不同的子窗體功能控件102可以在同一工程或不同工程中實(shí)現(xiàn)。子窗體 功能控件102的控件類型名可以標(biāo)識(shí)子窗體功能控件102所屬的類型,通過(guò)子窗體功能控 件102的工程名和控件類型名可以唯一標(biāo)識(shí)不同類型的子窗體功能控件102。
4
下面通過(guò)一個(gè)具體例子進(jìn)行詳細(xì)說(shuō)明上述多窗體系統(tǒng)的實(shí)現(xiàn),假設(shè)ABC公司需要 開(kāi)發(fā)一套管理信息的多窗體系統(tǒng),其界面示意圖如圖2所示,該管理信息的多窗體系統(tǒng)包 含"業(yè)務(wù)報(bào)表""業(yè)務(wù)單據(jù)""業(yè)務(wù)查詢"等幾十至幾百項(xiàng)業(yè)務(wù)處理,要求用戶可以同時(shí)打開(kāi) 多個(gè)窗體操作。 令主窗體工程101的定義如下
1)工程屬性標(biāo)準(zhǔn)EXE,工程名ERPMain
2)主窗體MDIMain,窗體類型為MDIForm
3)添加菜單用于調(diào)用子窗體菜單包括m皿Bill單據(jù)、m皿R印ort報(bào)表、m皿Exit退出 4)增加工具條ToolbarMain 預(yù)設(shè)一個(gè)下拉按鈕列表,實(shí)現(xiàn)菜單、工具條等 5)顯示子窗體方法Showchild 在顯示子窗體時(shí),先找到已經(jīng)打開(kāi)的同名子窗體,如沒(méi)有則顯示新窗體。 令用于實(shí)現(xiàn)"業(yè)務(wù)報(bào)表"的子窗體功能控件102的定義如下 工程屬性ACTIVE 0CX,工程名CTLBill,控件類型名R印ort 其他子窗體功能控件102的定義與此相同,這里不再給出其詳細(xì)定義。 接收單元1012在接收到子窗體開(kāi)啟觸發(fā)命令后,子窗體添加模塊10131在主窗體工
程101中添加添加一個(gè)空白子窗體frmSub,空白子窗體frmSub的MDIChild屬性為T(mén)ure,該
子窗體開(kāi)啟觸發(fā)命令包括的控件類型信息為子窗體功能控件102的工程名和控件類型名。 然后,許可字串添加模塊10132根據(jù)接收到的子窗體開(kāi)啟觸發(fā)命令中包括的工程
名和控件類型名,查找對(duì)應(yīng)的子窗體功能控件102,獲取查找到的子窗體功能控件102的許
可字串sLicense,將獲取到的許可字串sLicense的添加到空白子窗體。 在開(kāi)發(fā)環(huán)境中,獲取子窗體功能控件102的許可字串的方法為 sLicense = Licenses. Add "工程名.控件名" 其中,Licenses為工程的基本屬性之一,包含其引用的所有控件信息;Add為添加 控件的方法;返回值sLicense為子窗體功能控件102的許可字串,只有獲得了控件的許可 字串,才能調(diào)用該控件。 將獲取到的許可字串添加到空白的子窗體的具體方法為
Licenses. Add "工禾呈名.控^牛名",sLicense 由于子窗體功能控件102的許可字串sLicense在開(kāi)發(fā)環(huán)境已經(jīng)獲得,所以在運(yùn)行 環(huán)境添加許可信息后,就可以加載該子窗體功能控件102到主界面。 其中,許可字串sLicense的信息可以寫(xiě)在代碼中。但是,為了減少代碼修改和組 件編譯,也可以將許可字串sLicense的信息保存在一個(gè)配置文件或數(shù)據(jù)庫(kù)等中,在運(yùn)行 時(shí),根據(jù)"工程名.控件名"查找。 接著,控件對(duì)象添加模塊10133動(dòng)態(tài)添加子窗體功能控件102的對(duì)象到空白子窗 體,具體方法為 Set obj = Controls. Add("工程名.控件名",〃 ctl") 其中,Controls包含窗體已經(jīng)加載的所有控件;Add為添加一個(gè)新控件到窗體的 方法;ctl為動(dòng)態(tài)添加的子窗體功能控件102的名稱,該名稱可以任意命名;obj為子窗體功能控件102的對(duì)象名,用于控件的后續(xù)操作,如,設(shè)置控件的屬性等。 完成子窗體的子窗體功能控件102的對(duì)象添加后,主窗體工程101可以調(diào)用子窗
體顯示方法ShowControl顯示子窗體,具體為ShowControl With obj . Height = SealeHeight ,與窗體等高 .Width = ScaleWidth '與窗體等寬 .Visible = True ,設(shè)置控件可見(jiàn) End With 為了便于子窗體間的切換,作為本發(fā)明的一個(gè)優(yōu)選實(shí)施例,該主窗體工程101還 可以包括 頁(yè)簽管理單元1014,在每打開(kāi)一個(gè)子窗體后,動(dòng)態(tài)增加一個(gè)頁(yè)簽,并根據(jù)接收到的 子窗體切換命令切換子窗體。 在具體實(shí)現(xiàn)中,可以在主窗體工程101的工具條ToolbarMain中實(shí)現(xiàn)。 進(jìn)一步地,為了使主窗體、子窗體和/或子窗體功能控件102間能傳遞事件,保證
信息的同步,作為本發(fā)明的另一個(gè)優(yōu)選實(shí)施例,要傳遞事件的主窗體、子窗體和/或子窗體
功能控件102引用同一接口工程的對(duì)象,主窗體1011、子窗體和/或子窗體功能控件102通
過(guò)引用的該同一接口工程的對(duì)象實(shí)現(xiàn)窗體間事件傳遞。 其中,可以在接口工程中定義一套基本的事件、方法,該多窗體系統(tǒng)中的主窗體 1011、子窗體和/或子窗體功能控件102引用同一接口工程的對(duì)象,該接口工程中定義事件 和方法,要傳遞事件的主窗體1011、子窗體或子窗體功能控件102通過(guò)該對(duì)象的方法觸發(fā) 事件,通過(guò)該對(duì)象的事件響應(yīng)事件,以實(shí)現(xiàn)主窗體1011、子窗體和/或子窗體功能控件102 間的事件傳遞,使主窗體1011和子窗體的功能無(wú)縫集成。事件包括主窗體響應(yīng)子窗體事 件、主窗體通知子窗體功能控件事件和主窗體響應(yīng)子窗體功能控件事件。接口工程的具體 定義如下 1)工程屬性ACTIVE DLL,工程名稱CTLPublic,類名Cparent
2)事件定義 Mt改變事件Public Event PropertyChanged(sPropName As String, sValueAs String) 其中,PropertyChanged為值改變事件的名稱;sPropName為屬性名稱;sValue為 屬性值。 >消息通知事件Public Event WorkHappen (sName As String, sMsg AsString, bSuccess As Boolean) 其中,WorkHappen消息通知事件的名稱;sName為事件的任務(wù)名稱,通過(guò)任務(wù)名稱 的不同,可以區(qū)別不同種事件;sMsg為消息值,bSuccess :標(biāo)識(shí)是否成功,用于返回信息。
3)方法定義 >AddKey :增加屬性值并觸發(fā)值改變事件 ^Key:獲取屬性值 >RaiseWork :觸發(fā)消息通知事件 該接口僅包含兩個(gè)事件和三個(gè)方法,通過(guò)AddKey和Key方法可以實(shí)現(xiàn)任意多屬性,通過(guò)WorkH即pen事件的參數(shù)sName可以實(shí)現(xiàn)任意多方法,能避免由于業(yè)務(wù)需求的擴(kuò)展 而增加事件和屬性而造成對(duì)接口工程定義的頻繁修改。 在具體實(shí)現(xiàn)是可以在主窗體工程101中聲明一個(gè)接口工程的對(duì)象,然后再將該對(duì) 象傳遞給子窗體,子窗體又將該對(duì)象傳遞給子窗體功能控件102。在子窗體功能控件102 中引用接口工程,并聲明接口工程的對(duì)象,下面稱該接口工程的對(duì)象為接口工程對(duì)象,具體 為Private WithEvents oParent As CTLPublic. CParent'接口工程對(duì)象
初始化該接口工程對(duì)象,具體為 Public Function iniParent(oPt As CTLPublic. CParent)
Set oParent = oPt 下面,繼續(xù)用上述的管理信息的多窗體系統(tǒng)中的幾個(gè)例子具體說(shuō)明通過(guò)接口工程 的對(duì)象實(shí)現(xiàn)主窗體1011、子窗體和子窗體功能控件102之間事件傳遞的實(shí)現(xiàn)
1)主窗體響應(yīng)子窗體的事件 下面,以關(guān)閉子窗體時(shí),主窗體響應(yīng)子窗體的事件進(jìn)行說(shuō)明。
在子窗體中增加關(guān)閉子窗體的方法 Private Sub Form—Unload (Cancel As Integer)'子窗體關(guān)閉 oParent. RaiseWork" Unload" , 〃 〃 , True '觸發(fā)該接口工程對(duì)象的
Unload事件,消息為空 End Sub 在子窗體增加激活子窗體的方法 Private Sub Form—Activate () ,子窗體激活 Set MDIMain. oParent = oParent'傳遞接口對(duì)象到主窗體 oParent. RaiseWork" FormActive〃 , oParent. Key (〃 sM皿Name〃 ) , True '在子窗體中觸發(fā)接口工程對(duì)象的FormActive事件,消息sM皿Name End Sub 在主窗體工程101中增加接收獲取子窗體消息并響應(yīng)的方法 Private Sub oParent—WorkHappen(sName As String,sMsg As String,bSuccess
As Boolean) Select Case sName Case" Unload"'關(guān)閉子窗體 '移除頁(yè)簽 Case" FormActive" '切換頁(yè)簽 End Sub 由于主窗體lOll和子窗體中的接口工程對(duì)象為同一個(gè)接口工程的對(duì)象,所以子
窗體的事件能被主窗體接收。 2)主窗體通知子窗體功能控件的事件; 下面,以主窗體退出時(shí),詢問(wèn)子窗體功能控件102子窗體能否關(guān)閉為例進(jìn)行說(shuō)明。
在主窗體中增加通知子窗體功能控件102的方法0103]Private Sub mnuExit_Click ()'主窗體退出
0104] oParent. RaiseWork〃 m皿Click〃 , 〃 m皿Exit〃 , m—bM皿Success
0105] '觸發(fā)接口工程對(duì)象的m皿Click事件,消息名為m皿Exit
0106] If m_bMnuSuccess Then End '返回值是則退出,為否則不退出
0107] End Sub
0108] 還要在主窗體的上述Showchild方法中增加 0109] Set obj. oParent = oParent
0110] 在子窗體功能控件102中增加接收主窗體的事件通知,關(guān)閉前詢問(wèn)子窗體能否關(guān) 閉的方法
0111] Private Sub oParent_WorkHappen(sName As String, sMsg As String, bSuccessAs Boolean)
0112] If sName=〃 m皿Click" And sMsg = 〃 m皿Exit"
0113] I預(yù)sgBox(〃有報(bào)表正在生成,是否退出? 〃 , vbYesNo, 〃提
示〃 )=vbYes Then 0114] bSuccess = True
0115] 3)主窗體響應(yīng)子窗體功能控件的事件可以用于在子窗體功能控件102中調(diào)用另 一子窗體
0116] 在某一子窗體對(duì)應(yīng)的子窗體功能控件102中增加調(diào)用另一子窗體的方法 0117]oParent. RaiseWork〃 ShowChild〃 , 〃 m皿Bill" , True
0118] 在子窗體功能控件中觸發(fā)接口工程對(duì)象的ShowChild事件,主窗體接收該事件。 在主窗體工程101的oParent—WorkHa卯en事件中,增加方法
0119] if sName=〃 ShowChild" And sMsg = 〃 m皿Bill" Then mnuBill_Click 0120]'如果事件為ShowChild,消息名為m皿Bill,調(diào)用顯示單據(jù)子窗體的操作 0121] 進(jìn)一步地,也還可用在子窗體的子窗體功能控件102中增加實(shí)現(xiàn)接口屬性的方 法,例如 0122] 調(diào)用標(biāo)題屬性的示例為
0123] oParent. addKey〃 FormC即tion〃 , TxtTitle. Text
0124] 其中,F(xiàn)ormC即tion為屬性名稱,用于設(shè)置窗體的標(biāo)題;TxtTitle. Text為屬性值, 取自當(dāng)前文本框的內(nèi)容。 0125] 調(diào)用狀態(tài)屬性的示例為
0126] oParent. addKey〃 StautString〃 ,〃報(bào)表生成狀態(tài)〃 & IIf (ChkR印ort. Value =1, 〃 Y〃 , 〃 N〃 )
0127] 其中,StautString為屬性名稱,用于設(shè)置狀態(tài)欄消息;TxtTitle. Text為屬性值, 取自當(dāng)前檢查框內(nèi)容,如選中,則報(bào)表生成狀態(tài)為Y,否則為N。
0128] 在完成上述管理信息的多窗體系統(tǒng)的構(gòu)建后,運(yùn)行菜單"文件>業(yè)務(wù)報(bào)表",則動(dòng) 態(tài)加載報(bào)表控件,并生成一個(gè)子窗體,名為"財(cái)務(wù)報(bào)表";在"財(cái)務(wù)報(bào)表"的子窗體上,實(shí)現(xiàn)具 體業(yè)務(wù),例如業(yè)務(wù)報(bào)表列表,包含"新增"、"修改"、"刪除"等操作按鈕;在"報(bào)表名稱"文 本框中輸入"財(cái)務(wù)報(bào)表",則觸發(fā)屬性改變事件到子窗體,自動(dòng)修改子窗體標(biāo)題,同時(shí)也觸發(fā) 主窗體的屬性改變事件、同步修改頁(yè)簽的名稱;運(yùn)行"報(bào)表生成"復(fù)選框,則觸發(fā)主窗體的屬
8性改變事件,在主窗體的狀態(tài)欄顯示"報(bào)表生成狀態(tài)Y";運(yùn)行"相關(guān)單據(jù)"標(biāo)題欄,則觸發(fā) 主窗體的工作事件,調(diào)用另一 "業(yè)務(wù)單據(jù)"子窗體;運(yùn)行頁(yè)簽或下拉菜單"財(cái)務(wù)報(bào)表"、"業(yè)務(wù) 單據(jù)"可以切換子窗體,在子窗體的激活事件中,觸發(fā)主窗體的工作事件,同步切換頁(yè)簽;運(yùn) 行"文件>平鋪"菜單,則兩個(gè)窗口同時(shí)顯示,如圖2所示;關(guān)閉"業(yè)務(wù)單據(jù)"窗體,則觸發(fā)主 窗體的工作事件,同步關(guān)閉相應(yīng)頁(yè)簽;運(yùn)行主窗體的"文件>關(guān)閉"菜單,觸發(fā)控件的工作事 件,如果正在生成報(bào)表,則提示,如選擇"是"則通知主窗體允許關(guān)閉,退出。
在本發(fā)明實(shí)施例中,根據(jù)接收到的子窗體開(kāi)啟觸發(fā)命令,將對(duì)應(yīng)的子窗體功能控 件加載到主窗體工程添加的子窗體中,實(shí)現(xiàn)了一種多窗體系統(tǒng),能動(dòng)態(tài)加載子窗體、維護(hù)成 本低。 并且,在接口工程中定義一套基本的事件、方法,主窗體、子窗體和控件通過(guò)同一 接口工程的對(duì)象實(shí)現(xiàn)事件傳遞,使主窗體和子窗體的功能無(wú)縫集成。 以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種多窗體系統(tǒng),包括主窗體工程和至少一個(gè)子窗體功能控件,所述主窗體工程中包括主窗體,其特征在于,所述主窗體工程中還包括接收單元,用于接收子窗體開(kāi)啟觸發(fā)命令,所述子窗體開(kāi)啟觸發(fā)命令包括控件類型信息;以及控件加載單元,用于根據(jù)所述接收單元接收到的子窗體開(kāi)啟觸發(fā)命令,將對(duì)應(yīng)的子窗體功能控件加載到主窗體工程添加的子窗體中。
2. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述控件加載單元包括 子窗體添加模塊,用于在主窗體工程中添加一個(gè)空白的子窗體;許可字串添加模塊,用于根據(jù)接收到的子窗體開(kāi)啟觸發(fā)命令中包括的控件類型信息, 添加對(duì)應(yīng)子窗體功能控件的許可字串的引用到所述空白的子窗體;以及控件對(duì)象添加模塊,用于根據(jù)接收到的子窗體開(kāi)啟觸發(fā)命令中包括的控件類型信息和 所述空白的子窗體包括的許可字串的引用,動(dòng)態(tài)添加對(duì)應(yīng)子窗體功能控件的對(duì)象到所述空 白的子窗體。
3. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述子窗體功能控件為0CX控件。
4. 如權(quán)利要求1所述的系統(tǒng),其特征在于,要傳遞事件的主窗體、子窗體和/或子窗體 功能控件引用同一接口工程的對(duì)象。
5. 如權(quán)利要求4所述的系統(tǒng),其特征在于,所述接口工程中定義事件和方法。
6. 如權(quán)利要求5所述的系統(tǒng),其特征在于,要傳遞事件的主窗體、子窗體或子窗體功能 控件通過(guò)所述對(duì)象的方法觸發(fā)事件,通過(guò)所述對(duì)象的事件響應(yīng)事件。
7. 如權(quán)利要求4至6任一項(xiàng)所述的系統(tǒng),其特征在于,所述事件包括主窗體響應(yīng)子窗體 事件、主窗體通知子窗體功能控件事件和主窗體響應(yīng)子窗體功能控件事件。
8. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述主窗體工程還包括 頁(yè)簽管理單元,用于在每打開(kāi)一個(gè)子窗體后,動(dòng)態(tài)增加一個(gè)頁(yè)簽,并根據(jù)接收到的子窗體切換命令切換子窗體。
全文摘要
本發(fā)明適用于計(jì)算機(jī)領(lǐng)域,提供了一種多窗體系統(tǒng),包括主窗體工程和至少一個(gè)子窗體功能控件,所述主窗體工程中包括主窗體,所述主窗體工程中還包括接收單元,用于接收子窗體開(kāi)啟觸發(fā)命令,所述子窗體開(kāi)啟觸發(fā)命令包括控件類型信息;以及控件加載單元,用于根據(jù)所述接收單元接收到的子窗體開(kāi)啟觸發(fā)命令,將對(duì)應(yīng)的子窗體功能控件加載到主窗體工程添加的子窗體中。在本發(fā)明實(shí)施例中,根據(jù)接收到的子窗體開(kāi)啟觸發(fā)命令,將對(duì)應(yīng)的子窗體功能控件加載到主窗體工程添加的子窗體中,實(shí)現(xiàn)了一種多窗體系統(tǒng),能動(dòng)態(tài)加載子窗體、維護(hù)成本低。
文檔編號(hào)G06F9/445GK101697137SQ20091011065
公開(kāi)日2010年4月21日 申請(qǐng)日期2009年10月16日 優(yōu)先權(quán)日2009年10月16日
發(fā)明者王術(shù)全 申請(qǐng)人:金蝶軟件(中國(guó))有限公司;