找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 10933|回复: 6

[求助] 二次开发T6 的clsProductFacade接口要怎么实现

[复制链接]
发表于 2011-7-31 01:05:17 | 显示全部楼层 |阅读模式
悬赏30金币已解决
求解释.二次开发T6 的clsProductFacade接口要怎么实现




  clsProductFacade接口中用于协调子窗体与原MDI主窗体的交互的SetFrmProxy函数总是
提示初始化插件失败!自己 乱整了一天都没结果呀.  哭呀.....百度了一天找到的VB  好难懂

                               
登录/注册后可看大图


                               
登录/注册后可看大图

百度来的VB Code
  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "clsProductFacade"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = True
  14. Option Explicit

  15. 'by lg070314 新增兼容u870的新接口调用
  16. '函数ILoginable_CallFunction
  17. '函数ILoginable_Login
  18. '属性Business
  19. '函数ILoginable_LogOff
  20. Implements UFPortalProxyInterface.ILoginable
  21. Private Function ILoginable_CallFunction(ByVal cMenuId As String, ByVal cMenuName As String, ByVal cAuthId As String, ByVal cCmdLine As String) As Object
  22.     Set ILoginable_CallFunction = CallFunction(cMenuId, cMenuName, cAuthId, cCmdLine)
  23. End Function
  24. Private Function ILoginable_Login() As Boolean
  25.     If ((Not g_business Is Nothing) And g_bLogined = False) Then
  26.         Dim oLoginTmp As Object
  27.         Set oLoginTmp = g_business.GetVBclsLogin()
  28.         Set m_login = oLoginTmp
  29.         ILoginable_Login = login(oLoginTmp)
  30.         Set ClsBill = New USERPCO.VoucherCO
  31.         ClsBill.IniLogin m_login, errStr
  32.         Set moLogin = ClsBill.login

  33.         If (ILoginable_Login = True) Then
  34.             g_bLogined = True
  35.         End If
  36.     Else
  37.         ILoginable_Login = True
  38.     End If
  39. End Function
  40. Public Property Get Business() As Object
  41.     Set Business = g_business
  42. End Property
  43. Public Property Set Business(busVal As Object)
  44.     Set g_business = busVal
  45.     Call Create_Odl_Cls
  46.     Set Old_ModuleCls.Business = busVal
  47. End Property
  48. Private Function ILoginable_LogOff() As Boolean
  49.     ILoginable_LogOff = True
  50.     If (g_bLogined = True) Then
  51.         ILoginable_LogOff = LogOff()
  52.         If (ILoginable_LogOff = True) Then
  53.             g_bLogined = False
  54.         End If
  55.     End If
  56. End Function
  57. '调用子窗体接口,与原左树菜单控件接口一致,gd_frmMain为原MDI主窗口对象
  58. '优先处理二次开发的功能节点,之后再处理系统原有的功能菜单'
  59. ' by 客户化开发中心 2006/03/01
  60. Public Function CallFunction(ByVal cMenuId As String, ByVal cMenuName As String, ByVal cAuthId As String, ByVal cCmdLine As String) As Object
  61.     g_FormbillShow = False
  62.     If bLoadmain = False Then
  63.         g_bLoginSuccess = False
  64.         Call Main
  65.         
  66.         If Screen.MousePointer = vbHourglass Then Screen.MousePointer = vbDefault
  67.         If g_bLoginSuccess = False Then Exit Function
  68.     End If
  69.     Select Case cMenuId
  70.         Case "MT0001", "MT0101", "MT0102", "MT0103", "MT0104", "MT0201", "MT0202", "MT0203", "MT0204", "MT0301", "MT0302", "MT0303", "MT0304", "MT0305", "MT0306"
  71.             gd_frmMain.m_oMenu_OnCommand cMenuId, cMenuName, cAuthId, cCmdLine
  72.         Case "MT0105" '材料出库生单
  73.             If objKCGL Is Nothing Then
  74.                 Set objKCGL = CreateObject("KCGLSQL.clsProductFacade")
  75.             End If
  76.             Dim gobjLogin As New U8Login.clsLogin
  77.             Set gobjLogin = m_login
  78.             gobjLogin.login ("ST")
  79.             Set objKCGL.Business = g_business
  80.             objKCGL.login gobjLogin
  81.             '==============jiang==============
  82.             objKCGL.CallFunction "ST020202", cMenuName, "ASM0401", cCmdLine
  83.         '安洽项目

  84.                    ''''''''''''''''''''cshu''''''''''''''''''''''''''''''
  85.     End Select
  86. End Function
  87. '设置命令行参数,用于自动登录,860不用
  88. Public Function SetCommandLine(ByVal cCmd As String) As Boolean
  89.     SetCommandLine = True
  90.     Old_ModuleCls.SetCommandLine cCmd
  91. End Function
  92. '发送注销消息,gd_frmMain为原MDI主窗口对象
  93. Public Function LogOff() As Boolean
  94.     g_bCanExit = False
  95.     If bLoadmain = True Then
  96.         Unload gd_frmMain
  97.         '卸载主窗体过程中需要关闭所有本产品打开的窗体,如果成功,将g_bCanExit设为True,否则,将g_bCanExit设为False。
  98.         LogOff = g_bCanExit
  99.     Else
  100.         LogOff = True
  101.         Exit Function
  102.     End If
  103.    
  104.     If LogOff = True Then
  105.         'LogOff = Old_ModuleCls.LogOff
  106.     End If

  107. End Function
  108. '设置窗口管理器对象,用于协调子窗体与原MDI主窗体的交互,g_oMainFrmProxy为门户主窗体代理全局对象
  109. Public Function SetFrmProxy(ByRef oFrmProxy As Object) As Boolean
  110. '    Call Create_Odl_Cls
  111.     Set g_oMainFrmProxy = oFrmProxy
  112.     Old_ModuleCls.SetFrmProxy oFrmProxy
  113. End Function
  114. '设置报表管理器,pRepLst为报表管理器全局对象
  115. Public Sub SetReportMgr(pRep As clsReportManager)
  116.     Set pRepLst = pRep
  117.     Old_ModuleCls.SetReportMgr pRep
  118. End Sub
  119. '设置报表系统接口,pRepSysinfo为报表系统接口全局对象
  120. Public Sub SetSysInterface(pSys As clsSysInterface)
  121.     Set pRepSysinfo = pSys
  122.     Old_ModuleCls.SetSysInterface pSys
  123. End Sub
  124. '设置Login对象,初始化产品,g_oLogin为产品使用的全局U8Login对象,此接口必须显式返回True或False
  125. Public Function login(oLogin As Object) As Boolean
  126.     Dim rst As ADODB.Recordset
  127. '    Call Create_Odl_Cls
  128.     Set m_login = oLogin
  129. '    Old_ModuleCls.login oLogin
  130.     Call Create_Report_Object
  131.     If cModeCode = "" Then
  132.         bLoadmain = False
  133.         login = True
  134.     End If
  135. End Function
  136. '扩展解决与外部接口问题
  137. Public Function SetUseModeName(sUseModeName As String) As Boolean
  138.     cModeCode = UCase(sUseModeName)
  139. End Function
  140. Public Function GetVouchForm() As Object
  141.    Set GetVouchForm = GetActiveForm()
  142. End Function
  143. '设置产品按钮风格,在门户中改变按钮风格时调用
  144. Public Function SetButtonStyle(ByVal cBtnStyle As String) As Boolean
  145.     'cBtnStyle为"T"表示文本按钮;cBtnStyle为"P"表示图片按钮
  146.     Call GetApperance
  147.     g_bTextButton = IIf(UCase(cBtnStyle) <> "P", True, False)
  148.     Call ChangeToolbar
  149.     SetButtonStyle = True
  150. End Function
  151. '将系统类传出供外部系统更改部分参数
  152. Public Function GetSASysInfObject() As Object
  153.     Set GetSASysInfObject = clsSAWeb
  154. End Function
  155. '是否实现加载了单据窗体
  156. Public Property Get bSuccessShowVoucher() As Boolean
  157.     bSuccessShowVoucher = g_FormbillShow
  158. End Property
  159. '读取配置文件
  160. 'by 客户化开发中心  2006/03/01
  161. Public Sub Create_Odl_Cls()
  162. On Error GoTo Err
  163.     'Old_ModuleCls_name表示要替换的原先的类名称
  164.     Old_ModuleCls_name = "UfSubSys.clsProductFacade"
  165.         
  166.     If Trim(Old_ModuleCls_name) <> "" Then
  167.         If Old_ModuleCls Is Nothing Then
  168.             Set Old_ModuleCls = CreateObject(Old_ModuleCls_name)
  169.         End If
  170.     End If
  171. Exit Sub
  172. Err:
  173.     MsgBox "类参数配置错误,请检查!" & Err.Description
  174. End Sub
  175. 'by ahzzd 20070323
  176. '处理870不能对老报表的支持
  177. '在这里初始化这两个对象
  178. 'Public pRepSysinfo  As clsSysInterface
  179. Public Sub Create_Report_Object()
  180.     On Error Resume Next
  181.     If pRepSysinfo Is Nothing Then
  182.       Dim adoConn As New ADODB.Connection
  183.       adoConn.ConnectionString = m_login.UfDbName
  184.       adoConn.Open
  185.       Set pRepSysinfo = New clsSysInterface
  186.       pRepSysinfo.systemId = m_login.cSub_Id
  187.       pRepSysinfo.ServerRunmode = False
  188.       Set pRepSysinfo.objU8Login = m_login
  189.       pRepSysinfo.InitInterFace m_login.cSub_Id, , , adoConn, , , , , , , , , m_login
  190.       Set pRepLst = pRepSysinfo.GetReportEngine()
  191.       If pRepLst Is Nothing Then MsgBox " pRepLst Is Nothing "
  192.       Old_ModuleCls.SetSysInterface pRepSysinfo
  193.       Old_ModuleCls.SetReportMgr pRepLst
  194.       pRepSysinfo.HelpFile = App.HelpFile
  195.       Set adoConn = Nothing
  196.     End If
  197. End Sub
复制代码




最佳答案

查看完整内容

这个解决了没有啊?
发表于 2011-7-31 01:05:18 | 显示全部楼层
这个解决了没有啊?
回复

使用道具 举报

发表于 2011-8-1 13:50:37 | 显示全部楼层
这不是T6的。 看180行,这起码是U870以上版本用的。
回复

使用道具 举报

 楼主| 发表于 2011-8-1 22:12:50 | 显示全部楼层
郁闷呀.  整了两天 自己整出来了.     原因是后来生成的com组建一直没有更新...  好郁闷呀....


回复

使用道具 举报

 楼主| 发表于 2011-8-21 23:38:24 | 显示全部楼层
..........................
回复

使用道具 举报

发表于 2012-3-12 14:23:59 | 显示全部楼层
学习了,尽管我什么都没看懂。
回复

使用道具 举报

发表于 2016-6-27 23:38:31 | 显示全部楼层
楼主,是不是T6呀,SQL部分有没有?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-6-5 03:18 , Processed in 0.028218 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表