




已阅读5页,还剩326页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
331331 用友软件股份有限公司 地址:北京市海淀区北清路 68号 用友软件园 电话网址: 客户化开发基本能力提升手册 起草单位 :ERP 咨客户化开发部 修正单位 : 批 准 : 批准日期 : 1 U8 基础开发篇 1.1 门户开发与集成 1.1.1 功能概述 如何使二次开发的程序和 U8 产品集成在一起?需要满足怎样条件的程 序才能和门户集成?如何开发满足这个条件的程序?本文将为您解答这 些问题。 1.1.2 名词解释 菜单调整工具 功能:调整菜单位置;新增、修改、删除菜单(除 U8 系统菜单外)。 路径:菜单调整工具在 UAP 中,通过菜单“工具菜单调整工具”进入。 注意:菜单调整工具只针对应用该工具新增的菜单(菜单号以 ua 开头),对于手 工插入 ua_menu 表中的菜单该工具不识别。 程序调用方法 功能:通过 UFSystem 数据库中的物理表 UA_IDT 预置数据,其内容描述了双击每 个末级菜单或者某个模块时需要调用的物理程序。 方法 1:通过菜单调整工具新增的菜单,会在 UA_IDT 自动插入记录。 方法 2:通过 sql 脚本手工插入 UA_IDT 记录。 对应字段的含义见ua_idt表说明: 字段名称 描述 数据类型 长度 是否允许为空 Delete From ua_idt where id=1N Insert into ua_idt(id,assembly,catalogtype,type,class,entrypoint,parameter,reserved) Values(1N,EFFYMain.clsProductFacade,0,0,NULL,NULL,NULL,NULL) GO ERP 事业部咨询实施客户化开发部 第 3 页 共 331 页 Assembly dll名字 nvarchar 256 False Catalogtype 类型,比如 dotnet vb dll exe 等 int 4 True Class 用于 createobject nvarchar 512 True entrypoint 入口 nvarchar 512 True ID 唯一编号 nvarchar 32 False parameter 命令行参数 nvarchar 1024 True Reserved 保留字段 nvarchar 1024 True Type 类型 int 4 True Ufts 时间戳 timestamp 8 False Type字段:为 0时为 VB DLL;为 1时为可执行程序;为 2或者 4时.net 的应 用程序。 1.1.3 如何开发与门户集成的 VB dll 代码修改 具体实例见 U890 客开资料U8 基础开发篇 Demo门户文件夹下 .1 引用工程 UFPortalProxyInterface 文 件 位 置 : U8安 装 路 径 PortalUFPortalProxyInterface.dll .2 相关代码修改 clsProductFacade文 件 为 门 户 的 入 口 文 件 , 即 在 ua_idt表 中 assembly项 所 对 应 的 类 名 。 如 下 所 描 述 的 : 首 先 , ua_idt中 assembly属 性 描 述 的 对 应 类 要 实 现 接 口 ILoginalbe。 比 如 ua_idt中 描 述 了 如 下 信 息 : id=EFFYGL040101 type=0 assembly=EFFYMain.clsProductFacade insert into ua_idt (id,assembly,catalogtype,type,class,entrypoint,parameter,reserve d)values( EFFYGL040101, EFFYMain.clsProductFacade ,0,0,Null,Null,Null,Null) 则 要 在 clsProductFacade中 实 现 ILoginable接 口 , 即 用 代 码 : Implements UFPortalProxyInterface.ILoginable 然 后 在 该 接 口 的 实 现 函 数 中 转 发 调 用 原 先 工 程 中 的 Login,CallFunction,Logoff三 个 方 法 , 具 体 参 见 后 附 的 例 子 。 在 左 树 启 动 一 项 命 令 时 依 次 调 用 Login和 CallFunction。 在 门 户 退 出 或 在 权 限 管 理 中 结 束 该 产 品 时 调 用 LogOff。 子 系 统 必 须 自 己 维 护 是 否 已 经 进 行 子 系 统 登 录 过 程 , 业 务 系 统 须 维 护 子 系 统 是 否 已 经 登 录 。 Login对 象 从 g_business中 通 过 调 用 GetVBclsLogin方 法 获 得 。 各 接 口 含 义 如 下 : 1、Login 接口( Private Function ILoginable_Login() As Boolean ),不管弹出的是模式窗 体还是非模式窗体,此接口在成功登录后须返回 True,而且要保证登录成功后,第二次调用 此接口时也要返回 True。只有在登录失败后方可返回 False。也就是说此接口返回值的含义 是是否已经成功登录子系统。 2、LogOff 接口 ( Private Function ILoginable_LogOff() As Boolean ),此接口的含义是执 行 LogOff 过程,如成功使该子系统 LogOff 状态返回 True,否则返回 False。也就是说,如 果该子统还未登录,则直接返回 False 就可以了。如果系统处于已经登录的过程,则执行 业务组原有所需的 LogOff 过程,如果执行此功能,正确 LogOff 子系统,则返回 True,否 则返回 False。如果在实际程序中没有此过程,则直接返回 True 即可。 3、CallFunction 接口(Private Function ILoginable_CallFunction() As Boolean),如果产品 没有子系统登录过程,此值须返回 True。 4、对于显示模式窗体的产品,如果已经申请了任务,请在模式窗体退出时自已清除任 务。 实 现 这 三 个 方 法 的 例 子 如 下 : 接口 ILoginable函数 Login Private Function ILoginable_Login() As Boolean ILoginable_Login = True End Function Private Function ILoginable_LogOff() As Boolean ILoginable_LogOff = True End Function ERP 事业部咨询实施客户化开发部 第 5 页 共 331 页 Private Function ILoginable_CallFunction(ByVal cmenuid As String, ByVal cmenuname As String, ByVal cAuthId As String, ByVal cCmdLine As String) As Object Set ILoginable_CallFunction = CallFunction(cmenuid, cmenuname, cAuthId, cCmdLine) End Function .2.1增加 Business 属性 可 读 可 写 , 且 对 大 小 写 敏 感 。 此 属 性 维 护 一 个 对 于 业 务 工 程 全 局 变 量 , 以 实 现 和 VB程 序 和 890Portal的 交 互 。 参 考 实 现 如 下 : .2.2增加全局变量 新建一个 module 文件 modPublicFuncs,并加入如下全局变量: Public g_business As Object Public g_bLogined As Boolean .3 三种窗体 .3.1修改嵌入 Portal 的窗体文件 原来有 MdiExtender 控件的窗体 要嵌入 Portal 的窗体 修改方法: 调用 CreateFormEnv 方法 调用 ShowForm 方法 每个窗体都要有方法 ExitForm Public Property Get Business() As Object Set Business = g_business End Property Public Property Set Business(ByRef bBus As Object) Set g_business = bBus End Property .3.2修改第一次弹出就是模态的窗体 可 以 直 接 使 用 通 过 采 用 VB窗 体 的 Form.Show (vbModal)的 方 式 , 也 可 以 调 用 ShowForm方 法 来 显 示 此 窗 体 。 .3.3由嵌入 Portal 的窗体弹出的窗体, 不 作 修 改 , 如 果 是 模 式 窗 体 , 请 在 此 窗 体 上 加 入 UFFormPartner控 件 .4 UFToolbar 的修改 .4.1在 Settoolbar 之前将 g_business 传入 .4.2在 Settoolbar 之前设置 Tag 信息 设置微软 Toolbar 每个 Button 的 Tag 信息 调用 CreatePortalToolbarTag 方法设置 示例: button.Tag = CreatePortalToolbarTag(“ICON_NEW”,”ICOMMON”,”PortalToolbar”) 注意: 严禁创建多次 .4.2.1 按钮图标 由 人 机 工 程 部 给 出 完 整 的 图 标 , 并 制 定 相 应 文 件 的 命 名 规 格 放 在 %U8SOFT%的 icons目 录 下 直 接 使 用 图 标 的 文 件 名 (不 需 扩 展 名 ) .4.2.2 按钮分组 常用(ICOMMON):如打开、保存等 编辑(IEDIT):如增行、拷贝单元格等 处理(IDEAL):如审核、分单等 查询(ISEARCH):如过滤、联查等 .4.2.3 类型 PortalToolbar, 目 前 填 入 此 值 即 可 。 .4.3在窗体的 Unload 事件中加入 Set UFToolbar1.Business = Nothing ERP 事业部咨询实施客户化开发部 第 7 页 共 331 页 .5 中间过程 .5.1判断窗体是否打开 FormIsOpened .5.2设置并激活某个已经存在的窗体 SetFormActive .5.3在显示过程中(窗体已经显示)关闭自身窗体 CloseForm 常见问题 程序已经修改,双击门户节点时没有反应,调用状态进不了 VB 程序; 原因:未正确修改 clsProductFacade 文件; 窗体已经嵌入到 Portal 中,但 Toolbar 的相关信息未转移到门户的工具栏上; 原因:未正确设置每个 Button 的 Tag 信息; 参考 .1 ShowForm 显示嵌入 Portal 的窗体 Public Function ShowForm(ByVal obj As Object, ByVal SubID As String, ByVal sKey As String, Optional modalable As Boolean = False, Optional DockToProtal As Boolean = True, Optional ByVal vfd As Object) As String obj: Form 对象; SubID: 子产品号; sKey: Key,注意不能是 form 的 Hwnd,在窗体的生命周期中,此值必须唯一; modalable: 该窗体是否为 Model 窗口; DockToProtal : 是否要嵌入到 Portal 中; vfd: 由 CreateFormEnv 对象的返回对象; .2 CreateFormEnv 初 始 化 嵌 入 Portal的 环 境 .3 CloseForm 关闭一个已经打开的窗体 Public Function CloseForm(ByVal sKey As String, ByVal obj As Object) sKey: Key,注意不能是 form 的 Hwnd,在窗体的生命周期中,此值必须唯一 obj: Form 对象。 .4 FormIsOpened 判断某个 Key 值的窗体是否已经打开 Public Function FormIsOpened(ByVal sKey As String) sKey: Key,注意不能是 form 的 Hwnd,在窗体的生命周期中,此值必须唯一; .5 CreatePortalToolbarTag 创 建 Toolbar的 Tag信 息 Public Function CreateFormEnv(ByVal sKey As String, ByRef formObj As Object) As VBFormDescriptor sKey: Key,注意不能是 form 的 Hwnd,在窗体的生命周期中,此值必须唯一; formObj: Form 对象 ERP 事业部咨询实施客户化开发部 第 9 页 共 331 页 .6 SetFormActive 使某个窗口成为当前窗口 Public Function SetFormActive(ByVal sKey As String, ByVal obj As Object) sKey: Key,注意不能是 form 的 Hwnd,在窗体的生命周期中,此值必须唯一 obj: Form 对象 挂接菜单 自动生成。 菜单的多语名称,将在 U8 左树菜单里显示 如果是文件夹这里选否 如果控制功能权限,这里就 选是 这里选择 VB DLL VB DLL 时,此项无效。 输入 VB DLL 的完整类名称。 Public Function CreatePortalToolbarTag(Image As String, actionSet As String, toolbarType As String) As String Image 按钮的图片 actionSet 分组 toolbarType 分组 Toolbar 的类型 1.1.4 如何开发可与门户集成的.NET User Control .net user control 与门户集成需要建立实现 IUserControl 接口的组件 通过 建立一个项目类型为类库的项目 此处项目名称为 UFIDA.U8.UAP.Demo.ProjectManage 实现接口 IUserControl 在该项目中添加以下 DLL 的引用 U8 安装路径UAPRUNTIMEUFIDA.U8.Portal.UAPFacade.dll U8 安装路径UAPInterop.U8Login U8 安装路径uapUFIDA.U8.Portal.Framework.dll U8 安装路径uapUFIDA.U8.Portal.Proxy.dll U8 安装路径.Windows.Form.dll U8 安装路径uapUFIDA.U8.Portal.Common.dll ERP 事业部咨询实施客户化开发部 第 11 页 共 331 页 然后实现接口 IuserControl,IUserControl 接口有两个属性和三个方法: .1 NetEditor 属性 属性原型声明:NetEditor NetEditor get;set; 对于二次开发人员 ,这个是只读属性,严禁为该属性赋值。 通过这个属性,二次开发人员可以访问 UAP 表单在门户中显示的页签对象,可以执行 页签关闭等操作。 .2 UapInput 属性 属性原型声明:NetFormInput UapInput get;set; 对于二次开发人员 ,这个是只读属性,严禁为该属性赋值。 通过这个属性,二次开发人员可以访问门户工具栏上的按钮。 .3 CreateControl 方法 方法原型: / / 创建UserControl对象 / / u8Login对象 / 菜单ID / 菜单自定义参数 / 显示的usercontrol System.Windows.Forms.Control CreateControl(U8Login.clsLogin login, string MenuID, string Paramters); 功能描述: 该方法创建要显示的 usercontrol 参数描述: login u8 登陆对象,该对象不能转换成 u8Login.clsLoginClass. MenuID: 打开的菜单 ID Paramters 菜单的参数描述,它是一个 XML 字符串 其定义格式如下: dllpath: dll 的路径,要用 u8soft 的相对路径,最好放在 uap 目录下; id:UserContrl 唯一标识,其值自定; type:属性值必须为“IUserControl“,区分大小写; parameters:需要给程序(UserControl)传送的数据,格式自定; 返回值 :要显示的 usercontrol; 用法: 要在门户中显示自定义的窗体,必须在此函数内实例化一个从 control 继承过来的 对象 ,并且返回该对象。 .4 CreateToolbar 方法 方法原型: / / 创建toolbar对象 / / 返回对象 VoucherAction CreateToolbar(U8Login.clsLogin login); 功能描述:在 u8 门户上创建 Toolbar 对象 参数描述: login 表示当前的 u8 登陆对象 返回值为 toolbar 对象数组 VoucherAction 对象是一个 toolbar button 的描述其用法如下 其参数描述如下:public VoucherAction(string text, string toolTip, bool isSystemButton, bool isHavePopedom, string id, IActionDelegate dele, VoucherActionType typeName, int sortNo, string parentKey, string authID); Text:button 的名称 toolTip:提示名称 isSystemButton:是否系统按钮 isHavePopedom:是否需要权限控制 id:toobar button 的 ID,该 ID 不允许重复,如果重复则后添加的对象无效 dele:action 的代理对象,在该代理内实现 toolbar 的具体操作 typeName: toolbar button 共分四种类型,类型相同的 toolbar button 显示在同一组 中 sortNo:排序号 parentKey:父键,如果没有则为 null authID:权限 ID 用法: /定义 toolbar 返回对象 UFIDA.U8.Portal.UAPFacade.VoucherAction actions = new VoucherAction2; /定义 toolbar 的处理事件 UserActionDelegate actionDelegate = new UserActionDelegate(); /实例化 toolbar button 对象 actions0 = new VoucherAction(“确定“, “, false, false, “btnOK“, actionDelegate, VoucherActionType.Normal, 1, null, null); actions0 = new VoucherAction(“取消“, “, false, false, “btnCancel“, actionDelegate, VoucherActionType.Normal, 1, null, null); /返回要显示的 toolbar return actions; ERP 事业部咨询实施客户化开发部 第 13 页 共 331 页 .5 CloseEvent 方法 方法原型: / / 关闭事件 / / bool CloseEvent(); 功能描述:usercontrol 的关闭事件 参数描述: 返回值 是否关闭当前窗体,如果是 true 则关闭 否则保持当前状态 编译该控件输出 DLL 编译出的 DLL 推荐拷贝到 u8softuapruntime 目录下 示例代码 具体实例见 U890 客开资料UAP 开发篇 Demo 文件夹下 挂接菜单 输入,只能由字母和数 字组成。 菜单的多语名称,将在 U8 左树菜单里显示如果是文件夹这里选否 如果控制功能权限,这里就 选是 这里选择.NET Usercontrol .NET Usercontrol 时,此项无效。 形如 1.1.5 可执行文件(EXE)如何挂接到门户 1、 打 开 菜 单 调 整 工 具 ; 2、 鼠 标 选 中 需 要 挂 接 的 文 件 夹 ( 如 果 没 有 可 以 用 菜 单 调 整 工 具 新 建 文 件 夹 ) , 点 新 增 按 钮 ; 3、 通 过 菜 单 调 整 工 具 进 行 设 置 ; 4、 保 存 后 , 自 动 生 成 一 个 菜 单 编 号 , 这 里 是 UA8; 自动生成 菜单的多语名称,将在 U8 左树菜单里显示 如果是文件夹这里选否 如果控制功能权限,这里就 选是 这里选择 EXE EXE 时,参数无效 这里输入 EXE 文件的路径,是一个相对于 U8 安装路径的相对路 径,举例,U8 安装在 E:U8Soft,这里设置为.EAIU8EAI.exe, 表示 E:U8SoftEAIU8EAI.exe。 ERP 事业部咨询实施客户化开发部 第 15 页 共 331 页 5、 在 ua_idt中 增 加 一 条 记 录 ; 1.1.6 UAP 表单和 UAP 列表如何挂接到门户 1、 挂 接 UAP表 单 insert into ua_idt (id,assembly,catalogtype,type,class,entrypoint,parameter,reser ved)values( UA8,.EAIU8EAI.exe ,1,0,Null,Null,Null,Null) 2、 挂 接 UAP列 表 输入,只能由字母和数 字组成。 菜单的多语名称,将在 U8 左树菜单里显示 如果是文件夹这里选否 如果控制功能权限,这里就 选是 这里选择 UAP 表单 UAP 表单时,此项无效。 形如 的字符串,这里 UAPTrain_0009为表单编号; 输入,只能由字母和数 字组成。 菜单的多语名称,将在 U8 左树菜单里显示 如果是文件夹这里选否 如果控制功能权限,这里就 选是 这里选择 UAP 表单 UAP 列表时,此项无效。 形如的字符串,这里 UAPTrain_0009为表单编号;eea90b20-4a2b-4149-8d00- 820818dcd38f为表单列表 ID ERP 事业部咨询实施客户化开发部 第 17 页 共 331 页 3、示例代码 具体实例见 U890 客开资料UAP 开发篇 Demo 文件夹下 1.1.7 如何不使用菜单调整工具增加和修改菜单 相关表说明 .1 UA_Menu 表结构 字段名 数据类型 含义 AutoID uid 自动编号 cMenu_Id String 菜单编号,自动产生,不可修改 cMenu_Name String 菜单名称,输入 cMenu_Eng String 菜单英文名称 cSub_Id String 模块标识 IGrade Int16 级次,根据当前选中菜单程序自动处理 cSupMenu_Id String 上级菜单编号,根据当前选中菜单程序自动处理 bEndGrade Boolean 是否末级,输入 cAuth_Id String 功能权限编号,程序内部处理,控制权限时有效 iOrder Int32 显示顺序号,程序处理 iImgIndex Int32 图标索引号,暂不用 Paramters String 参数,输入,只有末级菜单才允许录入参数 Depends String 依赖,暂不用 Flag Int 标志,暂不用 .2 UFMenu_Business_Lang 表结构(菜单的多语表) 字段名 数据类型 含义 MenuId Nvarchar64 菜单标识,对应 UA_Menu 表的 cMenu_Id值 Caption Nvarchar512 菜单显示名称(简体中文名称显示的是 UA_Menu 表的 cMenu_Name值) LocaleId Nvarchar32 语言区域 ZH-CN简体中文 ZH-TW繁体中文 EN-US英文 注 : U8的 系 统 菜 单 在 UFSystem库 里 , UAP新 增 或 者 菜 单 调 整 工 具 新 增 的 菜 单 在 UFData库 里 , 二 次 开 发 增 加 的 菜 单 也 要 求 在 UFData库 里 。 示例 具体实例见 U890 客开资料U8 基础开发篇 Demo门户文件夹下 1.2 界面设计与开发 1.2.1 单据开发 功能介绍 单据控件实现各业务产品组中各单据的数据处理,该控件实现数据分层处理。单据控件以 OCX 提供给各个业务模块使用(包括 WEB 组) ,业务组在使用前初始化单据控件,最终 业务模块从单据控件取得数据按各自的业务规则检查合法后保存。 U890 版本的单据控件有以下新特性: 支持 Web 对后台数据实现分层处理 支持各种模版样式 支持无表体单据样式 支持无表头单据样式 数据更新状态智能标记 支持表头、表体附件 表体汇总 表体批量修改 使用环境 支持环境为 U890 以上版本 使用说明 在 VB 中引用单据控件 在 VB 中点击主菜单中的“工程-部件”或者直接按 Ctrl+T 热键,随后出现的“部件”对 话框中选中“UAPVoucherControl85 ”,然后点击“确定” ,左侧的工具条中将出现该控件的 ERP 事业部咨询实施客户化开发部 第 19 页 共 331 页 图标,如下图所示: OCX 文件的方法函数图例如下: 单据控件的主要属性: BackColor,BackColorBkg,BackColorFixed,BackColorSel,BackColorTotal 属性: 返回或设置单据控件不同的背景颜色 语法: voucher.BackColor =color voucher.BackColorBkg =color voucher. =color voucher.Back BackColorFixed ColorSel =color voucher.BackColorTotal =color 参数说明: 参数 描述 Voucher 单据控件名称 Color 一个指定的颜色值 备注: 下图为 Voucher 属性设置效果 举例: Note: 如要设置这些属性值,必需在设置完模板数据后再设置才能起作用。 Private Sub Form_Load () Timer1.Interval =500 End Sub Private Sub Timer1_Timer () Voucher1.BackColorBkg =QBColor(Rnd * 15) Voucher1.BackColorFixed =QBColor(Rnd * 10) Voucher1.BackColorSel =QBColor(Rnd * 10) Voucher1.BackColorSelTotal =QBColor(Rnd * 10) End Sub Col, Row,ColSel,RowSel 属性 ERP 事业部咨询实施客户化开发部 第 21 页 共 331 页 返回或设置当前表体活动单元格的行列坐标,此属性在设计状态不可用。 语法: voucher.Col =number voucher.Row =number 参数说明: 参数 描述 Voucher 单据控件名称 number 一个指定的指定活动单元行列的数值 备注: 使用 Col、Row 属性来指定活动单元格, Col0,Row0,Col “ Then MsgBox ErrDesc End If Dim m_oServer as UFVoucherServer85.clsVoucherTemplate Dim objDoc As New MSXML2.DOMDocument30 Call objDoc.loadXML(strXml) Call objDoc.documentElement.setAttribute(“VoucherTypeID“, “88“) Call objDoc.documentElement.setAttribute(“VoucherID“, “01“) strXml = objDoc.xml set objDoc nothing Call m_oServer.SaveAccessories(strXml, cnn, ErrDesc) If ErrDesc 0 Then sXMLFilter = “ sXMLFilter = sXMLFilter + “ sXMLFilter = sXMLFilter + “ Else sXMLFilter = “ End If End Sub b) 方法二:离开部门编辑框时直接设置过滤参数 Private Sub EdtDeparment_LostFocus() Dim sXMLFilter As String If Len(EdtDeparment.Text) 0 Then sXMLFilter = “ sXMLFilter = sXMLFilter + “ sXMLFilter = sXMLFilter + “ Else sXMLFilter = “ End If Call EdtPerson.SetFilterXML(sXMLFilter) End Sub End sub 注意:若同时设置条件,且响应消息设定条件,参照以最后一次条件为准,即设置条 件时,最后一次设置有效。 示例程序见红色框 ERP 事业部咨询实施客户化开发部 第 47 页 共 331 页 .3 示例 3:对于参照、自定义、枚举参照如何正确使用 Text 和 DisplayText 属性 对于设置 RefType 属性设置为:RefArchive、RefUserDefine、RefEnumType,由于设置属 性 Text 和 DisplayText 可能存在相互干扰,控件按下列逻辑规则处理: 设置 T e x t 属性 与原先 T e x t 属性是否一 致 是 否 不作任何变动 T e x t n e w V a l u e 触发 T e x t C h a n g e 事件 D i s p l a y T e x t 属性是否为空 否 D i s p l a y T e x t 值不变 是 D i s p l a y T e x t T e x t 触发 C h a n g e 事件 设置 D i s p l a y T e x t 属性 与原先 D i s p l a y T e x t 属 性是否一致 是 否 不作任何变动 D i s p l a y T e x t n e w V a l u e 触发 C h a n g e 事件 n e w V a l u e 是否为空 是 设置 D i s p l a y T e x t T e x t = ” ” U T o o l T i p T e x t = ” ” 否 m _ A u t o D i s p l a y T e x t = t r u e 是 否 触发 C h a n g e 事件 根据参照定义查询是否存在 是 否 填写 : D i s p l a y T e x t T e x t U T o o l T i p T e x t 等 参照 B u t t o n 提示内 容不存在 若在程序中两个属性同时设置 操作顺序建议如下: Me.EdtArchive.AutoDisplayText = False Me.EdtArchive.Clear Me.EdtArchive.Text = “001“ Me.EdtArchive.DisplayText = “名称“ .4 示例 4:如何直接使用参照服务 有些特殊情况可以直接使用参照服务,其调用方式如下: Private Sub CmdShowRef_Click(Index As Integer) Dim obj As Object Set obj = CreateObject(“U8RefC.RefClient“) Dim var As Object Dim sXML As String Select Case Index Case 0 完整参数传入 refid:参照 ID imode:调用模式 0:点击参照按钮 1:输入内容; 2:参照值 bweb:是否 Web 使用 filltext:填写的内容 editvalue:控件的 Text 内容 filterxml:过滤的 XML 串 filtersql:过滤的 Sql parammeta:参数列 languageid:语言 Id:0:中文简体;1:中文繁体;2:英文 edthwnd:控件的 Hwnd 值 sXML = “ 参数: 无 返回值: 长整形,0 表示成功,非 0 表示错误,参见“错误码”参考。 备注: 使用本方法之前必须先绑定格式和数据 XML。 绑定了格式和数据以后,可以使用 PrintPreview 方法进行打印预览,如以下示例代码: Private Sub btnPreview_Click() printer.PrintPreview End Sub 该方法将显示一个打印预览窗口,如下图: 在预览窗口中可以调整各种预览显示效果,可以在各页中来回预览效果,并且可以同时进 行页面设置。预览完毕后,可以进行打印。 5.5 PrintEx 启动打印过程,按照指定的格式打印指定的数据。 语法: long PrintEx(BOOL bShowPrintDlg); 参数: bShowPrintDlg 布尔型。 指定是否在开始打印前显示打印对话框,缺省为显示。 返回值: 长整形,0 表示成功,3999 表示当 bShowPrintDlg 为 TRUE 时,用户在打印对话框中击 “取消”退出打印过程,其他非 0 值表示错误,参见“错误码”参考。 备注: 使用本方法之前必须先绑定格式和数据 XML。绑定了格式和数据之后,可以使用 PrintEx 方法进行打印(不需要先进行打印预览) 。 如以下示例代码: Private Sub btnPrint_Click() printer.PrintEx(FALSE) End Sub ERP 事业部咨询实施客户化开发部 第 61 页 共 331 页 5.6 AboutBox 显示“关于”对话框。 语法: void AboutBox(); 参数: 无 返回值: 无 5.7 ExportToAttached 将 XML 的内容输出到成 PDF 格式或 XLS 格式文件。 (PDF 文件输出需要安装 qvPDF 才能实现) 语法: long ExportToAttached(long lTypeId, /输出类型 ID,现在没有使用,为以后增加类型保留 long lJobId, / ExportToFile 中相同,以下四个都同,不过仅 varColType 被使用,其它 的保留 const VARIANT FAR 参数: hwndOwner 长整形。 所有者窗口的句柄。 返回值: 长整形,0 表示成功,非 0 表示错误,参见“错误码”参考。 备注: 控件缺省将使用进程中最上层窗口的句柄作为打印预览窗口的所有者窗口句柄, 因此无需调用本方法。 5.10 TriggerEvent 允许调用本控件的程序通过本方法触发指定的事件,而不需用户干预。 语法: long TriggerEvent(long lEventId); 参数: lEventId 长整形 事件 ID。 目前允许的值仅为 0,触发 SettingChanged 事件。 返回值: 长整形,0 表示成功,非 0 表示错误,参见“错误码”参考。 备注: 无 属性介绍 6.1 bDesignMode 该属性指定控件是否在设计模式下运行。 备注: 此属性为 Boolean 类型,缺省为 FALSE。 当此属性被设置为 TRUE,即控件在设计模式下运行时,表头和表尾各字段将显 ERP 事业部咨询实施客户化开发部 第 63 页 共 331 页 示其占用矩形范围的边框。此时,表尾字段的边框位置显示在 XML 格式文件中定义 的位置,而不是当表体高度设定为 0 从而根据纸张高度调整表尾字段以后的位置。 使用本属性可以在预览时方便的查看表头/表尾各个字段的准确位置和范围大小。 6.2 EnableSave 该属性指定预览时是否允许用户保存设置。 备注: 此属性为 Boolean 类型,缺省为 TRUE。 当此属性被设置为 FALSE 后,在预览窗口中的“文件-保存设置”菜单命令被禁 止,相应的,工具条上的对应按钮也被禁止了,因此用户无法保存更改的设置。 6.3 ExportTableOnly 该属性指定输出时是否只输出表体内容。 备注: 本属性为布尔型,缺省为 TRUE。 当本属性设置为 TRUE 时,调用 ExportToFile 方法时,仅输出表体的内容。当本 属性设置为 FALSE 时,输出时不仅输出表体的内容,还会输出表头和表尾的各个字 段的内容。 6.4 ReserveSegTitlePos 该属性指定当表头(表尾)字段的打印属性设置为“否”时,是否为字段的标题保留 占位。 备注: 属性为 TRUE 时,无论字段的标题是否打印均保留其占位,为 FALSE 时,不保 留占位,字段的值将顶头显示。 6.5 ShowSegColon 该属性指定表头和表尾各字段的名字(即标签)和值之间是否显示一个冒号。 备注: 本属性为布尔型,缺省为 FALSE。 如果本属性为“TRUE” ,那么显示该冒号,否则显示一个空格。 事件介绍 SettingChanged 在打印预览窗口中,点击菜单项“文件-保存当前设置”时将触发此事件,或者 COM 客户可以使用 TriggerEvent 方法直接触发本事件。 语法: void SettingChanged( VARIANT varLocalSettings, VARIANT varModuleSettings); 参数: varLocalSettings 包含应保存于本地数据库或文件中的 XML 格式字符串,即格式字符串中的打印设置 和页面设置两部分的格式。 VarModuleSettings 包含应保存于服务器端数据库中与模版相关的 XML 格式字符串,如页眉,表头,表 体等部分的格式。 返回值: 无。 备注: 客户通过处理此事件可以把本次用户已修改的格式保存起来,以便下次打印希望使用 本次格式时提取。 8,格式 XML 和数据 XML 参考 8.1 打印控件所能识别的格式和数据 XML 使用特定的标记集(Tags Set) ,所有标记应包含 于预制的标记范围(在帮助文件中提供了详细说明) 。其他任何标记均不被本控件识别,不 被认为是对格式或数据的描述而被忽略。 标记 说明 应用于 XML 格式文件(或字符串,下同,不再赘述)的 根节点,表示为格式文件 格式 XML XML 数据文件的根节点,表示为数据文件 数据 XML 与打印相关的一些设置。 格式 XML 与打印所用纸张相关的设置 格式 XML 一份打印任务 数据 XML 表体的单元格 数据 XML 页眉的格式设置或数据描述 格式和数据 XML 标题的格式设置或数据描述 同上 表头的格式设置或数据描述 同上 表头或者表尾各个字段的格式设置或数据描述 注
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际高中考试及答案
- 2025年山东化学中考试卷及答案
- 2025年精麻处方考试试题及答案
- 慢性病防治知识培训课件
- 慢性咽炎课件
- 金融学基础考试大题及答案
- 情景再现法课件
- 青华中学考试试题及答案
- 护理评估单考试题及答案
- 航空航天概论考试及答案
- 高中通用技术会考试题及详解
- 安全教育:不私自离开幼儿园
- 泛光施工招标文件
- 旅游策划实务整套课件完整版电子教案课件汇总(最新)
- 刑法各论(第四版全书电子教案完整版ppt整套教学课件最全教学教程)
- 人工挖孔桩施工监测监控措施
- 第7章:方差分析课件
- 国家职业技能标准 (2021年版) 6-18-01-07 多工序数控机床操作调整工
- 办公楼加层改造施工组织设计(100页)
- 洁净厂房不锈钢地面施工方案
- DS6-K5B计算机联锁系统介绍文稿
评论
0/150
提交评论