用友U870二次開(kāi)發(fā)手冊(cè)篇_第1頁(yè)
用友U870二次開(kāi)發(fā)手冊(cè)篇_第2頁(yè)
用友U870二次開(kāi)發(fā)手冊(cè)篇_第3頁(yè)
用友U870二次開(kāi)發(fā)手冊(cè)篇_第4頁(yè)
用友U870二次開(kāi)發(fā)手冊(cè)篇_第5頁(yè)
已閱讀5頁(yè),還剩275頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

....下載可編輯..用友U8開(kāi)發(fā)一月通用友U8平臺(tái)技術(shù)部ERP事業(yè)部產(chǎn)品市場(chǎng)推廣部2007年1月總策劃:郉艷凱主編:張勁濤、李正、侯關(guān)士撰稿:陳鴻遠(yuǎn)、鞠進(jìn)步、唐豐、胡景峰、鄭蕓、鄭子陽(yáng)、王振騫、陳文海、羅文印、吳小山、李東、蔡再安、廖年兵、蔣志全審校:姜煒、胡春鈺、魏勇、闞宇鳴謝衷心感謝U8產(chǎn)品本部鄧適宜總經(jīng)理為本書(shū)所做的指導(dǎo)和點(diǎn)評(píng)衷心感謝ERP事業(yè)部向奇漢副總裁為本書(shū)的傳播所給予的關(guān)注衷心感謝U8平臺(tái)技術(shù)部、U8總體設(shè)計(jì)部、U8供應(yīng)鏈開(kāi)發(fā)部、U8財(cái)務(wù)開(kāi)發(fā)部、U8行業(yè)開(kāi)發(fā)部、ERP事業(yè)部產(chǎn)品市場(chǎng)推廣部在本書(shū)的寫作推廣過(guò)程中給予的大力支持和幫助目錄TOC\o"1-4"\h\z\u目錄 3開(kāi)篇導(dǎo)讀 9第一篇:U8開(kāi)發(fā)模式介紹 10第一節(jié)U8開(kāi)發(fā)模式 10第二節(jié)U8二次開(kāi)發(fā)模式 102.1U8二次開(kāi)發(fā) 102.2UAP開(kāi)發(fā) 10第二篇:U8二次開(kāi)發(fā) 11第一節(jié):應(yīng)用程序框架簡(jiǎn)介 11第二節(jié):門戶開(kāi)發(fā)與集成 11一、功能概述 11二、名詞解釋 112.1菜單調(diào)整工具 112.2idt.dll文件 11三、如何開(kāi)發(fā)可與門戶集成的VBdll 123.1代碼修改 123.2常見(jiàn)問(wèn)題 163.3參考 163.4掛接菜單 18四、如何開(kāi)發(fā)可與門戶集成的.NETUserControl 184.1通過(guò)建立一個(gè)項(xiàng)目類型為類庫(kù)的項(xiàng)目 184.2實(shí)現(xiàn)接口IUserControl 194.3編譯該控件輸出DLL 214.4替換文件 213.5示例源程序代碼 213.6掛接菜單 21五、可執(zhí)行文件(EXE)如何掛接到門戶 22六、UAP表單和UAP列表如何掛接到門戶 23七、如何不使用菜單調(diào)整工具增加和修改菜單 257.1相關(guān)表結(jié)構(gòu) 257.2各種程序類型的增加方法 26八、應(yīng)用習(xí)題 28第三節(jié):界面設(shè)計(jì)與開(kāi)發(fā) 283.1檔案開(kāi)發(fā) 28功能介紹: 28使用環(huán)境: 29使用說(shuō)明: 29應(yīng)用案例: 29應(yīng)用技巧: 29應(yīng)用習(xí)題: 29相關(guān)控件:參照/列表/MDIExtend 293.2單據(jù)開(kāi)發(fā) 29功能介紹: 29使用環(huán)境: 30使用說(shuō)明: 30應(yīng)用案例: 39應(yīng)用技巧: 41應(yīng)用習(xí)題: 413.3打印控件 41功能介紹: 41使用環(huán)境: 42使用說(shuō)明: 42應(yīng)用案例: 54應(yīng)用技巧: 54應(yīng)用習(xí)題: 553.4憑證開(kāi)發(fā) 55功能介紹: 55使用環(huán)境: 55使用說(shuō)明: 56應(yīng)用案例: 59應(yīng)用技巧: 61應(yīng)用習(xí)題: 61相關(guān)控件:憑證控件 62第四節(jié):業(yè)務(wù)功能開(kāi)發(fā) 624.1加密控制 62功能介紹: 62使用環(huán)境: 62使用說(shuō)明: 62應(yīng)用案例: 66應(yīng)用技巧: 67應(yīng)用習(xí)題: 674.2功能權(quán)限控制 67功能介紹: 67使用環(huán)境: 67使用說(shuō)明: 67應(yīng)用案例: 73應(yīng)用技巧: 74應(yīng)用習(xí)題: 744.3數(shù)據(jù)權(quán)限控制 75功能介紹: 75使用環(huán)境: 75使用說(shuō)明: 75應(yīng)用案例: 83應(yīng)用技巧: 84應(yīng)用習(xí)題: 84第五節(jié)API應(yīng)用 845.1庫(kù)存部分 84功能介紹: 84使用環(huán)境: 84使用說(shuō)明: 85應(yīng)用案例: 86應(yīng)用技巧: 88應(yīng)用習(xí)題: 885.2采購(gòu)部分 88功能介紹: 88使用環(huán)境: 88使用說(shuō)明: 89應(yīng)用案例: 97應(yīng)用技巧: 98應(yīng)用習(xí)題: 985.3銷售部分 98功能介紹: 98使用環(huán)境: 98使用說(shuō)明: 99應(yīng)用案例: 101應(yīng)用技巧: 102應(yīng)用習(xí)題: 102第六節(jié)EAI開(kāi)發(fā) 102第一節(jié)EAI功能介紹: 102第二節(jié)EAI二次開(kāi)發(fā)模式: 103第三節(jié)導(dǎo)入導(dǎo)出數(shù)據(jù)格式標(biāo)準(zhǔn): 105第四節(jié)支持哪些基礎(chǔ)檔案和業(yè)務(wù)單據(jù)的的導(dǎo)入導(dǎo)出 108第五節(jié)憑證的導(dǎo)入 111第七節(jié)工作流 112功能介紹: 112使用過(guò)程: 112開(kāi)發(fā)幫助 113第八節(jié)插件式開(kāi)發(fā) 142功能介紹: 142使用環(huán)境: 142使用說(shuō)明: 143應(yīng)用案例: 143應(yīng)用技巧: 143應(yīng)用習(xí)題: 143第三篇:UAP應(yīng)用開(kāi)發(fā) 144第一節(jié):UAP功能介紹 144第二節(jié):UAP安裝與卸載 145第三節(jié):UAP應(yīng)用環(huán)境及流程 145第四節(jié):項(xiàng)目定義 1454.1使用項(xiàng)目 1454.2項(xiàng)目的導(dǎo)入導(dǎo)出 1464.3任務(wù)管理 147第五節(jié):表單管理 1485.1應(yīng)用開(kāi)發(fā) 1485.1.1UAP表單模型 1485.1.2表單結(jié)構(gòu)設(shè)計(jì) 1485.1.3布局視圖設(shè)計(jì) 1535.2表單二次開(kāi)發(fā)接口 157功能介紹: 157使用環(huán)境: 157使用說(shuō)明: 158應(yīng)用案例: 170應(yīng)用技巧: 175應(yīng)用習(xí)題: 1755.3列表二次開(kāi)發(fā)接口 176功能介紹: 176使用環(huán)境: 176使用說(shuō)明: 176應(yīng)用案例: 180應(yīng)用習(xí)題: 1805.4后臺(tái)服務(wù)二次開(kāi)發(fā) 180功能介紹: 180使用環(huán)境: 181使用說(shuō)明: 181應(yīng)用案例: 183應(yīng)用技巧: 184應(yīng)用習(xí)題: 185第六節(jié):報(bào)表管理 1856.1報(bào)表概述 1856.2使用報(bào)表 186使用說(shuō)明: 186應(yīng)用習(xí)題: 1896.3報(bào)表二次開(kāi)發(fā)接口 189使用說(shuō)明: 189應(yīng)用習(xí)題: 196第七節(jié):?jiǎn)螕?jù)轉(zhuǎn)換規(guī)則 196功能介紹: 196使用環(huán)境: 196使用說(shuō)明: 196應(yīng)用技巧: 198第八節(jié):產(chǎn)品發(fā)布 198UAP項(xiàng)目發(fā)布 198功能介紹: 198使用環(huán)境: 199使用說(shuō)明: 199二次開(kāi)發(fā)DLL部署 200使用環(huán)境: 200使用說(shuō)明: 200應(yīng)用案例: 201應(yīng)用技巧: 202應(yīng)用習(xí)題: 202第九節(jié):其它功能介紹 2021、參照 202參照設(shè)計(jì)器 202參照組件 2122、菜單設(shè)計(jì)器 2383、應(yīng)用角色 238功能介紹: 238使用說(shuō)明: 2394、數(shù)據(jù)引擎定義工具 239功能介紹: 239使用說(shuō)明: 240備注: 262應(yīng)用技巧: 262應(yīng)用習(xí)題: 2625、商業(yè)敏感數(shù)據(jù)工具 263功能介紹: 263使用說(shuō)明: 263應(yīng)用技巧: 266應(yīng)用習(xí)題: 2666、欄目設(shè)計(jì)器 266功能介紹: 266使用說(shuō)明: 266應(yīng)用技巧: 268應(yīng)用習(xí)題: 2687、過(guò)濾設(shè)計(jì)器 268功能介紹: 268使用說(shuō)明: 268應(yīng)用技巧: 273應(yīng)用習(xí)題: 274第四篇:開(kāi)發(fā)技巧 275第一節(jié):MSSQL2000腳本生成器 275功能介紹: 275使用環(huán)境: 275使用說(shuō)明: 275應(yīng)用案例: 275應(yīng)用技巧: 275應(yīng)用習(xí)題: 275第二節(jié):?jiǎn)螕?jù)模板預(yù)置工具 276功能介紹: 276使用環(huán)境: 276使用說(shuō)明: 276應(yīng)用案例: 276應(yīng)用技巧: 276應(yīng)用習(xí)題: 276第三節(jié):年結(jié)易用性工具 276功能介紹: 276使用環(huán)境: 276使用說(shuō)明: 277應(yīng)用案例: 277應(yīng)用技巧: 277應(yīng)用習(xí)題: 277第五篇:習(xí)題解答 278開(kāi)篇導(dǎo)讀今天,企業(yè)種類多樣,業(yè)務(wù)流程更加復(fù)雜,ERP包含的功能越來(lái)越多,長(zhǎng)期以來(lái),ERP廠商一直都在努力,試圖開(kāi)發(fā)一個(gè)能滿足各種企業(yè)的各種業(yè)務(wù)的ERP系統(tǒng),但是,客戶的業(yè)務(wù)流程總是會(huì)變,客戶的需求總是層出不窮,變化的速度遠(yuǎn)遠(yuǎn)超過(guò)了ERP廠商推出新版本或開(kāi)發(fā)新產(chǎn)品的速度,ERP廠商疲于奔命,即使使盡渾身解數(shù)也吃力不討好。經(jīng)過(guò)冷靜思考,我們可以從低級(jí)的生物生態(tài)鏈找到卸掉ERP廠商多年包袱的原型辦法,ERP廠商、增值開(kāi)發(fā)商、集成開(kāi)發(fā)商和ERP最終用戶形成了企業(yè)應(yīng)用軟件的鏈條,他們承擔(dān)了不同的職責(zé),獲得不同的利益。ERP廠商集中精力開(kāi)發(fā)標(biāo)準(zhǔn)產(chǎn)品,負(fù)責(zé)提供功能強(qiáng)大的二次開(kāi)發(fā)平臺(tái)和集成開(kāi)發(fā)平臺(tái),為支持靈活的客戶化工作提供技術(shù)支持??蛻艋腥齻€(gè)級(jí)別,第一個(gè)級(jí)別是系統(tǒng)配置客戶化,ERP軟件支持通過(guò)配置用戶接口和業(yè)務(wù)操作來(lái)滿足客戶的業(yè)務(wù)要求;第二個(gè)級(jí)別是允許客戶修改,在軟件許可的情況下,把部分ERP軟件模塊的代碼開(kāi)放給用戶,ERP內(nèi)置的系統(tǒng)部件擁有特殊的代碼容器,容器可以大大簡(jiǎn)化對(duì)客戶修改代碼的管理、升級(jí)和測(cè)試;第三個(gè)級(jí)別是提供修改服務(wù),不用做很大的客戶化工作,ERP軟件就能滿足客戶的大部分需求。因?yàn)楠?dú)特的業(yè)務(wù)環(huán)境,客戶還是有個(gè)性化的需求,ERP軟件廠商提供開(kāi)發(fā)工具或開(kāi)發(fā)平臺(tái),充分利用客戶或增值開(kāi)發(fā)商的技術(shù)資源來(lái)實(shí)現(xiàn)客戶的個(gè)性要求,只要客戶化工作嚴(yán)格遵循ERP軟件的編程規(guī)范,產(chǎn)品兼容性和集成就不是問(wèn)題。用友不遺余力,一直想探索好的科學(xué)的客戶化工程,曾經(jīng)開(kāi)放過(guò)部分U8的源代碼,因?yàn)闊o(wú)法或不能很好的升級(jí)客戶化產(chǎn)品,只好做罷。U8已經(jīng)能支持第一個(gè)級(jí)別的客戶化工程,通過(guò)參數(shù)配置可以滿足一部分客戶要求,但是,U8真正靈活的客戶化能力支持卻要體現(xiàn)在第三個(gè)級(jí)別,U8呈現(xiàn)給用戶的要是強(qiáng)大的二次開(kāi)發(fā)平臺(tái)。針對(duì)U870產(chǎn)品,我們已經(jīng)暴露了部分控件(比如:登錄控件、參照控件、打印控件、自定義報(bào)表控件、單據(jù)控件和憑證控件)的部分編程接口,我們也支持在U8門戶掛接二次開(kāi)發(fā)接點(diǎn)等。另外我們重拳推出了UAP開(kāi)發(fā)平臺(tái),它針對(duì)不同角色(客戶、實(shí)施、開(kāi)發(fā)、伙伴等)的人員提供了友好、穩(wěn)定、快速的開(kāi)發(fā)及實(shí)施平臺(tái),通過(guò)平臺(tái)技術(shù)使編碼人員得到最大的解放。希望通過(guò)此教程可以為不同角色的您提供最大能力的提升。第一篇:U8開(kāi)發(fā)模式介紹學(xué)習(xí)基礎(chǔ):學(xué)習(xí)此部分內(nèi)容要具備的基礎(chǔ)知識(shí);學(xué)習(xí)目的:學(xué)習(xí)完此部分內(nèi)容后要達(dá)到的目標(biāo);掌握重點(diǎn):此部分內(nèi)容的重點(diǎn)掌握對(duì)象;第一節(jié)U8開(kāi)發(fā)模式 介紹U8的開(kāi)發(fā)方法與步驟第二節(jié)U8二次開(kāi)發(fā)模式 總體介紹U8二次開(kāi)發(fā)模式分為UAP開(kāi)發(fā)和基于控件的U8二次開(kāi)發(fā)兩種;下面兩節(jié)分別介紹兩種不同開(kāi)發(fā)模式的優(yōu)缺點(diǎn)和應(yīng)用環(huán)境,為什么兩種模式都存在,在進(jìn)行二次開(kāi)發(fā)時(shí),如何根據(jù)具體情況選擇不同的開(kāi)發(fā)模式。2.1U8二次開(kāi)發(fā)2.2UAP開(kāi)發(fā)第二篇:U8二次開(kāi)發(fā)學(xué)習(xí)基礎(chǔ):學(xué)習(xí)此部分內(nèi)容要具備的基礎(chǔ)知識(shí);學(xué)習(xí)目的:學(xué)習(xí)完此部分內(nèi)容后要達(dá)到的目標(biāo);掌握重點(diǎn):此部分內(nèi)容的重點(diǎn)掌握對(duì)象;第一節(jié):應(yīng)用程序框架簡(jiǎn)介第二節(jié):門戶開(kāi)發(fā)與集成一、功能概述如何使伙伴二次開(kāi)發(fā)的程序很好地和U8產(chǎn)品集成在一起?需要滿足什么條件的程序才能和門戶集成?如何開(kāi)發(fā)一個(gè)滿足這個(gè)條件的程序?本文將為您解答這些問(wèn)題。二、名詞解釋2.1菜單調(diào)整工具功能:調(diào)整菜單位置;新增、修改、刪除菜單(除U8系統(tǒng)菜單外)。菜單調(diào)整工具在UAP中,通過(guò)菜單“工具->菜單調(diào)整工具”進(jìn)入。2.2idt.dll文件位置:在U8安裝目錄的Portal目錄里。該文件其實(shí)是一個(gè)xml文件,可以用任何文本編輯器打開(kāi)。其內(nèi)容描述了雙擊每個(gè)末級(jí)菜單項(xiàng)目時(shí)需要調(diào)用的物理程序。三、如何開(kāi)發(fā)可與門戶集成的VBdll3.1代碼修改3.1.1引用工程UFPortalProxyInterface3.1.2相關(guān)代碼修改1、Login接口(PrivateFunctionILoginable_Login()AsBoolean),不管彈出的是模式窗體還是非模式窗體,此接口在成功登錄后須返回True,而且要保證登錄成功后,第二次調(diào)用此接口時(shí)也要返回True。只有在登錄失敗后方可返回False。也就是說(shuō)此接口返回值的含義是是否已經(jīng)成功登錄子系統(tǒng)。2、LogOff接口(PrivateFunctionILoginable_LogOff()AsBoolean),此接口的含義是執(zhí)行LogOff過(guò)程,如查成功使該子系統(tǒng)牌LogOff狀態(tài)返回True,否則返回False。也就是說(shuō),如果該子統(tǒng)還未登錄,則真接返回False就可以了。如果系統(tǒng)處于已經(jīng)登錄的過(guò)程,則執(zhí)行業(yè)務(wù)組原有所需的LogOff過(guò)程,如果執(zhí)行功能,正確LogOff了子系統(tǒng),則返回True,否則返回False。如果在實(shí)際程序中沒(méi)有此過(guò)程,則直接返回True即可。3、CallFunction接口(PrivateFunctionILoginable_CallFunction()AsBoolean)。如果861產(chǎn)品沒(méi)有子系統(tǒng)登錄過(guò)程的產(chǎn)品,此值須返回True.4、對(duì)于顯示模式窗體的產(chǎn)品,如果已經(jīng)申請(qǐng)了任務(wù),請(qǐng)?jiān)谀J酱绑w退出時(shí)自已清除任務(wù)。PrivateFunctionILoginable_Login()AsBooleanIfg_bLogined=TrueThen ILoginable_Login=True ExitFunctionEndIfIf((Notg_businessIsNothing)Andg_bLogined=False)Then DimoLoginTmpAsObject SetoLoginTmp=g_business.GetVBclsLogin() Setg_oLogin=oLoginTmp ILoginable_Login=Login(oLoginTmp) If(ILoginable_Login=True)Then g_bLogined=True EndIfElse ILoginable_Login=Notg_businessIsNothingEndIfEndFunctionPrivateFunctionILoginable_LogOff()AsBooleanIf(g_bLogined=True)Then ILoginable_LogOff=LogOff() If(ILoginable_LogOff=True)Theng_bLogined=FalseEndIfElse ILoginable_LogOff=TrueEndIfEndFunction增加Business屬性PublicPropertyGetBusiness()AsObject SetBusiness=g_businessPublicPropertySetBusiness(busValAsObject)Setg_business=busValEndProperty增加全局變量新建一module文件,并加入如下全局變量:Publicg_businessAsObjectPublicg_bLoginedAsBoolean3.1.3三種窗體修改嵌入Portal的窗體文件原來(lái)有MdiExtender控件的窗體要嵌入Portal的窗體修改方法:調(diào)用CreateFormEnv方法調(diào)用ShowForm方法每個(gè)窗體都要有方法ExitForm修改第一次彈出就是模態(tài)的窗體由嵌入Portal的窗體彈出的窗體,3.1.4UFToolbar的修改在Settoolbar之前將g_business傳入在Settoolbar之前設(shè)置Tag信息設(shè)置微軟Toolbar每個(gè)Button的Tag信息調(diào)用CreatePortalToolbarTag方法設(shè)置示例button.Tag=CreatePortalToolbarTag(“ICON_NEW”,”ICOMMON”,”PortalToolbar”)注意:嚴(yán)禁創(chuàng)建多次.1圖標(biāo).2分組常用(ICOMMON):如打開(kāi)、保存等編輯(IEDIT):如增行、拷貝單元格等處理(IDEAL):如審核、分單等查詢(ISEARCH):如過(guò)濾、聯(lián)查等.3類型在窗體的Unload事件中加入SetUFToolbar1.Business=Nothing3.1.5中間過(guò)程判斷窗體是否打開(kāi)FormIsOpened設(shè)置并激活某個(gè)已經(jīng)存在的窗體在顯示過(guò)程中(窗體已經(jīng)顯示)關(guān)閉自身窗體CloseForm3.2常見(jiàn)問(wèn)題程序已經(jīng)修改,雙擊門戶節(jié)點(diǎn)時(shí)沒(méi)有反應(yīng),調(diào)用狀態(tài)進(jìn)不了VB程序;未正確修改clsProductFacade文件;窗體已經(jīng)嵌入到Portal中,但Toolbar的相關(guān)信息未轉(zhuǎn)移到門戶的工具欄上;是否正確設(shè)置了每個(gè)Button的Tag信息;3.3參考3.3.1ShowForm顯示嵌入Portal的窗體PublicFunctionShowForm(ByValobjAsObject,ByValSubIDAsString,ByValsKeyAsString,OptionalmodalableAsBoolean=False,OptionalDockToProtalAsBoolean=True,OptionalByValvfdAsObject)AsStringobj:Form對(duì)象;SubID:子產(chǎn)品號(hào);sKey:Key,注意不能是form的Hwnd,在窗體的生命周期中,此值必須唯一;modalable:該窗體是否為Model窗口;DockToProtal:是否要嵌入到Portal中;vfd:由CreateFormEnv對(duì)象的返回對(duì)象;3.3.2CreateFormEnvsKey:Key,注意不能是form的Hwnd,在窗體的生命周期中,此值必須唯一;formObj:Form對(duì)象3.3.3CloseForm關(guān)閉一個(gè)已經(jīng)打開(kāi)的窗體PublicFunctionCloseForm(ByValsKeyAsString,ByValobjAsObject)sKey:Key,注意不能是form的Hwnd,在窗體的生命周期中,此值必須唯一 obj:Form對(duì)象。3.3.4FormIsOpened判斷某個(gè)Key值的窗體是否已經(jīng)打開(kāi)PublicFunctionFormIsOpened(ByValsKeyAsString)sKey:Key,注意不能是form的Hwnd,在窗體的生命周期中,此值必須唯一;3.3.5CreatePortalToolbarTagImage按鈕的圖片actionSet分組toolbarType分組Toolbar的類型3.3.6SetFormActive使某個(gè)窗口成為當(dāng)前窗口PublicFunctionSetFormActive(ByValsKeyAsString,ByValobjAsObject)sKey:Key,注意不能是form的Hwnd,在窗體的生命周期中,此值必須唯一obj:Form對(duì)象3.4掛接菜單輸入VBDLL的完整類名稱。VBDLL時(shí),此項(xiàng)無(wú)效。這里選擇VBDLL如果控制功能權(quán)限,這里就選是如果是文件夾這里選否菜單的多語(yǔ)名稱,將在U8左樹(shù)菜單里顯示自動(dòng)生成。輸入VBDLL的完整類名稱。VBDLL時(shí),此項(xiàng)無(wú)效。這里選擇VBDLL如果控制功能權(quán)限,這里就選是如果是文件夾這里選否菜單的多語(yǔ)名稱,將在U8左樹(shù)菜單里顯示自動(dòng)生成。需要idt.dll中增加記錄:id=ua_menu.cmenu_idtype=0assembly=dll類名四、如何開(kāi)發(fā)可與門戶集成的.NETUserCusercontrol與門戶集成需要建立實(shí)現(xiàn)IUserControl接口的組件4.1通過(guò)建立一個(gè)項(xiàng)目類型為類庫(kù)的項(xiàng)目此處項(xiàng)目名稱為UFIDA.U8.UAP.Demo.ProjectManage4.2實(shí)現(xiàn)接口IUserControl在該項(xiàng)目中添加以下DLL的引用U8安裝路徑\UAP\RUNTIME\UFIDA.U8.Portal.UAPFacade.dllU8安裝路徑\UAP\Interop.U8LoginU8安裝路徑\uap\UFIDA.U8.Portal.Framework.dllU8安裝路徑\uap\UFIDA.U8.Portal.Proxy.dllU8安裝路徑.Windows.Form.dllU8安裝路徑\uap\UFIDA.U8.Portal.Common.dll然后實(shí)現(xiàn)接口IuserControl:IUserControl接口有三個(gè)方法:1.2.1ControlCreateControl(U8Login.clsLoginlogin,stringMenuID,stringParamters);功能描述:該方法創(chuàng)建要顯示的usercontrol參數(shù)描述:loginu8登陸對(duì)象,該對(duì)象不能轉(zhuǎn)換成u8Login.clsLoginClass.MenuID:打開(kāi)的菜單IDParamters菜單的參數(shù)描述,它是一個(gè)XML字符串其定義格式如下:<propertytype="IUserControl"id=””dllpath=”二次開(kāi)發(fā)的DLL路徑”classname=”二次開(kāi)發(fā)的命名空間加類名”><parameters/></property>dllpath:dll的路徑,要用u8soft的相對(duì)路徑,最好放在uap目錄下;id:UserContrl唯一標(biāo)識(shí),其值自定;type:屬性值必須為"IUserControl",區(qū)分大小寫;parameters:需要給程序(UserControl)傳送的數(shù)據(jù),格式自定。返回值要顯示的usercontrol用法:要在門戶中顯示自定義的窗體,必須在此函數(shù)內(nèi)實(shí)例化一個(gè)從control繼承過(guò)來(lái)的對(duì)象,并且返回該對(duì)象1.2.2VoucherAction[]CreateToolbar(U8Login.clsLoginlogin);功能描述:在u8門戶上創(chuàng)建Toolbar對(duì)象參數(shù)描述:login當(dāng)前的u8登陸對(duì)象返回值toolbar對(duì)象數(shù)組VoucherAction對(duì)象是一個(gè)toolbarbutton的描述其用法如下其參數(shù)描述如下:publicVoucherAction(stringtext,stringtoolTip,boolisSystemButton,boolisHavePopedom,stringid,IActionDelegatedele,VoucherActionTypetypeName,intsortNo,stringparentKey,stringauthID);Text:button的名稱toolTip:提示名稱isSystemButton:是否系統(tǒng)按鈕isHavePopedom:是否需要權(quán)限控制id:toobarbutton的ID,該ID不允許重復(fù),如果重復(fù)則后添加的對(duì)象無(wú)效dele:action的代理對(duì)象,在該代理內(nèi)實(shí)現(xiàn)toolbar的具體操作typeName:toolbarbutton共分四種類型,類型相同的toolbarbutton顯示在同一組中sortNo:排序號(hào)parentKey:父鍵,如果沒(méi)有則為nullauthID:權(quán)限ID用法://定義toolbar返回對(duì)象UFIDA.U8.Portal.UAPFacade.VoucherAction[]actions=newVoucherAction[2];//定義toolbar的處理事件UserActionDelegateactionDelegate=newUserActionDelegate();//實(shí)例化toolbarbutton對(duì)象actions[0]=newVoucherAction("確定","",false,false,"btnOK",actionDelegate,VoucherActionType.Normal,1,null,null);actions[0]=newVoucherAction("取消","",false,false,"btnCancel",actionDelegate,VoucherActionType.Normal,1,null,null);//返回要顯示的toolbarreturnactions;1.2.3boolIUserControl.CloseEvent()功能描述:usercontrol的關(guān)閉事件參數(shù)描述:返回值是否關(guān)閉當(dāng)前窗體,如果是true則關(guān)閉否則保持當(dāng)前狀態(tài)4.3編譯該控件輸出DLL編譯出的DLL推薦拷貝到u8soft\uap\runtime目錄下4.4替換文件替換文件:,替換到U8安裝目錄\UAP\RUNTIME下。3.5示例源程序代碼示例源程序:。3.6掛接菜單.NETUsercontrol時(shí),此項(xiàng)無(wú)效。這里選擇.NETUsercontrol如果控制功能權(quán)限,這里就選是如果是文件夾這里選否菜單的多語(yǔ)名稱,將在U8左樹(shù)菜單里顯示輸入,只能由字母和數(shù)字組成。.NETUsercontrol時(shí),此項(xiàng)無(wú)效。這里選擇.NETUsercontrol如果控制功能權(quán)限,這里就選是如果是文件夾這里選否菜單的多語(yǔ)名稱,將在U8左樹(shù)菜單里顯示輸入,只能由字母和數(shù)字組成。形如形如<propertytype="IUserControl"id=””dllpath=”二次開(kāi)發(fā)的DLL路徑”classname=”二次開(kāi)發(fā)的命名空間加類名”><parameters/></property>五、可執(zhí)行文件(EXE)如何掛接到門戶這里輸入EXE文件的路徑,是一個(gè)相對(duì)于U8安裝路徑的相對(duì)路徑,舉例,U8安裝在E:\U8Soft,這里設(shè)置為.\EAI\U8EAI.exe,表示E:\U8Soft\EAI\U8EAI.exe。EXE時(shí),參數(shù)無(wú)效這里選擇EXE如果控制功能權(quán)限,這里就選是如果是文件夾這里選否菜單的多語(yǔ)名稱,將在U8左樹(shù)菜單里顯示這里輸入EXE文件的路徑,是一個(gè)相對(duì)于U8安裝路徑的相對(duì)路徑,舉例,U8安裝在E:\U8Soft,這里設(shè)置為.\EAI\U8EAI.exe,表示E:\U8Soft\EAI\U8EAI.exe。EXE時(shí),參數(shù)無(wú)效這里選擇EXE如果控制功能權(quán)限,這里就選是如果是文件夾這里選否菜單的多語(yǔ)名稱,將在U8左樹(shù)菜單里顯示自動(dòng)生成自動(dòng)生成菜單的多語(yǔ)名稱,將在U8左樹(shù)菜單里顯示如果是文件夾這里選否如果控制功能權(quán)限,這里就選是這里選擇EXEEXE時(shí),參數(shù)無(wú)效這里輸入EXE文件的路徑,是一個(gè)相對(duì)于U8安裝路徑的相對(duì)路徑,舉例,U8安裝在E:\U8Soft,這里設(shè)置為.\EAI\U8EAI.exe,表示E:\U8Soft\EAI\U8EAI.exe。六、UAP表單和UAP列表如何掛接到門戶形如<propertycardnum="UAPTrain_0009"type="voucher"/>的字符串,這里UAPTrain_0009為表單編號(hào);UAP表單時(shí),此項(xiàng)無(wú)效。這里選擇UAP表單如果控制功能權(quán)限,這里就選是形如<propertycardnum="UAPTrain_0009"type="voucher"/>的字符串,這里UAPTrain_0009為表單編號(hào);UAP表單時(shí),此項(xiàng)無(wú)效。這里選擇UAP表單如果控制功能權(quán)限,這里就選是如果是文件夾這里選否菜單的多語(yǔ)名稱,將在U8左樹(shù)菜單里顯示輸入,只能由字母和數(shù)字組成。這里選擇UAP表單如果控制功能權(quán)限,這里就選是如果是文件夾這里選否菜單的多語(yǔ)名稱,將在U8左樹(shù)菜單里顯示輸入,只能由字母和數(shù)字組成。這里選擇UAP表單如果控制功能權(quán)限,這里就選是如果是文件夾這里選否菜單的多語(yǔ)名稱,將在U8左樹(shù)菜單里顯示輸入,只能由字母和數(shù)字組成。形如<propertytype="List形如<propertytype="List"cardnum="UAPTrain_0009"><UFGeneralListid="eea90b20-4a2b-4149-8d00-820818dcd38f"/></property>的字符串,這里UAPTrain_0009為表單編號(hào);eea90b20-4a2b-4149-8d00-820818dcd38f為表單列表IDUAP列表時(shí),此項(xiàng)無(wú)效。七、如何不使用菜單調(diào)整工具增加和修改菜單7.1相關(guān)表結(jié)構(gòu)7.1.1UA_Menu表結(jié)構(gòu)字段名數(shù)據(jù)類型含義AutoIDuid自動(dòng)編號(hào)cMenu_IdString菜單編號(hào),自動(dòng)產(chǎn)生,不可修改cMenu_NameString菜單名稱,輸入cMenu_EngString程序類型cSub_IdString模塊標(biāo)識(shí),程序處理IGradeInt16級(jí)次,根據(jù)當(dāng)前選中菜單程序自動(dòng)處理cSupMenu_IdString上級(jí)菜單編號(hào),根據(jù)當(dāng)前選中菜單程序自動(dòng)處理bEndGradeBoolean是否末級(jí),輸入,cAuth_IdString功能權(quán)限編號(hào),程序內(nèi)部處理,控制權(quán)限時(shí)有效(cAuth_Id=cMenu_Id)。iOrderInt32顯示順序號(hào),程序處理iImgIndexInt32圖標(biāo)索引號(hào),暫不用ParamtersString參數(shù),輸入,只有末級(jí)菜單才允許錄入?yún)?shù)DependsString依賴,暫不用FlagInt標(biāo)志,暫不用7.1.2UFMenu_Business_Lang表結(jié)構(gòu)(菜單的多語(yǔ)表)字段名數(shù)據(jù)類型含義MenuId菜單標(biāo)識(shí),對(duì)應(yīng)UA_Menu表的cMenu_Id值Caption菜單顯示名稱(簡(jiǎn)體中文名稱顯示的是UA_Menu表的cMenu_Name值)LocaleId語(yǔ)言區(qū)域ZH-CN――簡(jiǎn)體中文ZH-TW――繁體中文EN-US――英文7.2各種程序類型的增加方法7.2.1 VBDLLUA_Menu:ua_menu.cmenu_id=“UA”+順序號(hào)ua_menu.csub_id=nullua_menu.Paramters=nullUA_Menu.cMenu_Eng=’0需要idt.dll中增加記錄:id=ua_menu.cmenu_idtype=0assembly=dll類名7.2.2EXEUA_Menu:ua_menu.cmenu_id=“UA”+順序號(hào)ua_menu.csub_id=nullua_menu.Paramters=nullUA_Menu.cMenu_Eng=’1需要idt.dll中增加記錄:id=ua_menu.cmenu_idtype=1assembly=EXE文件路徑(相對(duì)于U8安裝的相對(duì)路徑)7.2.3UAP表單處理UAP增加的菜單無(wú)意識(shí)被刪除需要手工添加,或者,需要UAP菜單掛接不同位置。UA_Menu:ua_menu.cmenu_id=“UA”+順序號(hào)ua_menu.csub_id=’UA’ua_menu.Paramters=形如<propertycardnum=”UAPTrain_0009”type=”voucher”/>的字符串,這里UAPTrain_0009為表單編號(hào);UA_Menu.cMenu_Eng=’2不需要在idt.dll中增加記錄。7.2.4 UAP處理UAP增加的菜單無(wú)意識(shí)被刪除需要手工添加,或者,需要UAP菜單掛接不同位置。UA_Menu:ua_menu.cmenu_id=“UA”+順序號(hào)ua_menu.csub_id=’UA’ua_menu.Paramters=形如<propertytype=”List”cardnum=”UAPTrain_0009”><UFGeneralListid=”eea90b20-4a2b-4149-8d00-820818dcd38f”/></property>的字符串,這里UAPTrain_0009為表單編號(hào);eea90b20-4a2b-4149-8d00-820818dcd38f為表單列表ID;UA_Menu.cMenu_Eng=’3不需要在idt.dll中增加記錄。7.2.5.NetUserControl系統(tǒng)定義一個(gè)接口IUserControl,只有兩個(gè)屬性:U8Login對(duì)象和菜單對(duì)象(對(duì)應(yīng)的菜單行數(shù)據(jù))。如果.NetUserControl需要U8Login對(duì)象必須實(shí)現(xiàn)這個(gè)接口,否則可以不實(shí)現(xiàn)這個(gè)接口。ua_menu.cmenu_id=“UA”+順序號(hào)ua_menu.csub_id=’UA’ua_menu.Paramters=<propertytype="IUserControl"id=””dllpath=”二次開(kāi)發(fā)的DLL路徑”classname=”二次開(kāi)發(fā)的命名空間加類名”><parameters/></property>dllpath:dll的路徑,要用u8soft的相對(duì)路徑,最好放在uap目錄下;id:UserContrl唯一標(biāo)識(shí),其值自定;type:屬性值必須為"IUserControl",區(qū)分大小寫;parameters:需要給程序(UserControl)傳送的數(shù)據(jù),格式自定。UA_Menu.cMenu_Eng=’4不需要在idt.dll中增加記錄。八、應(yīng)用習(xí)題簡(jiǎn)述菜單調(diào)整工具的作用;開(kāi)發(fā)一個(gè)VBDLL并掛接到U8門戶上;第三節(jié):界面設(shè)計(jì)與開(kāi)發(fā)3.1檔案開(kāi)發(fā)功能介紹:能實(shí)現(xiàn)的功能詳細(xì)介紹;使用環(huán)境:開(kāi)發(fā)環(huán)境的介紹;使用說(shuō)明:開(kāi)發(fā)過(guò)程詳細(xì)說(shuō)明;應(yīng)用案例:開(kāi)發(fā)案例,詳細(xì)說(shuō)明實(shí)現(xiàn)的功能及實(shí)現(xiàn)的過(guò)程;應(yīng)用技巧:開(kāi)發(fā)技巧介紹;應(yīng)用習(xí)題:2至3道習(xí)題;相關(guān)控件:參照/列表/MDIExtend3.2單據(jù)開(kāi)發(fā)功能介紹:?jiǎn)螕?jù)控件為實(shí)現(xiàn)各業(yè)務(wù)產(chǎn)品組中各種單據(jù)的數(shù)據(jù)處理,該控件實(shí)現(xiàn)數(shù)據(jù)分層處理。單據(jù)控件以O(shè)CX提供給各個(gè)業(yè)務(wù)模塊使用(包括WEB組)業(yè)務(wù)組在使用前初始化單據(jù)控件,最終業(yè)務(wù)模塊從單據(jù)控件取得數(shù)據(jù)按各自的業(yè)務(wù)規(guī)則檢查合法后保存。 U870版本的單據(jù)控件有以下新特性:支持Web 對(duì)后臺(tái)數(shù)據(jù)實(shí)現(xiàn)分層處理支持各種模版樣式支持無(wú)表體單據(jù)樣式支持無(wú)表頭單據(jù)樣式數(shù)據(jù)更新?tīng)顟B(tài)智能標(biāo)記支持表頭、表體附件表體匯總表體批量修改使用環(huán)境:支持環(huán)境為U870以上版本使用說(shuō)明:在VB中引用單據(jù)控件在VB中點(diǎn)擊主菜單中的“工程->部件”或者直接按Ctrl+T熱鍵,隨后出現(xiàn)的“部件”對(duì)話框中選中“UAPVoucherControl85”,然后點(diǎn)擊“確定”,左側(cè)的工具條中將出現(xiàn)該控件的圖標(biāo),如下圖所示:OCX文件的方法函數(shù)圖例如下:?jiǎn)螕?jù)控件的主要屬性BackColor,BackColorBkg,BackColorFixed,BackColorSel,BackColorTotal屬性:返回或設(shè)置單據(jù)控件不同的背景顏色語(yǔ)法:voucher.BackColor[=color]

voucher.BackColorBkg[=color]

voucher.BackColorFixed[=color]

voucher.BackColorSel[=color]voucher.BackColorTotal[=color] 參數(shù)說(shuō)明:參數(shù)描述Voucher單據(jù)控件名稱Color一個(gè)指定的顏色值 備注: 下圖為Voucher屬性設(shè)置效果 Example: Note:如要設(shè)置這些屬性值,必需在設(shè)置完模板數(shù)據(jù)后再設(shè)置才能起作用。PrivateSubForm_Load()Timer1.Interval=500EndSubPrivateSubTimer1_Timer()Voucher1.BackColorBkg=QBColor(Rnd*15)Voucher1.BackColorFixed=QBColor(Rnd*10)Voucher1.BackColorSel=QBColor(Rnd*10)Voucher1.BackColorSelTotal=QBColor(Rnd*10)EndSub Col,Row,ColSel,RowSel屬性返回或設(shè)置當(dāng)前表體活動(dòng)單元格的行列坐標(biāo),此屬性在設(shè)計(jì)狀態(tài)不可用。語(yǔ)法:voucher.Col[=number]

voucher.Row[=number]參數(shù)說(shuō)明: 參數(shù)描述Voucher單據(jù)控件名稱number一個(gè)指定的指定活動(dòng)單元行列的數(shù)值備注: 使用Col、Row屬性來(lái)指定活動(dòng)單元格,Col>0,Row>0,Col<Cols,Row<Rows。 設(shè)置完Col,Row值后ColSel和RowSel將自動(dòng)變更成Col,Row,更說(shuō)細(xì)的說(shuō)明。 請(qǐng)參照MSDN Examples: PublicSubCommand_Click() Voucher.Col=50 Voucher.Row=20 Debug.PrintVoucher1.Col Debug.PrintVoucher1.Row Debug.PrintVoucher1.ColSel Debug.PrintVoucher1.RowSel EndSubTitleCaption,TitleFont,TitleForeColor,ToolTipText返回或設(shè)置標(biāo)題各項(xiàng)屬性值語(yǔ)法:voucher.TitleCaption[=string]

voucher.TitleFont[=font]

voucher.TitleForeColor[=color]

voucher.ToolTipText[=string] 參數(shù)說(shuō)明:參數(shù)描述Voucher單據(jù)控件名稱Color一個(gè)指定的顏色值string字符串表達(dá)式Font指定的字體對(duì)象 注: 這些屬性的賦值操作必須在setTemplateData方法后,否則你的操作將會(huì)得不到處理(因?yàn)槟愕倪@些操作會(huì)被setTemplateData方法覆蓋)。Left,Top,Width,Height屬性返回或設(shè)置單據(jù)控件大小屬性語(yǔ)法:voucher.Left[=value]

voucher.Top[=value]

voucher.Widht[=value]

voucher.Height[=value] 參數(shù)說(shuō)明:參數(shù)描述Voucher單據(jù)控件名稱value數(shù)值備注: 在執(zhí)行完setTemplateData方法后,setTemplateData會(huì)按照單據(jù)設(shè)計(jì)設(shè)計(jì)的寬度和高度自動(dòng)設(shè)置Width和Height屬性。HeadText屬性 設(shè)置或返回表頭項(xiàng)目的值

語(yǔ)法: voucher.HeadText(Index)=[=string]

參數(shù)

描述

Voucher

單據(jù)控件名稱

Index下標(biāo),可以是數(shù)值,也可是關(guān)鍵字,用來(lái)標(biāo)識(shí)表頭項(xiàng)目

string

字符串或數(shù)值

Example: PublicSubCommand1-_Click() Voucher.headText(1)=‘用友軟件公司’ Voucher.headText(‘cCusName’)=‘用友軟件公司’cCusName=‘客戶名稱’ EndSub 備注: 如果你要設(shè)置的項(xiàng)目(Index)不存在,單據(jù)控件將會(huì)產(chǎn)生一個(gè)錯(cuò)誤,具體的錯(cuò)誤信息可以通過(guò)GetLastError方法得到。

BodyText屬性 設(shè)置或返回表體項(xiàng)目的值

語(yǔ)法: voucher.HeadText(RowasLong,ColasVariant)=[=string] 參數(shù)

描述

Voucher

單據(jù)控件名稱

Row數(shù)值,表示表體里的哪一行

Col

可變體,可以是列,也可用關(guān)鍵值來(lái)表示表體里的哪一行。

String字符串表達(dá)式

Example: PublicSubCommand1-_Click() Voucher.bodyText(1,1)=‘用友軟件公司’ Voucher.headText(1,‘cCusName’)=‘用友軟件公司’cCusName=‘客戶名稱’ EndSubBodyColWidth屬性 設(shè)置表體指定行的寬度

語(yǔ)法: voucher.BodyColWidth(ColasVariant)=[=value] 參數(shù)

描述

Voucher

單據(jù)控件名稱

Col

可變體,可以是列,也可用關(guān)鍵值來(lái)表示表體里的哪一行。

value數(shù)值

Example: PublicSubCommand1-_Click() Voucher.bodyColWidth(1)=300 Voucher.bodyColWidth(‘cCusName’)=300,cCusName=‘客 戶名稱’ EndSub 備注: 有些屬性用來(lái)給程序員動(dòng)態(tài)的控制單據(jù)表體的某一列顯示。請(qǐng)?jiān)谧鼍唧w的操作時(shí),考慮用戶權(quán)限的問(wèn)題。BodyMaxRows返回或設(shè)置表體可輸入的最大行數(shù)

語(yǔ)法: voucher.BodyMaxRows[=Value]參數(shù)

描述

PublicSubCommand1- _Click()Voucher.bodymaxRows=2 表體最多可以輸入2行數(shù)據(jù) EndSubBodyRows返回當(dāng)前表行數(shù)據(jù)行的總數(shù)(只包括有數(shù)據(jù)的行)語(yǔ)法:voucher.BodyRows[=Value]參數(shù)

描述

PublicSubCommand1-_Click() Debug.printvoucher.bodyRowsEndSub

m_sPrintEntir設(shè)置打印環(huán)境變量

語(yǔ)法: voucher.m_sPrintEntir=[string] 在單據(jù)打印的時(shí)候用戶可以將單前打印機(jī)設(shè)置保存起來(lái),以備下次打印的時(shí)候不需要重新設(shè)置。備注: 該屬性只為Web模式設(shè)置,C/S結(jié)構(gòu)另(詳見(jiàn)DEMO)。

MultiLineSelect返回或設(shè)置是否是多行選擇

語(yǔ)法: voucher.MultiLineSelect=[Boolean]備注: 在表體參照的時(shí)候如果你需要參照返回多條數(shù)據(jù)時(shí),在你參照前請(qǐng)記得先把該屬性設(shè)置為TRUE,參照完成后記得一定要把改屬性設(shè)置成FALSE (如果不進(jìn)行處理,有可能會(huì)產(chǎn)生單據(jù)單據(jù)不能離開(kāi)焦點(diǎn)的BUG)。單據(jù)控件的主要方法setTemplateData方法功能:設(shè)置單據(jù)控件的模版數(shù)據(jù)記錄集,在第一次初始化單據(jù)控件時(shí),必須設(shè)置單據(jù)模版數(shù)據(jù)。語(yǔ)法: PublicSubsetTemplateData(rstTemplateAsRecordset)參數(shù): rstTemplate:單據(jù)模版數(shù)據(jù)結(jié)果記錄集

備注:本操作是將單據(jù)設(shè)計(jì)好的結(jié)果集傳遞給單據(jù)控件進(jìn)行顯示界面初始化處理。包括定位、模版信息。該數(shù)據(jù)結(jié)果集是能過(guò)調(diào)用單據(jù)控件后臺(tái)服務(wù)來(lái)獲得的例子: PublicSubCommand1-_Click() Dimo asObject DimrstasRecordset Seto=CreateObject(‘UFVoucherServer85.clsVoucherTemplate’) IfoisnothingthenExitSub ‘如果創(chuàng)建對(duì)象Fail,則退出 Setrst=o.GetTemplateData2(數(shù)據(jù)庫(kù)連接(Connection),單據(jù)(CardNumber),模版號(hào)(VT_ID)) Voucher.SetTemplateData(rst) ‘設(shè)置模版 EndSub

AddLine方法PublicSubAddLine(optionalnRowasLong,OptionsLineasString=’‘OptionRelativeasAddLineState=ALSLast)DelLine方法

功能: 單據(jù)表體刪除指定的行,如果沒(méi)指定行刪除當(dāng)前所在的行。語(yǔ)法: PublicSubDelLine(OptionalByvalnRowasLong)參數(shù):nRow為單據(jù)表體的具體行號(hào)返回值:無(wú)

AddNew方法功能:增加一張新單據(jù)

語(yǔ)法:PublicSubAddNew(ByvaleModeasAddNewMode)參數(shù):eMode為新增時(shí)的增加模式返回值:無(wú)

備注: 增加一張新單據(jù),實(shí)際上就是將表頭對(duì)象(Header)和表體對(duì)象(Body)中各項(xiàng)目的值據(jù)增加模式清空。在增加一張新的單據(jù)時(shí),應(yīng)先調(diào)用。GetVoucherDataXML方法功能:得到單據(jù)數(shù)據(jù)DOM對(duì)象語(yǔ)法: PublicSubgetVoucherData(oDomheadAsVariant,oDomBodyAsVariant)參數(shù): rstHeader: 表頭數(shù)據(jù)DOM對(duì)象(MSXML.DOMDocument對(duì)象) rstBody: 表體數(shù)據(jù)DOM對(duì)象(MSXML.DOMDocument對(duì)象)返回值:無(wú)

備注:更新數(shù)據(jù)(從控件生成DOMDocumetn對(duì)象)

GetLineDom方法功能:返回當(dāng)前或指定行的Dom對(duì)象(得到表體一行的全部Dom數(shù)據(jù)對(duì)象)語(yǔ)法: PublicFunctionGetLineDom(OptionalByValnRowAsLong=0)AsDOMDocument

參數(shù): nRow指定的行Index,缺省為0,即取當(dāng)有Mouse所在行的數(shù)據(jù)返回值:DOMDocument對(duì)象PrintVoucherEx方法功能:打印單據(jù)數(shù)據(jù)

語(yǔ)法: PublicFunctionPrintVoucherEx(ByValrsTemplateAsVariant,ByValrsFieldAsVariant,OptionalByValbShowPrintDlgAsBoolean=True)AsLong參數(shù):rsTemplate[IN]記錄集 單據(jù)模版數(shù)據(jù)(必需通過(guò)單據(jù)后臺(tái)服務(wù)提供)rsField [IN]記錄集固定文本數(shù)據(jù)(必需通過(guò)單據(jù)后臺(tái)服務(wù)提供)bShowPrintViewDlg[IN]布爾值是否顯示打印對(duì)話框返回值: 如果打印成功返回0,否則返回非0,具體的錯(cuò)誤信息請(qǐng)參考打印控件(ErrorTable)例子:PublicSubCommand1-_Click() Dimo asObject DimrsTemplateasRecordset DimrsField asRecordset Seto=CreateObject(‘UFVoucherServer85.clsVoucherTemplate’) IfoisnothingthenExitSub ‘如果創(chuàng)建對(duì)象Fail,則退出 SetrsTemplate=o.GetTemplateData2(數(shù)據(jù)庫(kù)連接(Connection),單據(jù)(CardNumber),模版號(hào)(VT_ID)) SetrsField=o.GetFixedData(數(shù)據(jù)庫(kù)連接字符串(String),模版號(hào)(VT_ID)) Callvoucher.PrintVoucherEx(rsTemplate,rsField,True) ’顯示打印對(duì)話框EndSubExportToFile方法

功能:導(dǎo)出單據(jù)單據(jù)數(shù)據(jù)到指定的文件

語(yǔ)法: PublicFunctionExportToFile(ByValrsTemplateAsVariant,ByValrsFieldAsVariant)AsBoolean參數(shù):rsTemplate[IN]記錄集 單據(jù)模版數(shù)據(jù)(必需通過(guò)單據(jù)后臺(tái)服務(wù)提供)rsField [IN]記錄集固定文本數(shù)據(jù)(必需通過(guò)單據(jù)后臺(tái)服務(wù)提供)返回值: 如果導(dǎo)出成功返回0,否則返回非0,具體的錯(cuò)誤信息請(qǐng)參考打印控件(ErrorTable)。例子:PublicSubCommand1-_Click() Dimo asObject DimrsTemplateasRecordset DimrsField asRecordset Seto=CreateObject(‘UFVoucherServer85.clsVoucherTemplate’) IfoisnothingthenExitSub ’如果創(chuàng)建對(duì)象Fail,則退出 SetrsTemplate=o.GetTemplateData2(數(shù)據(jù)庫(kù)連接(Connection),單據(jù)(CardNumber),模版號(hào)(VT_ID)) SetrsField=o.GetFixedData(數(shù)據(jù)庫(kù)連接字符串(String),模版號(hào)(VT_ID)) Callvoucher.ExportToFile(rsTemplate,rsField) ‘導(dǎo)出文件EndSub

單據(jù)控件的主要事件BodyBrowUser當(dāng)用戶單擊表體參照時(shí)產(chǎn)生此事件語(yǔ)法:PrivateSubvoucher_bodyBrowUser(ByValrowAsLong, ByValcolAsLong,sRetAsvariant)EndSub參數(shù)說(shuō)明: 參數(shù)描述Voucher單據(jù)控件名稱row下標(biāo)col下標(biāo)(可用關(guān)鍵字)sRet返回值BodyCellCheckBodyCellCheckWeb表體數(shù)據(jù)發(fā)生該變,需要數(shù)據(jù)檢查時(shí)發(fā)生此事件 語(yǔ)法:PrivateSubVoucher_bodyCellCheck(RetValueAsString,bChangedAsVoucherControl85.CheckRet,ByValrAsLong,ByValcAsLong)EndSub參數(shù)說(shuō)明: 參數(shù)描述Voucher單據(jù)控件名稱RetValue返回當(dāng)前單元的值bChanged數(shù)據(jù)檢測(cè)是否居功row下標(biāo)col下標(biāo)(可用關(guān)鍵字)Click當(dāng)用戶在單據(jù)控件上單擊時(shí)產(chǎn)生此事件

DblClick當(dāng)用戶在單據(jù)控件上雙擊時(shí)產(chǎn)生此事件

KeyDown,KeyPress,KeyUp,MouseDown,MouseMove,MouseUp 鼠標(biāo)及鍵盤響應(yīng)事件

BillNumberChecksucceed在設(shè)置單據(jù)編號(hào)規(guī)則后,如果當(dāng)前單據(jù)滿足了編號(hào)規(guī)則后,將會(huì)激活當(dāng)前事件

AddNewLineEvent當(dāng)調(diào)用AddLine方法時(shí),該事件將會(huì)產(chǎn)生應(yīng)用案例:表頭附件1)

Toolbar增加按鈕附件 按鈕響應(yīng)事件代碼 Me.ctlVoucher1.SelectFile() 需要根據(jù)自己?jiǎn)螕?jù)的狀態(tài)設(shè)置按鈕的狀態(tài) 2)

單據(jù)保存部分 在原來(lái)的單據(jù)內(nèi)容保存完成以后,事務(wù)提交以前增減保存附件的代碼 DimcnnAsNewADODB.Connectioncnn.Openm_strConnectDimErrDescAsStringDimblnsaveAccAsBooleanDimstrXmlAsStringstrXml=ctlVoucher1.GetAccessoriesInfo(ErrDesc)IfErrDesc<>""ThenMsgBoxErrDescEndIf Dimm_oServerasUFVoucherServer85.clsVoucherTemplateDimobjDocAsNewMSXML2.DOMDocument30CallobjDoc.loadXML(strXml)CallobjDoc.documentElement.setAttribute("VoucherTypeID","88")CallobjDoc.documentElement.setAttribute("VoucherID","01")strXml=objDoc.xml setobjDoc=nothingCallm_oServer.SaveAccessories(strXml,cnn,ErrDesc)IfErrDesc<>""ThenMsgBoxErrDescEndIf備注:藍(lán)字部分如果不是新增,則可以不寫 VoucherTypeID如果沒(méi)有更改(即和單據(jù)模版一致)也可以不用設(shè)置VoucherID表示單據(jù)主鍵值的value,可以是組合2005001{#}003,順序和前面的vchtblPrimarykeyNames順序一致如果是單據(jù)刪除,Callm_oServer.SaveAccessories(strXml,cnn,ErrDesc)刪除附件strXML="<DataAccessoriesChanged='1'Deleted='1'VoucherTypeID='88'VoucherID='001'/>"3)

初始化模版代碼部分'設(shè)置單據(jù)數(shù)據(jù)源對(duì)象單據(jù)數(shù)據(jù)源對(duì)象是單據(jù)的數(shù)據(jù)訪問(wèn)組件,web版使用的時(shí)候需要自己實(shí)現(xiàn)這個(gè)接口Dimm_oDataSourceAsObjectSetm_oDataSource=CreateObject("IDataSource.DefaultDataSource")Ifm_oDataSourceIsNothingThenMsgBox"設(shè)置單據(jù)數(shù)據(jù)源對(duì)象Fail!",vbCritical,"渣昫"EndIfm_oDataSource.SetLoginm_oLoginSetctlVoucher1.SetDataSource=m_oDataSource表體附件1:870單據(jù)格式設(shè)計(jì)器中可以設(shè)置字段的參照類型,需要指定一個(gè)文本字段的參照類型為附件 2:需要配置應(yīng)用服務(wù)器的文件服務(wù)器設(shè)置。 3:如果需要顯示的支持該功能,需要在單據(jù)模板中增加一條文本類型,參照類型為附件的記錄表體定位1:Toolbar增加按鈕定位 2:按鈕響應(yīng)事件代碼 ctlVoucher1.ShowFindDlg 需要根據(jù)自己?jiǎn)螕?jù)的狀態(tài)設(shè)置按鈕的狀態(tài)表體固定行 單據(jù)控件設(shè)計(jì)態(tài)時(shí)設(shè)置ShowFIxColer=true表體排序 單據(jù)控件設(shè)計(jì)態(tài)時(shí)設(shè)置ShowSorter=true表體匯總1:Toolbar增加按鈕匯總2: 按鈕響應(yīng)事件代碼CallctlVoucher1.SHowAggregateSetupDlg 需要根據(jù)自己?jiǎn)螕?jù)的狀態(tài)設(shè)置按鈕的狀態(tài),只有在查看狀態(tài)可用。表體批改Me.ctlVoucher1.ShowBatchModify()開(kāi)發(fā)案例,詳細(xì)說(shuō)明實(shí)現(xiàn)的功能及實(shí)現(xiàn)的過(guò)程;應(yīng)用技巧:?jiǎn)螕?jù)控件是一個(gè)標(biāo)準(zhǔn)的ocx控件,使用的過(guò)程符合標(biāo)準(zhǔn)ocx的方法。應(yīng)用習(xí)題:習(xí)題1 實(shí)現(xiàn)表體匯總功能習(xí)題2 實(shí)現(xiàn)表頭附件功能答案參考代碼實(shí)例 光盤samplecode下VoucherDemo3.3打印控件功能介紹:XMLPrintControl是一個(gè)獨(dú)立的,但同時(shí)又具有一定針對(duì)性的報(bào)表打印控件,它根據(jù)指定的XML格式文件(或字符串)對(duì)指定的XML數(shù)據(jù)文件(或字符串)進(jìn)行格式化輸出,本身基本不做任何數(shù)據(jù)的處理,不涉及任何業(yè)務(wù)邏輯,也不與任何數(shù)據(jù)庫(kù)進(jìn)行交互。也就是說(shuō),一旦你對(duì)控件指定了源格式XML和數(shù)據(jù)XML,那么通過(guò)控件得到的打印預(yù)覽輸出和打印輸出也就唯一確定了。從這一點(diǎn)來(lái)看,本控件類似于IE、Mozilla等瀏覽器對(duì)純HTML文本進(jìn)行的解釋。XMLPrintControl的格式化輸出依賴與上述的兩個(gè)XML文件(或字符串,下同,以后不再注明),任何報(bào)表或者其他類似文件,如果希望使用本控件來(lái)打印的話,都必須先將格式和數(shù)據(jù)分別組織成滿足本控件預(yù)定義格式的XML文件。XMLPrintControl以ocx的形式封裝,是一個(gè)進(jìn)程內(nèi)的COMServer,并支持嵌入到WEB中使用。使用環(huán)境:支持870以上開(kāi)發(fā)環(huán)境使用說(shuō)明:在VB中引用打印控件在VB中點(diǎn)擊主菜單中的“工程->部件”或者直接按Ctrl+T熱鍵,隨后出現(xiàn)的“部件”對(duì)話框中選中“PrintControlActiveXControlmodule”,然后點(diǎn)擊“確定”,左側(cè)的工具條中將出現(xiàn)該控件的圖標(biāo),如下圖所示:如下圖:需要注意的是,基于特定的理由,本控件取消了“運(yùn)行時(shí)不顯示”的特性,因此,為了防止運(yùn)行時(shí)顯示出控件本身的窗口,應(yīng)該在控件的屬性窗口中設(shè)定Visible為FALSE,如圖: OCX文件的方法函數(shù)圖例如下:打印控件的主要功能:綁定綁定XML文件頁(yè)面設(shè)置打印預(yù)覽打印輸出到文件型數(shù)據(jù)庫(kù)

打印控件方法介紹SetDataStyleXMLPageSetupPrintPreviewDoPrint

ExportToFilePrintExAboutBox

SetDataStyleXML為控件綁定格式和數(shù)據(jù)XML文件(或字符串)。本方法是使用其他方法的先決條件(AboutBox方法除外)。語(yǔ)法:

longSetDataStyleXML( VARIANTvarDataXML, booleanbDataIsFile, VARIANTvarStyleXML, booleanbStyleIsFile, VARIANTvarModuleID);SetDataStyleXML參數(shù):

varDataXML 字符串 指明數(shù)據(jù)XML,含義由bDataIsFile決定。 bDataIsFile 布爾值 如果為True,表示varDataXML為數(shù)據(jù)XML文件的絕對(duì)路徑或者相對(duì)路徑;如果為False,表示varDataXML為數(shù)據(jù)XML字符串本身。 varStyleXML 字符串指明格式XML,含義由bStyleIsFile決定。 bStyleIsFile 布爾值 如果為True,表示varStyleXML為格式XML文件的絕對(duì)路徑或者相對(duì)路徑;如果為False,表示varStyleXML為格式XML字符串本身。 varModuleID 字符串 模版ID。 本參數(shù)可由調(diào)用者自由定義,用做開(kāi)始打印時(shí)的打印任務(wù)名,可以為空,但建議使用有意義的字符串標(biāo)識(shí)打印任務(wù)。

返回值:

長(zhǎng)整形,0表示成功,非0表示錯(cuò)誤調(diào)用控件的SetDataStyleXML方法的示例代碼如下:OptionExplicitPrivateSubbtnBind_Click()DimlRetAsLongDimsDataAsStringDimsStyleAsStringDimsModuleIdAsStringsData=txtData.TextsStyle=txtStyle.TextsModuleId=txtModuleID.TextlRet=printer.SetDataStyleXML(sData,True,sStyle,True,sModuleId)MsgBoxlRetEndSub如果使用XML文件作為輸入(上例中),那么sData和sStyle為文件的路徑(絕對(duì)路徑和相對(duì)路徑均可),如果以XML字符串作為輸入,那么sData和sStyle為XML字符串本身,同時(shí)第2和第四個(gè)參數(shù)應(yīng)為False。sModuleId為單據(jù)的模版名(注:本控件使用該字符串作為打印任務(wù)名,并為使用者提供一個(gè)區(qū)別各類格式XML的標(biāo)志)。關(guān)于本方法的詳細(xì)說(shuō)明請(qǐng)參考“XMLPrintControl控件參考”的“XMLPrintControl方法參考”部分。ExportToFile將XML的內(nèi)容輸出到其他格式的文件(一般指文件型數(shù)據(jù)庫(kù)),支持輸出到rep文件(需要PrnExtension.DLL)。

語(yǔ)法:

longExportToFile(longlJobId,VARIANTvarColType, VARIANTvarColSize, VARIANTvarColName, VARIANTvarTempDBPath);參數(shù):

lJobId 長(zhǎng)整形 指定需要輸出的任務(wù)ID,即XML數(shù)據(jù)文件包含多個(gè)任務(wù)時(shí)的第幾個(gè)任務(wù),第一個(gè)任務(wù)ID為0。

varColType 字符串 該參數(shù)指定輸出時(shí)各個(gè)字段的類型,各個(gè)字段類型之間用英文逗號(hào)隔開(kāi),組成字段類型字符串,并且中間不能有空格。例如:(10,10,5,5)表示總共有4個(gè)字段,各字段類型分別為:字符串(dbText)、字符串、貨幣(dbCurrency)和貨幣。 varColSize 字符串 該參數(shù)指定各個(gè)字段的大小,同樣,各個(gè)字段大小之間用英文逗號(hào)?,?隔開(kāi)(中間不允許有空格),組成字段大小字符串,并與字段類型字符串相對(duì)應(yīng)。對(duì)應(yīng)于前例,字段大小字符串為(50,50,8,8),表示第一個(gè)文本型字段的大小為50字節(jié),第二個(gè)文本型字段大小也為50字節(jié),后兩個(gè)貨幣金額型字段大小均為8個(gè)字節(jié)。 varColName 字符串 該參數(shù)指定各個(gè)字段的字段名用于輸出。各個(gè)字段名之間用英文逗號(hào)隔開(kāi)(中間不能有空格,否則空格將被認(rèn)為是字段名的一部分),組成字段名字符串。綁定了格式和數(shù)據(jù)之后,可以使用ExportToFile方法將數(shù)據(jù)中表體的內(nèi)容導(dǎo)出到系統(tǒng)中已安裝有ISAM驅(qū)動(dòng)的文件型數(shù)據(jù)庫(kù)中,例如dBase,F(xiàn)oxpro,Excel,HTML文件,Text文件,Lotus,Paradox,Access等,如以下示例代碼:PrivateSubbtnExport_Click()DimsTypeListAsStringDimsSizeListAsStringDimiAsLongDimeAsLongi=0sTypeList="10,10,5,5"sSizeList="50,50,8,8"e=printer.ExportToFile(i,sTypeList,sSizeList,"","")MsgBoxeEndSub該方法將XML數(shù)據(jù)文件中表體的內(nèi)容根據(jù)指定的字段類型,字段大小和字段名(如果沒(méi)有提供字段名,將使用表格頭固定行最后一行的各列名作為字段名)導(dǎo)出到用戶指定的其他格式文件。該方法將彈出一個(gè)文件保存對(duì)話框,在這個(gè)對(duì)話框中,用戶可以選擇導(dǎo)出文件類型并填寫文件名,如下圖所示:PageSetup綁定完數(shù)據(jù)和格式之后可以使用PageSetup方法進(jìn)行頁(yè)面設(shè)置,如以下示例代碼:PrivateSubbtnPageSetup_Click()printer.PageSetupEndSub以上方法將顯示如下所示的對(duì)話框: 在本對(duì)話框中可以設(shè)置各種打印格式。關(guān)于本方法的詳細(xì)說(shuō)明請(qǐng)參考“XMLPrintControl控件參考”的“XMLPrintControl方法參考”部分。PrintPreview綁定了格式和數(shù)據(jù)以后,可以使用PrintPreview方法查看打印預(yù)覽,如以下示例代碼:PrivateSubbtnPreview_Click()printer.PrintPreviewEndSub該方法將顯示一個(gè)打

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論