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

简介:
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,如需转载请自行联系原作者
相关文章
|
10月前
|
存储 缓存 IDE
在函数计算(FC)中,如果已经按照指示完成了插件的安装,但插件没有显示在SD的菜单中
在函数计算(FC)中,如果已经按照指示完成了插件的安装,但插件没有显示在SD的菜单中
234 3
|
17天前
|
人工智能 自然语言处理 测试技术
指令跟随大比拼!Meta发布多轮多语言基准Multi-IF:覆盖8种语言,超4500种任务
Meta发布的Multi-IF新基准旨在评估大型语言模型(LLMs)在多轮和多语言指令跟随方面的能力。该基准扩展了IFEval,包含4501个多语言对话,每个对话有三个回合,涵盖8种语言。评估结果显示,现有模型在多轮和非拉丁字母语言中的表现较差,揭示了LLMs在这些方面的潜在限制。尽管存在局限性,Multi-IF为更全面、真实的模型评估提供了重要参考,推动LLMs的发展与改进。论文链接:https://arxiv.org/abs/2410.15553
49 29
|
8月前
|
机器学习/深度学习 缓存 运维
函数计算产品使用问题之如何解决SD中安装了ebsynth_utility插件但在webui中没有入口的问题
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
206 4
|
8月前
|
缓存 运维 Serverless
函数计算产品使用问题之在SD上安装了'inpaint anything'这个插件,但是不显示,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
134 1
|
7月前
|
存储 算法 Java
【CPP】slt-list由认识到简化模拟实现深度理解~
【CPP】slt-list由认识到简化模拟实现深度理解~
|
8月前
|
存储 缓存 运维
函数计算产品使用问题之SD上安装了inpaint anything插件,但是不显示,该如何解决
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
600 0
|
8月前
|
域名解析 运维 Serverless
函数计算产品使用问题之除了stable diffusion(稳定扩散)部署方式之外,还有什么部署选项
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
9月前
|
数据可视化 C# 图形学
【推荐100个unity插件之18】Unity 新版输入系统Input System的基础使用
【推荐100个unity插件之18】Unity 新版输入系统Input System的基础使用
291 0
|
9月前
|
存储 运维 Cloud Native
函数计算产品使用问题之SD常用模型插件是否都需要自己下载模型或者上传吗
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
uml C++
VS工具使用——代码生成函数关系图
小引: 在上篇文章《VS工具使用——代码图》中,我向大家介绍了我对工具“代码图”的发现和认识。真是感觉当自己的眼睛不再被蒙蔽的时候,会发现整个世界的美好。所以,这次要向大家介绍我对VS中的另一个容易被忽视的工具—— 自动生成代码关系依赖图的理解。
691 0