×
畅享IT
    信息化规划
    IT总包
    供应商选型
    IT监理
    开发维护外包
    评估维权
客服电话
400-698-9918
当前位置:畅享论坛 >  信息化  >  ERP-企业资源计划 > 正文
发帖
回复
(共 0 条) 上一页 下一页
查看: 2969|回复: 0

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

[复制链接]

等级:助理
行业:
职能部门:
城市:郑州市
金币:632

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);
        }

界面如下。

 



畅享论坛提示:看帖后顺手回帖,是对辛苦发帖者的鼓励,是美德。

查阅更多相关主题的帖子: ERP技术 MRP SAP Sbo2005B 富盛Sbo-Addon程序开发框架
(共 0 条) 上一页 下一页
您还未登录,不能对文章发表评论!请先登录
2020-07-13 10:01:22 209/2020-07-13 10:01:43 257/2020-07-13 10:01:43 398