Sbo采用的是MDI窗体框架模式,SDK开发中对模态对话框支持的非常不好,所以在Sbo Addon中实现模态数据查询与选择,并将选择信息传递到调用窗体,不是一件容易的事情。
既然是程序开发框架,就需要对模态对话框提供支持。经过了两天的努力,完成了通用的模态选择对话框,并在程序开发框架中提供了一个通用的接口进行主数据的查询--事实上,并且也肯定要将这种功能扩展所有的数据选择需要中;同时还要对单据数据的查询提供支持。
使用富盛Sbo Add-on程序开发框架,只需要20行就可以完成查询主数据。这个功能、连同对系统级的事件的过滤、系统界面同自定制界面的事件消息处理,将在下一版本中提供支持,下一版本预计在2007年11月中旬提供下载。
在此演示怎样完成使用富盛Sbo Add-on程序开发框架进行模态数据选择与捕捉。
1、定义模态数据选择窗体的父窗体。这个窗体可以是通过菜单入口调用的非模态化的窗体,也可以是窗体按钮或者按钮事件中进入模态化窗体(当然模态窗体支持菜单调用、也支持事件调用),富盛Sbo Add-on程序开发框架支持多达16层的模态对话框。
//构造函数中指定富盛Sbo-Addon程序开发框架的通用功能支持类变量
        public frmTestModalForm(fsSboCommon fs)
        {
            fsSbo = fs;
        }
        
        //界面创建
        public override int ShowForm(string strFormId, string strFormName)
        {
            if (ShowForm(strFormId, strFormName, 0, 300, 400, 320) == 1) return 1;
try
            {
                stMsg = fsSbo.AddStaticText2Form(ref oForm, "stTitle", "等待选择...", 10, 10, 380, 20);
                fsSbo.AddButton2Form(ref oForm, "btnItem", "选择物料主数据", 50, 140, 120, 30);
                fsSbo.AddButton2Form(ref oForm, "btnCust", "选择客户主数据", 100, 140, 120, 30);
                fsSbo.AddButton2Form(ref oForm, "btnSupp", "选择供应商主数据", 150, 140, 120, 30);
                fsSbo.AddButton2Form(ref oForm, "btnWhs", "选择仓库主数据", 200, 140, 120, 30);
                fsSbo.AddButton2Form(ref oForm, "btnAcct", "选择财务主数据", 250, 140, 120, 30);
            }
            catch (Exception ex)
            {
                fsSbo.ShowMsg(ex.Message);
            }
oForm.Visible = true;
return base.ShowForm(strFormId, strFormName);
        }
以上代码实现了测试窗体的建立,形成如下窗体:
2、有了界面,再就需要编写事件捕捉程序,通过ItemPressed事件分别对物料主数据、客户主数据、供应商主数据、仓库主数据和财务科目主数据的模态选择提供支持。
在富盛Sbo-Addon程序开发框架中查询主数据非常简单,一条语句就搞定了,如下:
fsSbo.SelectSboMasterData(this, fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterItems);
前者通知fsSboCommon当前界面要查询主数据,第二个参数用于指定选择物料主数据。如果需要捕捉选中的主数据,调用时两个参数都是必不可少的,前者通知数据选择模态对话框,将选取的数据返回给调用窗口,没有后者自然就不知道该选择什么数据。
支持对上述主数据的选择代码如下:
protected override bool DoPostItemEventItemPressed(ref SAPbouiCOM.ItemEvent pVal)
        {
            switch (pVal.ItemUID)
            { 
                case "btnItem":
                    nIndex = fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterItems;
fsSbo.SelectSboMasterData(this, fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterItems);
break;
case "btnCust":
                    nIndex = fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterCustomers;
fsSbo.SelectSboMasterData(this, fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterCustomers);
break;
case "btnSupp":
                    nIndex = fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterSuppliers;
fsSbo.SelectSboMasterData(this, fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterSuppliers);
break;
case "btnWhs":
                    nIndex = fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterWarehouses;
fsSbo.SelectSboMasterData(this, fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterWarehouses);
break;
case "btnAcct":
                    nIndex = fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterAccounts;
fsSbo.SelectSboMasterData(this, fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterAccounts, "Levels=1");
break;
            }
return base.DoPostItemEventItemPressed(ref pVal);
        }
3、点击选择按钮,进入到主数据选择窗体,比如主数据选择窗体。在调用的时候,您可以像调用查询物料主数据那样,只提供两个参数,也可以向调用财务科目主数据选择那样,传递一个限制条件“Levels=1”,查询以及财务科目,富盛Sbo-Addon程序开发框架都是支持的。
比如,点击“查询物料主语句”,进入如下界面,在界面中还可以输入进一步的交互式查询条件,这个交互式的查询条件可以对第一列、或者第一二列或者N列都支持的模糊查询,这个在调用中也是可以定义的。如下图:
4、选择数据,并将数据返回到调用窗口。
选中信息回调主要通过以下代码来完成。
public override void SetReturnValue4SelectForm(string strVal)
        {
            switch (nIndex)
            { 
                case fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterAccounts:
                    stMsg.Caption = "您选择的财务科目是:" + strVal;
                    break;
case fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterCustomers:
                    stMsg.Caption = "您选择的客户代码是:" + strVal;
                    break;
case fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterSuppliers:
                    stMsg.Caption = "您选择的供应商代码是:" + strVal;
                    break;
case fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterWarehouses:
                    stMsg.Caption = "您选择的仓库代码是:" + strVal;
                    break;
case fsSboCommon.fsSboSelectMasterFormType.fsSelectFormMasterItems:
                    stMsg.Caption = "您选择的物料代码是:" + strVal;
                    break;
            }
base.SetReturnValue4SelectForm(strVal);
        }
界面如下。
本文转自foresun  51CTO博客,原文链接:http://blog.51cto.com/foresun/48673,如需转载请自行联系原作者

在Sbo Add-on插件中实现通用的模态数据选择相关推荐

  1. ESFramewor使用技巧(2)-- 在插件中使用NHibernate

        我们来讨论一下这种情景,你采用基于ESFramework的4层架构进行应用开发,你分析用户的需求,并将其分类整理为几大块,考虑每一块使用一个功能插件来完成.在这几个插件中,有个插件需要访问某个 ...

  2. 【转载】ESFramewor使用技巧(2)-- 在插件中使用NHibernate

    ESFramewor使用技巧(2)-- 在插件中使用NHibernate     我们来讨论一下这种情景,你采用基于ESFramework的4层架构进行应用开发,你分析用户的需求,并将其分类整理为几大 ...

  3. 在Spring Boot中实现通用Auth认证的几种方式

    来源 | https://zhenbianshu.github.io/ 文章介绍了spring-boot中实现通用auth的四种方式,包括 传统AOP.拦截器.参数解析器和过滤器,并提供了对应的实例代 ...

  4. nuxt.js的核心代码_Nuxt.js中的通用应用程序代码结构

    nuxt.js的核心代码 by Krutie Patel 通过克鲁蒂·帕特尔(Krutie Patel) Nuxt.js中的通用应用程序代码结构 (Universal application code ...

  5. Unity Android平台下插件/SDK开发通用流程

    本文主要面向对Android开发不甚了解的Unity开发者,介绍了基于最新的Android Studio的标准Android开发环境与项目结构的配置流程,在此基础上,开发者可以快速的进行SDK的接入与 ...

  6. Zed-Unity插件中代码注释——ZEDManager.cs

    文章目录 Zed Unity 插件中的代码注释 引言 ZEDManager.cs Zed Unity 插件中的代码注释 引言 Zed真是一个精品商品,提供的api的解释真的很齐全. 代码的可读性很高. ...

  7. ATS 6.2.1打release版本rpm包时插件中出现undefined symbol的问题追踪

    问题场景 我基于ATS 6.2.1社区版整合进一些插件,发现debug版本一直运行好好的,后来改为release版本(就是configure时不加--enable_debug)时,安装后显示下面的出错 ...

  8. 单臂路由中路由器通用配置示意图

    单臂路由中路由器通用配置示意图 一.单臂路由 二.重要性 三.兼容问题 四.命令配置 总结 一.单臂路由 单臂路由(router-on-a-stick)是指在路由器的一个接口上通过配置子接口(或&qu ...

  9. 插件中对动态表单数据模型进行赋值实现动态表单数据绑定

    默认情况下,表单的数据模型创建及赋值由BOS基类实现,一些特殊场景需要在插件中动态创建及赋值绑定. 下面为动态表单"付款单明细列表"的表单插件,PurchaseServiceHel ...

  10. word办公插件中的佼佼者,Word魔方

    盛行自动化办公的今天,越来越多的自动化办公插件涌现出来.今天就介绍其中一款插件,Word魔方. 魔方包含90多个强大功能.其中包括一键AI智能排版.批量合并文档.批量拆分文档.批量提取Word数据到E ...

最新文章

  1. oracle创建数据库总结,oracle创建数据库和用户方法总结
  2. [unix shell笔记] - 和find命令结合使用xargs命令
  3. IDEA配置Struts框架
  4. 异步清零和同步置数/清零的区别
  5. 两个简单的Demo示例向读者展示Flash和ASP.NET交互原理以及过程
  6. 英文文本分析:与COVID-19有关的论文文本分析
  7. mysql数据库中实现内连接、左连接、右连接
  8. vc编程经典网址推荐
  9. JDK 7(Java SE Development Kit)全平台全版本安装包免费下载
  10. web前端技术课程作业
  11. postgresql注册表删除_彻底删除SQL Server注册表的方法
  12. 新浪微博开放平台php sdk,新浪微博开放平台
  13. 美国加拿大结婚证公证及使馆认证流程时间用于国内法院离婚
  14. 使用css样式做出亚克力背景和透明背景
  15. 优课教育HTML+css
  16. Excel2019选择数据后,指定数据作为x轴
  17. 智能扭矩系统——SunTorque智能扭矩系统,引领拧紧工艺新变革!
  18. verilog实现Lemmings(疯狂小旅鼠)游戏
  19. C/C++、OS、网络面经
  20. 《概率与数理统计》知识点【更新中】

热门文章

  1. 使用ireport创建报表模板时,向subdataset中传参
  2. 晶闸管整流桥matlab仿真,整流12脉中频电源MATLAB-Simulink仿真及谐波分析
  3. 基于脉振高频电压信号注入法的PMSM无位置传感器控制原理和仿真
  4. 微型计算机内存一般为多少,微型计算机内存容量的基本计量单位
  5. 【华人学者风采】于非 加拿大卡尔顿大学
  6. 周杰伦新专辑预售热点传播渠道分析
  7. 九度[1029]-魔咒词典
  8. 计算机组成原理_在线作业1,电子科大《计算机组成原理》在线作业1
  9. 通过创建Google快讯将定期搜索结果发送到Gmail信箱
  10. 基于STM32+华为云IOT设计的云平台监控系统