150 likes | 393 Views
插件开发(四). 叶玫 计算机工程技术学院. 插件开发案例. 课堂练习:为单据新建菜单命令“查看语言” (mnuLang) ,位于”数据”菜单下,单击该命令,根据安装的 K3 版本弹出提示。分别为“简体中文”、“繁体中文”、“英文” 分析: (1) 在向导中创建新的菜单命令,设置名称和位置 (2) 获取语言类型,需要使用辅助对象 K3Lib 的 GetK3Language 方法 (3)K3Lib 是辅助对象,通过单据或序时簿对象的属性获取 m_BillInterface.K3Lib. 插件开发案例. 关于 K3Lib 对象
E N D
插件开发(四) 叶玫 计算机工程技术学院
插件开发案例 • 课堂练习:为单据新建菜单命令“查看语言”(mnuLang),位于”数据”菜单下,单击该命令,根据安装的K3版本弹出提示。分别为“简体中文”、“繁体中文”、“英文” • 分析: (1)在向导中创建新的菜单命令,设置名称和位置 (2)获取语言类型,需要使用辅助对象K3Lib的GetK3Language方法 (3)K3Lib是辅助对象,通过单据或序时簿对象的属性获取 m_BillInterface.K3Lib
插件开发案例 • 关于K3Lib对象 K3Lib是金蝶k3 BOS的辅助对象之一,提供插件与金蝶K3交互,K3Lib有三个属性,分别代表三种对象,包括Net、User、Account • K3Lib实例.Net:返回网络对象,提供插件使用金蝶K/3的网络控制功能 • K3Lib实例.User:返回用户对象 • K3Lib实例.Account:返回帐套对象
插件开发案例 • K3Lib的GetK3Language方法 • 该方法没有参数,返回值类型为字符串(string) • 返回值为下面三个值之一:
Private Sub m_BillInterface_MenuBarClick(ByVal BOSTool As K3ClassEvents.BOSTool, Cancel As Boolean) Select Case BOSTool.ToolName Case "mnuLang" '此处添加处理mnuLang 菜单对象的 Click 事件 Dim language As String Dim language2 As String language = m_BillInterface.K3Lib.GetK3Language Select Case language Case "CHS" language2 = "简体中文" Case "CHT" language2 = "繁体中文" Case "EN" language2 = "英语" End Select MsgBoxlanguage2, vbOKOnly, “语言版本” Case Else End Select End Sub MenuBarClick事件,单击菜单命令时触发 判断单击的是否为mnuLang命令 获得当前语言版本 根据不同的语种设置提示信息文本
插件开发案例-单据状态栏 • 准备案例:为单据状态栏加图标、设置状态栏的背景颜色 • 观察单据状态栏 单据状态栏被切割成若干个段,每段可以设置不同的图标;但只能设置状态栏整体的背景颜色
插件开发案例-单据状态栏 • 为单据状态栏添加图标和背景颜色,通过BillEvent对象的SetStatusBarInfo方法 • 该方法包含三个参数 参数一:整数;显示哪种图标。0为提示信息图标,1为警告图标 参数二:整数;图标显示在状态栏哪一栏,从1开始 参数三:状态栏的背景颜色 ,RGB值。例如vbRed
插件开发案例-单据状态栏 m_BillInterface.SetStatusBarInfo 0, 1, vbWhite m_BillInterface.SetStatusBarInfo 1, 2, vbRed
插件开发案例-单据状态栏 • 案例七:客户希望在单据信息栏上显示当前获得焦点的字段的值 • (1) 提示是单据头信息还是单据体信息 • (2)焦点在单据头时状态栏为白色;在单据体状态栏为黄色 • (3)如果焦点在单据体,状态栏上还要显示该列字段的中文标题
插件开发案例-单据状态栏 • 分析: • (1)使用字段获取焦点事件:GotFocus • (2)需要判断焦点在单据头还是单据体上 • (3)使用单据对象的SetStatusBarInfo根据情况设置状态栏颜色 • (4)使用单据对象的SetStatus方法,设置状态栏的文本 • (5)使用BosField对象的Caption属性,返回字段的中文标题
插件开发案例-单据状态栏 • GotFocus是单据对象(BillEvent)的事件。当单据上的任意字段获得焦点,都触发该事件 • GotFocus事件的参数列表包含6个参数,其中有3个参数在当前案例中需要使用 m_BillEvent_GotFocus(ByVal sKey As String, ByVal dctData As KFO.Dictionary, ByVal curDspValue As Variant, ByVal Col As Long, ByVal Row As Long, ByRef Cancel As Boolean) sKey:当前字段的关键名称 curDspValue:获得焦点的字段的值 Col:如果是单据体字段,则表示光标所在的列序号
插件开发案例-单据状态栏 • GotFocus事件的Col参数说明 • 当单据头字段获得焦点,Col返回-1 • 当单据体字段获得焦点,Col返回字段所在的列序号,该序号大于0 利用Col值来判断焦点所在的位置
插件开发案例-单据状态栏 Dim title As String Dim title2 As String If Col >= 0 Then title = "单据体信息——" title2 = m_BillInterface.BillEntrys(1).BOSFields(sKey).Caption m_BillInterface.SetStatusBarInfo 0, 2, vbYellow Else title = "单据头信息——" m_BillInterface.SetStatusBarInfo 0, 2, vbWhite End If m_BillInterface.SetStatus 2, title & title2 & curDspValue 通过Col值判断焦点在单据头还是单据体 获取当前单据体字段的中文标题 设置状态栏的图标和颜色 设置状态栏的图标和颜色 设置状态栏文本