金蝶Bos基礎(chǔ)二次開發(fā)_第1頁(yè)
金蝶Bos基礎(chǔ)二次開發(fā)_第2頁(yè)
金蝶Bos基礎(chǔ)二次開發(fā)_第3頁(yè)
金蝶Bos基礎(chǔ)二次開發(fā)_第4頁(yè)
金蝶Bos基礎(chǔ)二次開發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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)介

1、參考學(xué)習(xí)1 常用二次開發(fā)方法1.1 登陸界面圖片修改1)在中間層方式:在中間層 KDCOM 目錄新建兩個(gè)圖片文件:LOGIN_PIC_LOG_TOP.bmp適 用 于10.4版 本+PT007378,或V11版 本 及 以 后 版 本LOGIN_PIC_LOG_BOTTOM.bmp適 用 于10.4版 本+PT007378,或 V11 版 本 及 以 后 版 本MAIN_PIC_LOG_RIGHT_FLOWCHART.bmp,適 用 于10.4版 本+PT007378, 或V11 版 本MAIN_PIC_LOG_LEFT_FLOWCHART.bmp,適 用 于10.4版 本+PT007378,

2、或V11版 本MAIN_PIC_LOG_LEFT.bmp,適用于10.4版本+PT007378,或V11版本MAIN_PIC_LOG_RIGHT.bmp,適用于10.4版本+PT007378,或 V11 版本該方式不需要每個(gè)客戶端機(jī)器安裝圖片,登陸時(shí)自動(dòng)顯示。2)客戶端方式:直接修改以下圖片文件,適用于 V12 及以后版本:F:ProgramFilesKingdeeK3ERPk3StandardKDSYSTEMKEE_imgLogo.bmp3)企業(yè) LOG 方式在中間層新建一個(gè)文件夾,命名為 eptlogo 并將其設(shè)置為只讀共享,然后制作兩個(gè)BMP 格式的圖片,分別作為 logo 和背景圖,大

3、小為 145180,分別命名為enterprise_logo.bmp,enterprise_bg.bmp,在客戶端的主控臺(tái)編輯器啟用企業(yè)界面即可。1.2 主控臺(tái)無(wú)界面登陸適用版本:(K/3V11.0.1+PT016290 或 V12 以上版本)1)域用戶登錄:提供命令行參數(shù):KDMain.exe-LoginWin|賬套代碼|機(jī)構(gòu)密碼,無(wú)界面直接登錄到 K/3 系統(tǒng)主控臺(tái)2)命名用戶登錄:提供命令行參數(shù) KDMain.exe-LoginUser|賬套代碼|機(jī)構(gòu)密碼|用戶名|用戶密碼,無(wú)界面直接登錄 K/3 系統(tǒng)主控臺(tái)3)參數(shù)之間的分隔符默認(rèn)為”|”,由于用戶密碼可能包含特殊字符,用戶可以通過(guò)修改

4、注冊(cè)表改變分隔符,注冊(cè)表參數(shù):路徑:HKEY_CURRENT_USERSoftWareKingDeeK3鍵:LoginParm4)獲取賬套代碼的接口組件名:KdLogin.dll組件部署:客戶端Kdsystem%程序名:KdLogin.clsLogin方法名:GetAccountList參數(shù)描述GetAccountList()AsADODB.Recordset參數(shù):無(wú)返回值類型:ADODB.Recordset,包含字段:參考學(xué)習(xí)序號(hào)字段名描述1FAcctID賬套 ID2FAcctNumber賬套代碼3FAcctName賬套名稱5)測(cè)試登錄參數(shù)設(shè)置是否成功的接口組件名:KdLogin.dll組件

5、部署:客戶端%Kdsystem%程序名:KdLogin.NoUILogin方法名:LoginUser參數(shù)描述PublicFunctionLoginUser(ByValsLoginTypeAsString_,ByValsAcctNumberAsString_,ByValsOrgPassAsString_,ByValsUserNameAsString_,ByValsUserPassAsString)AsString序號(hào)字段名參數(shù)類型描述1 sLoginTypeString登錄方式:-LoginWin 域用戶身份登錄-LoginUser 命名用戶身份登錄2 sAcctNumberString賬套代碼

6、3 sOrgPassString組織機(jī)構(gòu)密碼例如:賬套代碼為:10.02,則為組織機(jī)構(gòu) 10 的密碼.4 sUserNameString用戶名,域用戶身份登錄時(shí)為空5 sUserPassString用戶密碼,域用戶身份登錄時(shí)為空返回值類型:String,空字符串代表登錄成功,否則登陸不成功,內(nèi)容為登錄不成功的原因。1.3 基礎(chǔ)資料的圖片讀寫1.顯示圖片1.1)從數(shù)據(jù)庫(kù)取得圖片的二進(jìn)制數(shù)據(jù)DimbytFile()AsByte根據(jù)取數(shù)SQL成記錄集:selectFFilefromt_AccessorybytFile=rs.Fields(FFILE)1.2)保存到文件DimsmFileAsadodb

7、.Stream參考學(xué)習(xí)SetsmFile=Newadodb.StreamsmFile.Type=adTypeBinarysmFile.OpensmFile.WritebytFilesmFile.SaveToFilem_sTempFileName,adSaveCreateOverWrite1.3)解壓縮DimozipAsObjectSetozip=CreateObject(KDZIP.ZIP)ozip.DeCompressm_sTempFileName,sFileName1.4)顯示出來(lái)SetImg.Picture=LoadPicture(sFileName)1.保存圖片2.1)對(duì)圖片進(jìn)行壓縮,

8、壓縮強(qiáng)度為6Setdzip=CreateObject(KDZIP.ZIP)dzip.CompressApp.Path&1.bmp,App.Path&1.zip,62.2)讀取文件Setmstream=NewADODB.Streammstream.Type=adTypeBinarymstream.Openmstream.LoadFromFileApp.Path&1.zipDimvarFile()AsBytevarFile=mstream.Read()2.3)修正字節(jié)數(shù),必須是偶數(shù)個(gè)(從0到奇數(shù))lFileSize=UBound(varFile)+1-(UBound(var

9、File)Mod2)ReDimPreservevarFile(0TolFileSize)AsByte2.4)把壓縮后的圖片導(dǎo)入到t_accessory表中con=PersistSecurityInfo=True;Provider=SQLOLEDB.1;UserID=sa;Password=;DataSource=?;InitialCatalog=AIS20091116094820sql1=select*fromt_accessorywhereFID=1Setrs=NewADODB.Recordsetrs.Opensqll,con,adOpenDynamic,adLockOptimisticrs

10、.Fields(FFile).AppendChunkvarFile()rs.Update參考學(xué)習(xí)1.4K/3 自定義認(rèn)證開發(fā)方法目的:提供用戶可定義的K/3主控臺(tái)登陸方法,用戶可以按自己的方式驗(yàn)證,例如:實(shí)現(xiàn)指紋認(rèn)證,聲音認(rèn)證。適用丁K/3V10.3及以后版本。:1.新建VB工程:SelfIdentity.VBP2.添加一個(gè)窗體Form.frm3.添加一個(gè)模塊Module1.mod包含以下定義:Publicg_strAcctNameAsStringPublicg_UserNameAsStringPublicg_UserPassWordAsString4.添加類ClsIdentity.cls包含

11、以下兩個(gè)接口PublicFunctionSeftClientSign(strAcctNameAsString,UserNameAsString,UserPassWordAsString,ErrMsgAsString)AsLongIfUserName=g_UserNameAndg_strAcctName=strAcctNameAndg_UserPassWord=Trim(UserPassWord)ThenSeftClientSign=1EndIfEndFunctionPublicFunctionGetSelfPassWord(ByValstrAcctNameAsString,ByRefUserP

12、assWordAsString)AsString彈出指紋任證界面,直到GetSelfPassWord返回值不為空Forml.ShowvbModalGetSelfPassWord=testUserPassWord=123g_strAcctName=strAcctName參考學(xué)習(xí)g_UserName=GetSelfPassWordg_UserPassWord=UserPassWordEndFunction5.在賬套管理賬套參數(shù)設(shè)置,選擇“自定義認(rèn)證方式”6.在用戶管理,設(shè)置用戶test屆性為“自定義認(rèn)證方式”7.以test用戶登陸。1.5 基礎(chǔ)資料插件化開發(fā)基礎(chǔ)資料-插件接口由 K3BaseDat

13、aEvents.dll 提供:1、概述要使用插件,需要寫一個(gè)插件的 DLL,弓 I 用 K3BaseDataEvents.dll,處理其提供的接口即可。編寫好插件 DLL 后,需要在數(shù)據(jù)庫(kù)表中增加該插件的注冊(cè)記錄,如下:表名:t_ThirdPartyComponent 關(guān)鍵字段及意義:FTypelD:101FTypeDetaillD:1-19,=2000,核算項(xiàng)目類別 IDFComponentName:客戶端插件類的 ProgIDFComponentSrv:服務(wù)端插件類的 ProgID-未實(shí)現(xiàn) FDescription:描述注:其中 FTypeDetaillD 為 0 時(shí)表示該插件對(duì)所有核算項(xiàng)

14、目都有效,比如對(duì)所有核算項(xiàng)目指定統(tǒng)一的編碼規(guī)則、自定義某個(gè)通用行的名稱等。2、K3BaseDataEvents.ItemEvents類該類定義了核算項(xiàng)目編輯界面所有的事件。PublicEventAfterGridLoad()加載各字段后觸發(fā),可以在該事件中處理界面初始化、默認(rèn)編碼等等PublicEventGridChange(ByVallRowAsLong)某一行單元格值更新后觸發(fā)參考學(xué)習(xí)PublicEventEnterGrid(ByVallRowAsLong)焦點(diǎn)進(jìn)入某一行觸發(fā)-如判斷使用后不允許修改PublicEventOnPressF7(ByVallRowAsLong,ByRefRetC

15、olAsKDVBF.ReturnCollection,ByRefCancelAsBoolean)按 F7 時(shí)觸發(fā),可以在該事件中自己處理彈出 F7 操作PublicEventBeforeList(ByVallRowAsLong,ByRefstrSqlReturnAsString)彈出下拉列表前觸發(fā),用 strSqlReturn 返回查詢列表的 SQL 語(yǔ)句,要求包括 FNumber、FName筮主即一-rXoPublicEventBeforeSave(CancelAsBoolean)保存前觸發(fā)-自定義校驗(yàn)數(shù)據(jù)3、K3BaseDataEvents.ItemEditInterface類該類定義了對(duì)

16、核算項(xiàng)目編輯操作的一些屬性、接口和方法屬性PublicPropertyGetPropsString()AsString功能未公開(Reserved)PublicPropertyGetGrid()AsObject 功能未公開(Reserved)PublicPropertyGetItemObject()AsEBCGL.Item獲得當(dāng)前的核算項(xiàng)目對(duì)象,可以訪問(wèn)其屬性PublicPropertyGetItemClass()AsEBCGL.ItemClass獲取核算項(xiàng)目類別對(duì)象,如類別為物料PublicPropertyGetItemClassId()AsLong獲取核算項(xiàng)目類別 ID,如物料類別 ID

17、為 4PublicPropertyGetParentID()AsLong獲取核算項(xiàng)目上級(jí)組 ID,為 0 則沒有上級(jí)組PublicPropertyGetParentItemObject()AsEBCGL.Item獲取上級(jí)組對(duì)象,通過(guò)該對(duì)象可訪問(wèn)上級(jí)組代碼、名稱等屬性方法PublicFunctionGetRowNumber(FieldNameAsString)AsLong參考學(xué)習(xí)根據(jù)字段名稱查找行號(hào)。PublicFunctionGetRowFieldProp(ByVallRowAsLong)AsCustomProperty根據(jù)行號(hào)獲得字段屬性PublicSubSetRowFocus(ByVall

18、RowAsLong)設(shè)置焦點(diǎn)PublicSubSetRowLock(ByValRowAsLong)設(shè)置單元只讀。PublicSubSetRowUnLock(ByValRowAsLong)設(shè)置單元為缺省非只讀PublicSubSetRowNotNull(ByValRowAsLong)設(shè)置為必錄項(xiàng)PublicSubSetRowBeNull(ByValRowAsLong)設(shè)置為非必錄項(xiàng)PublicSubSetRowValue(ByValRowAsLong,OptionalNewValAsVariant=,OptionalNewIDAsVariant=0)設(shè)置行的值PublicFunctionRead

19、CellText(ByVallColAsLong,ByVallRowAsLong)AsString讀取 TextPublicFunctionReadID(ByValRowAsLong)AsLong讀取內(nèi)部 IDPublicFunctionReadValue(ByValRowAsLong)AsVariant讀取數(shù)據(jù)參考學(xué)習(xí)PublicFunctionGetAnyRecordset(ByValSQLAsString)AsADODB.Recordset保留的PublicFunctionIsItemInUsed()AsBoolean判斷該項(xiàng)目是否被使用-wScanPublicFunctionGetDe

20、cimalDigits(ByValdblValAsDouble)AsLong計(jì)算一個(gè)數(shù)值的小數(shù)位數(shù)PublicFunctionGetSystemProfileValue(ByValsCagegoryAsString,ByValsKeyAsString,OptionalByValsDefaultAsString=)AsString獲得系統(tǒng)參數(shù)信息PublicFunctionItemIsDetail()AsBoolean獲得該核算項(xiàng)目是否是明細(xì),還是上級(jí)組PublicSubSetRowCaption(ByVallRowAsLong,sCaptionAsString)設(shè)置行標(biāo)題4、K3BaseDat

21、aEvents.ItemEditInterface對(duì)象該對(duì)象不可直接創(chuàng)建,需由 K3BaseDataEvents.ItemEvents 的屬性獲得:PublicPropertyGetEditInterface()AsItemEditInterface5、插件編寫方法內(nèi)部引用,初始化,并實(shí)現(xiàn)事件接口即可,(請(qǐng)參考組件 K3BaseItemPlugin.dll 的實(shí)現(xiàn))步驟如下:a)新建 DLL 工程如 Test.dll,并引用插件類庫(kù) K3BaseItemPlugin.dllb)新建類如 MeterialPlug(物料插件)c)定義 WithEvents 的K3BaseDataEvents.It

22、emEvents對(duì)象,并處理其事件d)編寫接口函數(shù) PublicSubShow(ByValoEventsAsItemEvents)在該函數(shù)中初始化插件對(duì)象,必須的!e)可以使用K3BaseDataEvents.ItemEditInterface中提供的方法f)插件寫好后,編譯成 Test.dll,向數(shù)據(jù)庫(kù)表中插入數(shù)據(jù)注冊(cè)該插件即可,如下SQL:insertintot_ThirdPartyComponent參考學(xué)習(xí)g)測(cè)試、發(fā)布,物料-插件PrivateConstID_ITEMCLASSID=4物料PrivateWithEventsBaseItemEventsAsK3BaseDataEvents

23、.ItemEvents事件引擎Privatem_EditInterfaceAsK3BaseDataEvents.ItemEditInterfaceAPI接口該函數(shù)為接口函數(shù),調(diào)用該函數(shù)進(jìn)行初始化PublicSubShow(ByValoEventsAsItemEvents)IfoEvents.EditInterface.ItemClassIDID_ITEMCLASSIDThenExitSubSetBaseItemEvents=oEventsSetm_EditInterface=BaseItemEvents.EditInterfaceEndSuby*/*函數(shù)名稱:BaseItemEvents_Af

24、terGridLoad/*日期:2009-06-1114:18/*作者:wScan/*描述:數(shù)據(jù)加載后觸發(fā),方便根據(jù)系統(tǒng)參數(shù)做某些特殊控制/*參數(shù):/*/PrivateSubBaseItemEvents_AfterGridLoad()加載各字段后觸發(fā)EndSub6、實(shí)例:實(shí)現(xiàn)客戶需要功能的代碼a)定義插件對(duì)象并初始化(FTypeID,FTypeDetailIDvalues(101,4,1,Test.-101表示基礎(chǔ)資料,4表示物料-該sql表示當(dāng)編輯物料時(shí),加載所有核算項(xiàng)目編輯中都加載,只要將FIndex,FComponentName)MeterialPlug)Test.MeterialPlu

25、gFTypeDetailID插件,若要該插件在設(shè)為0即可參考學(xué)習(xí)PrivateWithEventsBaseItemEventsAsK3BaseDataEvents.ItemEvents事件引擎Privatem_EditInterfaceAsK3BaseDataEvents.ItemEditInterfaceAPI接口該函數(shù)為接口函數(shù),調(diào)用該函數(shù)進(jìn)行初始化PublicSubShow(ByValoEventsAsItemEvents)SetBaseItemEvents=oEventsEndSub參考學(xué)習(xí)Setm_EditInterface=BaseltemEvents.EditInterfaceb

26、)實(shí)現(xiàn):錄入物料的時(shí)候,不需要錄入上級(jí)組代碼。系統(tǒng)白動(dòng)帶出上級(jí)組代碼;核算項(xiàng)目錄入界面的前兩個(gè)字段是代碼和名稱, 對(duì)任何核算項(xiàng)目都是這樣。 客戶要求加上前綴, 如物料代碼,客戶代碼PrivateSubBaseItemEvents_AfterGridLoad()加載各字段后觸發(fā)DimlRowAsLongDimsParentNumberAsStringOnErrorGoToErr_HandlerlRow=m_EditInterface.GetRowNumber(FNumber)Ifm_EditInterface.ParentID0ThensParentNumber=m_EditInterface.

27、ParentItemObject.NumberEndIf自動(dòng)根據(jù)上級(jí)組編碼填入前綴Ifm_EditInterface.ItemObject.ItemID0Then新增ExitSubErrHandler:EndSubc)自動(dòng)編碼實(shí)現(xiàn)和上面原理一樣,指定一個(gè)規(guī)則,自動(dòng)生成代碼,并鎖定不允許修改即可。=0AndmEditInterface.ParentIDmEditInterface.SetRowValuelRow,sParentNumber&.EndIf設(shè)置個(gè)性化的行標(biāo)題,如m_EditInterface.SetRowCaption物料代碼、物料名稱等1,m_EditInterface.I

28、temClass.Name&代碼m_EditInterface.SetRowCaption2,m_EditInterface.ItemClass.Name&名稱m_EditInterface.SetRowCaption3,m_EditInterface.ItemClass.Name&全名參考學(xué)習(xí)d)客戶要求自動(dòng)帶出上級(jí)組代碼,由于按上面的方法上級(jí)組代碼仍然可以被修改掉,因此一種方法是:可以讓客戶只錄最后一級(jí)代碼,在保存前自動(dòng)加上其上級(jí)組代碼,處理 BeforeSave 事件即可。2.實(shí)現(xiàn)對(duì)物料的默認(rèn)倉(cāng)庫(kù)屬性的 F7 功能和下拉列表功能的進(jìn)一步過(guò)濾,使其只顯示包含“6.”

29、的倉(cāng)庫(kù),*拿*京*工章*章*X*X*KJt*HHt*k*點(diǎn)*直*集k*點(diǎn)*彳*K*|t*4t*t.!7 蛔裁湍 BajeTteiiimrtsBefareF?7*Effl:2010-04-00W:1S/HY 者:-am 冥 ihangJ甫避:梆偏鼬F?界面商g 囁:FT的送擇!rU-般是固定的,如昊又要某些敬據(jù),WiSitrtrFilterReturffi件盼自定義/*#!(*#*率*#*!|率*54*!(IK!|*hW*jt*h*#*4*/jrmteSu5fiaselmEvetMjBfireF?(BvValRw腥Lo也strFilt5rRe*trnAsStriri:)麗息JfefeF?界鬲蛾律

30、廿N摻俵制芨DimsField 加 StringDimIEAsLongDim1 敞 EBOGL.CustoJLFIopertyIE=m_EditInterface,RtadID(IRcw11Set11=m_EditIntftrface,GetRowFie1dProp(IRov)sFiild-X.SQLCclwJISelectCaseUCsei(sFieLd)C/白 IK 游 EFDMaiLtLH。指定痔宅 g】默認(rèn)倉(cāng)庫(kù)下校列表EndSelectSetE=NoihinjHndSub/忡*K*:f*蒙*代*5|*申11*軍*#牛!JiberLil/,6.tl.FJiberLil/,6.:Basel

31、:J_EforeLirt:2OO9-OH114:19irxpnini;匆出 F 柱網(wǎng)稀朗密、:ftrSqlRtturn卞松崎熟瞬行定義的河,SSselectFNm.ber.FUanefrom.削rSqlleVam=SelectIHaic,FIukberfroatiteiThereFhciCL瘀H=5andFJhBberLike航始參考學(xué)習(xí)SetS=NonhinjEndSub1.6 用戶權(quán)限管理插件化開發(fā)用戶權(quán)限管理-插件接口由 K3BaseDataEvents.dll 提供:組件位置:$/CodePublic/K3BASE/BaseData/client/K3BaseDataEvents/K3

32、BaseDataEvents.vbp 實(shí)例插件代碼位置:$/CodePublic/K3BASE/BaseData/client/K3BaseAccessPlugin/K3BaseAccessPlugin.vbp1.概述要使用插件,需要寫一個(gè)插件的 DLL,弓 I 用 K3BaseDataEvents.dll,處理其提供的接口即可。編寫好插件 DLL 后,需要在數(shù)據(jù)庫(kù)表中增加該插件的注冊(cè)記錄,如下:表名:t_ThirdPartyComponent 關(guān)鍵字段及意義:FTypelD:102FTypeDetaillD:從 1 開始,按照已有順序+1 定義。FComponentName:客戶端插件類的

33、ProgIDFComponentSrv:服務(wù)端插件類的 ProgID-未實(shí)現(xiàn) FDescription:描述2. K3BaseDataEvents.AccessEvents類該類定義了權(quán)限管理保存后的相關(guān)事件。PublicEventAfterSaveUserAccessGroup(ByValUserIDAsLong,vctPermDataAsVector,ByValUserNameAsString,ByValsMachineNameAsString,ByValsIPAddressAsString)用戶組權(quán)限保存后觸發(fā)PublicEventPublicEventAfterSaveUserAcce

34、ssDetail(ByValObjectTypeAsLong,_ByValObjectIDAsLong,_ByValvctSecurityInfoAsObject,_ByValUserIDAsLong,_ByValsUserNameAsString,_ByValsMachineNameAsString,_ByValsIPAddressAsString,_ByValvctDelAccessAsKFO.Vector)用戶明細(xì)權(quán)限保存后觸發(fā)3.插件編寫方法內(nèi)部引用,初始化,并實(shí)現(xiàn)事件接口即可,(請(qǐng)參考組件 K3BaseAccessPlugin.dll 的實(shí)現(xiàn))步驟如下:a)新建 DLL 工程如 K3

35、BaseAccessPlugin.dll,并引用插件類庫(kù) K3BaseDataEvents.dllb)新建類如 CBIAccessEdit(BI 模塊在權(quán)限修改后做相關(guān)處理的插件)參考學(xué)習(xí)c)定義 WithEvents 的K3BaseDataEvents.AccessEvents對(duì)象,并處理其事件d)編寫接口函數(shù) PublicSubShow(ByVaioEventsAsAccessEvents)在該函數(shù)中初始化插件對(duì)象,必須的!e)插件寫好后,編譯成 K3BaseAccessPlugin.dll,向數(shù)據(jù)庫(kù)表中插入數(shù)據(jù)注冊(cè)該插件即可,如下 SQL:insertintot_ThirdPartyCo

36、mponent(FTypeID,FTypeDetailID,FIndex,FComponentName)values(102,1,1,K3BaseAccessPlugin.CBIAccessEdit)-102表示權(quán)限修改的插件類對(duì)該類插件是固定的。在權(quán)限修改界面會(huì)加載所有定義成該類型的用戶插件-該sql表示當(dāng)修改用戶權(quán)限時(shí),加載K3BaseAccessPlugin.CBIAccessEdit插件。f)測(cè)試、發(fā)布PrivateConstID_TypeDetailID=1BI權(quán)限管理PrivateWithEventsm_BaseAccessEventsAsK3BaseDataEvents.Acce

37、ssEvents事件引擎該函數(shù)為接口函數(shù),調(diào)用該函數(shù)進(jìn)行初始化PublicSubShow(ByValoEventsAsAccessEvents)Setm_BaseAccessEvents=oEventsEndSub卸載例程PrivateSubClass_Terminate()Setm_BaseAccessEvents=NothingEndSub4.實(shí)例:實(shí)現(xiàn)客戶需要功能的代碼a)定義插件對(duì)象并初始化該函數(shù)為接口函數(shù),調(diào)用該函數(shù)進(jìn)行初始化PublicSubShow(ByValoEventsAsAccessEvents)Setm_BaseAccessEvents=oEventsEndSubb)實(shí)現(xiàn)

38、:權(quán)限修改完成后觸發(fā),請(qǐng)?jiān)谶@里填寫你的業(yè)務(wù)邏輯代碼PrivateSubm_BaseAccessEvents_AfterSaveUserAccessDetail(ByValObjectTypeAsLong,ByValObjectIDAsLong,ByValSecurityInfoAsObject,ByValUserIDAsLong,ByValsUserNameAsString,ByValsMachineNameAsString,ByValsIPAddressAsString,ByValvctDelAccessAsKFO.Vector)參考學(xué)習(xí)DimstrRetAsStringDimstrFacc

39、essTypeAsStringDimstrFaccessMaskAsStringIfNotSecurityInfoIsNothingThenstrFaccessType=SecurityInfo(1)(FaccessType)strFaccessMask=SecurityInfo(1)(FaccessMask)EndIfstrRet=ObjectType=&CStr(ObjectType)&vbCrLf&_ObjectID=&CStr(ObjectID)&vbCrLf&_FaccessType=&strFaccessType&vb

40、CrLf&_FaccessMask=&strFaccessMask&vbCrLf&_UserID=&CStr(UserID)&vbCrLfMsgBoxstrRetEndSub權(quán)限修改完成后觸發(fā),請(qǐng)?jiān)谶@里填寫你的業(yè)務(wù)邏輯代碼PrivateSubm_BaseAccessEvents_AfterSaveUserAccessGroup(ByValUserIDAsLong,vctPermDataAsKFO.Vector,ByValUserNameAsString,ByValsMachineNameAsString,ByValsIPAddressAsStri

41、ng)DimstrRetAsStringDimstrFaccessTypeAsStringDimstrFaccessMaskAsStringDimstrGroupIDAsStringDimstrSubSysAsStringIfNotvctPermDataIsNothingThenstrFaccessType=vctPermData(1)(Faccess)strFaccessMask=vctPermData(1)(FMask)strSubSys=vctPermData(1)(FSubSys)strGroupID=vctPermData(1)(FGroupID)EndIfstrRet=FSubSy

42、s=&CStr(strSubSys)&vbCrLf&_FGroupID=&CStr(strGroupID)&vbCrLf&_FaccessType=&strFaccessType&vbCrLf&_FaccessMask=&strFaccessMask&vbCrLf&UserID=&CStr(UserlD)&vbCrLfMsgBoxstrRetEndSub參考學(xué)習(xí)1.7 系統(tǒng)參數(shù)平臺(tái)插件化開發(fā)用戶權(quán)限管理-插件接口由 K3ParaConsoleEvents.dll 提供:組件位置:$/

43、CodePublic/K3BASE/K3ParameterConsole/Client/K3ParaConsoleEvents/K3ParaConsoleEvents.vbp實(shí)例插件代碼位置:1.概述要使用插件,需要寫一個(gè)插件的 DLL,弓 I 用 K3BaseDataEvents.dll,處理其提供的接口即可。編寫好插件 DLL 后,需要在數(shù)據(jù)庫(kù)表中增加該插件的注冊(cè)記錄,如下:表名:t_ThirdPartyComponent 關(guān)鍵字段及意義:FTypelD:103FTypeDetaillD:按照對(duì)應(yīng)功能的子系統(tǒng) ID*1000子系統(tǒng) ID*999 定義FComponentName:客戶端插件

44、類的 ProgIDFComponentSrv:服務(wù)端插件類的 ProgID-未實(shí)現(xiàn) FDescription:描述方法:PublicSubAddPara(dctParaasKFO.Dictionary)添加一個(gè)系統(tǒng)參數(shù),dctPara 是系統(tǒng)參數(shù)的詳細(xì)信息,包括參數(shù)類型,參數(shù)值,相關(guān)組件等信息。如果參數(shù)這中有一個(gè)名為vctParas”的值的話,系統(tǒng)會(huì)認(rèn)它是一個(gè) KFO.Vector,這時(shí)進(jìn)行批量添加系統(tǒng)參數(shù),該原則同樣適用于 SetPara 中的參數(shù)值。這樣可以盡量減少接口的數(shù)量。FParaType(0:CheckBox,1:TextBox,2:DropDownList,3:Button)FP

45、araValue(CheckBox 的值用 0,1 表示;TextBox 的值直接填充;DropDownList 的值用 chr(1)分隔顯示名稱和值,用 chr(2)分隔每個(gè) DropDownList 的值;Chr(3)分隔下拉列表的初始化值和當(dāng)前選中的值Button 的值用來(lái)填寫要調(diào)用組件的名稱,參數(shù)和要調(diào)用的方法,組件名稱也就是用 CreateObject 調(diào)用的“工程名.類名”,用 chr(1)分隔組件名稱,參數(shù)和要調(diào)用的方法,如有多個(gè)參數(shù),用 chr(2)分隔各個(gè)參數(shù),程序解析時(shí),首先用 chr(1)為分隔符分組,可以將參數(shù)分為一個(gè) ary(2),其中ary(0)=“工程名.類名”a

46、ry(1)=系統(tǒng)參數(shù)的集合(用 chr分隔)ary(2)=被調(diào)用的接門方法如果想觸發(fā) ClickButtonPara 事件而不想使用系統(tǒng)本身的方法調(diào)用相關(guān)組件請(qǐng)使用dct(FValue)=Chr(1)PublicSubSetCellFocus(ByVallRowAsLong,ByVallCol)參考學(xué)習(xí)設(shè)置單元獲得焦點(diǎn)焦點(diǎn)PublicSubSetCellLock(ByVallRowAsLong,ByVallCol,bLockAsBoolean)設(shè)置單元只讀屬性PublicFunctionGetCellText(ByVallRowAsLong,ByVallColAsLong)AsString讀取

47、某個(gè)單元格的 TextPublicFunctionSetCellText(ByVallRowAsLong,ByVallColAsLong,OptionalNewValAsVariant=)AsString設(shè)置某個(gè)單元格的 Text同步顯示值和真實(shí)的值PublicSubSyncParaValue(ByVallRowAsLong)得到當(dāng)前參數(shù)值,即調(diào)整后狀態(tài)值PublicFunctionGetParaValue(ByVallRowAsLong)AsString得到當(dāng)前參數(shù)值,即調(diào)整后狀態(tài)值PublicFunctionGetParaValueByParaID(ByValParaIDAsString)

48、AsString通過(guò) ParaID 獲取當(dāng)前參數(shù)所在的行號(hào),如果該參數(shù)沒有在界面上顯示,則返回-1PublicFunctionGetParaRowByParaID(ByValParaIDAsString)AsLong用子系統(tǒng) ID 重新刷新該子系統(tǒng)下的所有參數(shù)到界面PublicSubRefreshParaBySubSysID(ByVallSubSysIDAsLong)設(shè)置參數(shù)值PublicSubSetParaValue(ByVallRowAsLong,ByValdctDataAsKFO.Dictionary)PublicSubSetParaValueByParaID(ByValParaIDAs

49、String,ByValdctDataAsKFO.Dictionary)事件:修改系統(tǒng)參數(shù)值時(shí)觸發(fā),dctPara 為被修改參數(shù)的相關(guān)數(shù)據(jù),Cancel=True 取消修改PublicEventChangeParaValue(ByValdctParaAsKFO.Dictionary)系統(tǒng)參數(shù)平臺(tái)點(diǎn)保存,在更新數(shù)據(jù)庫(kù)值之前觸發(fā)PublicEventBeforeSave(ByRefCancelAsBoolean)系統(tǒng)參數(shù)平臺(tái)點(diǎn)保存,在修改數(shù)據(jù)庫(kù)值之后觸發(fā)PublicEventAfterSave()點(diǎn)擊按鈕類型的系統(tǒng)參數(shù)后觸發(fā)參考學(xué)習(xí)PublicEventClickButtonPara(ByVald

50、ctParaAsKFO.Dictionary)行業(yè)配置改變時(shí)觸發(fā)PublicEventTradeChange(ByValdctParaAsKFO.Dictionary)子系統(tǒng)改變時(shí)觸發(fā)PublicEventSubSysNodeClick(ByValdctParaAsKFO.Dictionary)點(diǎn)擊參數(shù)平臺(tái)PublicEventGridClick(ByValdctParaAsKFO.Dictionary)KeyDown 事件,F(xiàn)7 功能可以在該事件中實(shí)現(xiàn)PublicEventGridKeyDown(ByValdctParaAsKFO.Dictionary)點(diǎn)擊工具欄上的刷新 Refresh 時(shí)

51、觸發(fā)該事件事件PublicEventClickRefresh(ByValdctParaAsKFO.Dictionary)2.系統(tǒng)參數(shù)定義表參考學(xué)習(xí)t_ParaData系統(tǒng)參數(shù)平臺(tái)主表FID參數(shù)唯一IDintFSubSysID子系統(tǒng)IDintFParaID系統(tǒng)參數(shù)IDnvarchar(200)FParaType系統(tǒng)參數(shù)類型intFSysDefaultValue系統(tǒng)預(yù)設(shè)默認(rèn)值nvarchar(200)FTradeValue行業(yè)配置狀態(tài)值nvarchar(200)FValue調(diào)整后狀態(tài)值nvarchar(200)FSourceValueSQL系統(tǒng)參數(shù)來(lái)源SQLnvarchar(800)t_ParaT

52、radeData系統(tǒng)參數(shù)行業(yè)數(shù)據(jù)定義FID參數(shù)IDintFTradeID行業(yè)IDintFParaID參數(shù)字符型IDNVARCHAR(200)FTradeValue行業(yè)默認(rèn)參數(shù)值UndefiNVARCHAR(200)T_ParaData 表:FID:參數(shù) IDID 根據(jù)下面公式計(jì)算:子系統(tǒng) ID*10000ID*10000+9999目前該子系統(tǒng)已有最大編號(hào)+1FSubSysID:子系統(tǒng) IDFParaType:系統(tǒng)參數(shù)類型 0:CheckBox,1:TextBox,2:DropDownList,3:ButtonFParaID:系統(tǒng)參數(shù) ID可以用字符表示的參數(shù) ID,全局唯一方便業(yè)務(wù)組標(biāo)識(shí)參數(shù)FSysDefaultValue:系統(tǒng)預(yù)設(shè)默認(rèn)值FTradeValue:行業(yè)配置狀態(tài)值FValue:調(diào)整后狀態(tài)值FSourceValueSQL:參數(shù)值來(lái)源 SQL,定義了該字段后,保存系統(tǒng)參數(shù)時(shí)同時(shí)更新目標(biāo)字段,注意:業(yè)務(wù)組可以根據(jù)自己的情況填寫改語(yǔ)句來(lái)

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論