我的目的是让用户点击一个MenuItem,然后弹出如下窗口。

当用户输入客户账户和报关单号,点击确认后,系统会自动插入一条报关单记录。我们需要写这样一个类:

/***************************************************
(C) Copyright VYA All rights reserved.
Created Date:2019-09-16
Created By:Grady
Description of Behavior:批处理Demo
***************************************************/
public class VYA_Grady_BuildCustomsOrder extends RunBaseBatch
{dialog                  dialog;DialogField             dialogCustAccount;DialogField             dialogCustomsOrderNum;CustAccount             custAccount;VYA_CustomsOrderNum     customsOrderNum;VYA_CustomsOrderTable   customsOrderTable;CustTable               custTable;#define.CurrentVersion(1)#LOCALMACRO.CurrentListcustAccount,customsOrderNum#ENDMACROObject dialog()
{;dialog = super();dialogCustAccount       = dialog.addFieldValue(extendedTypeStr(CustAccount),custAccount,"客户账户");dialogCustomsOrderNum   = dialog.addFieldValue(extendedTypeStr(VYA_CustomsOrderNum),customsOrderNum,"报关单号");return dialog;
}boolean getFromDialog()
{boolean     ret;;ret = super();custAccount     = dialogCustAccount.value();customsOrderNum = dialogCustomsOrderNum.value();return ret;
}public void initParmDefault()//初始化参数
{super();
}public container pack()
{return [#CurrentVersion, #CurrentList];
}public boolean unpack(container packedClass)
{Integer     version      = RunBase::getVersion(packedClass);switch (version){case #CurrentVersion:[version, #CurrentList] = packedClass;break;default :return false;}return true;
}void run()
{#OCCRetryCountint retryCount;;if (!this.validate()){throw error("校验失败。");}try{ttsbegin;select firstFast custTablewhere custTable.AccountNum == custAccount;customsOrderTable.clear();customsOrderTable.ItemId = custTable.VYA_DefaultItemId;customsOrderTable.AccountNum = custAccount;customsOrderTable.CustomsOrderNum = customsOrderNum;customsOrderTable.insert();info("插入成功");ttscommit;}catch (Exception::Deadlock){ttsAbort;if (retryCount < #RetryNum){retryCount++;retry;}}catch (Exception::UpdateConflict){ttsAbort;if (appl.ttsLevel() == 0){if (xSession::currentRetryCount() >= #RetryNum){throw Exception::UpdateConflictNotRecovered;}else{retry;}}else{throw Exception::UpdateConflict;}}
}boolean validate(Object _calledFrom = null)//校验
{boolean ret =true;;return ret;
}static VYA_Grady_BuildCustomsOrder construct()
{return new VYA_Grady_BuildCustomsOrder();
}static public ClassDescription description()//批处理名称
{return "插入一条报关单记录。";
}static void main(Args _args)//程序主入口
{VYA_Grady_BuildCustomsOrder  runBaseBatchDemo;#OCCRetryCountsetprefix(VYA_Grady_BuildCustomsOrder::description());try{runBaseBatchDemo = new VYA_Grady_BuildCustomsOrder();if (runBaseBatchDemo.prompt()){runBaseBatchDemo.run();}}catch (Exception::Deadlock){ttsAbort;retry;}catch (Exception::UpdateConflict){ttsAbort;if (appl.ttsLevel() == 0){if (xSession::currentRetryCount() >= #RetryNum){throw Exception::UpdateConflictNotRecovered;}else{retry;}}else{throw Exception::UpdateConflict;}}
}
}

然后把这个类做成菜单就行啦。
这里用到了一个小技巧,那就是通过序列化保存用户上次输入的值。
原理是将

#LOCALMACRO.CurrentListcustAccount,customsOrderNum#ENDMACRO

这里的值将被序列化,然后存入数据库。
pack是序列化的过程,unpack是反序列化的过程。
要将序列化后的值存入数据库,有两种办法:
1、类继承runbase类,然后用saveLast()和getLast()
2、未继承此类的直接调用xSysLastValue的两个静态方法saveLast()和getLast()

20190924——功能类:弹出窗口,让用户输入值相关推荐

  1. java一个界面用另一个界面的值_如何将参数/值从一个弹出窗口传递到Angular2中的另一个弹出窗口...

    我在Angular2中有一个要求,我需要打开第一个弹出窗口,用户会输入一些值 . 在某些用户事件(即按钮单击)上,我需要关闭该弹出窗口并打开另一个弹出窗口,其中包含用户在第一个弹出窗口中输入的值 . ...

  2. u盘自动打开html,如何快速禁用U盘自动弹出(播放)功能无需手动关闭弹出窗口

    如何快速禁用U盘自动弹出(播放)功能无需手动关闭弹出窗口 发布时间:2013-08-26 17:04:27   作者:佚名   我要评论 移动硬盘分了N个区的时候需要手动一个一个的关掉自动播放窗口,真 ...

  3. js实现弹出窗口的拖拽功能

    弹出窗口的拖拽 拖拽功能运用到的有 onmousedown 事件,onmousemove 事件以及 onmouseup 事件 弹出窗口基本步骤: 1.点击点击弹出窗口按钮弹出窗口: 2.窗口弹出后,鼠 ...

  4. vue 提示框modal_v-dialogs v1.9.0 - 基于 Vue2 的简洁易用的弹出窗口,包含 modal, alert, mask, toast 等功能模式...

    v-dialogs 基于Vue2.x的简洁易用的弹出窗口插件,其包含有 Modal, Alert, Mask 与 Toast 等功能模式 更多文档.Demo 请访问: the jQuery versi ...

  5. android 百度地图覆盖物popupwindow自动弹出,android实现百度地图自定义弹出窗口功能...

    public class MyPopupOverlay extends ItemizedOverlay { private Context context = null; // 这是弹出窗口, 包括内 ...

  6. Visual C#弹出窗口杀手

    2002-11-19· ···ASPCool.com 弹出窗口杀手是一个可以自动关闭IE弹出窗口的程序,它工作在系统的托盘中,按照一定的间隔来检测IE窗口,然后关闭弹出窗体.最后,还提供了用热键来杀掉 ...

  7. 一劳永逸 让你与IE弹出窗口彻底告别

    新闻来源:天极安全 使用电脑的过程中,弹出窗口我们经常遇到,一些是对应我们的操作必须出现的,而有些则是被动接受的.尤其是各种广告窗口更是无孔不入,防不胜防,这些弹出窗口严重影响了电脑的正常使用,甚至会 ...

  8. ASP.NET弹出窗口技术之增加网站流量方法

    作为Microsoft的最新建立动态Web网站的工具,ASP.NET相对于ASP和JSP在改变原始的Web编程方式方面有了长足的长进.它的代码与页面分离技术(CodeBehind)以及完善的Web服务 ...

  9. python的窗口处理模块_Python tkinter模块弹出窗口及传值回到主窗口操作详解

    本文实例讲述了Python tkinter模块弹出窗口及传值回到主窗口操作.分享给大家供大家参考,具体如下: 有些时候,我们需要使用弹出窗口,对程序的运行参数进行设置.有两种选择 一.标准窗口 如果只 ...

  10. OO实现ALV TABLE 六:ALV的弹出窗口形式

    前面的例子ALV列表都是直接输出在主窗口中,下面我们实现在弹出窗口中实现ALV.在弹出窗口中实现ALV也很简单,只要在实现类CL_SALV_TABLE的一个方法SET_SCREEN_POPUP就可以了 ...

最新文章

  1. jQuery插件thickbox在ie下垂直居中问题
  2. vue和react相同点_我在React和Vue中创建了相同的应用程序。 这是区别。
  3. Qlik收购Idevio,为客户带来先进的地理信息分析功能
  4. 电子商务思维导图精品荟萃:电子商务思维导图大全[多图精品收藏]
  5. IBM MR10i阵列卡配置Raid0/Raid1/Raid5(转)
  6. 用户注册 - 判断用户名存在
  7. java库存导出_java生成导出excle文件
  8. 素材网源码资源下载站源码,带用户中心和VIP充值系统,后台管理+素材下载+积分金币下载
  9. Python标准库判断图片文件和声音文件的格式
  10. Wireshark教程(简介、抓包、过滤器)
  11. 不写一行代码,搭建Jenkins+Jmeter+Ant接口自动化框架
  12. php漫画源码,小涴熊漫画CMS:开源的PHP漫画源码
  13. 爬虫项目十六:用 Python 三十行代码采集QQ群成员信息,很简单
  14. 嵌入式大佬 | 嵌入式C语言知识点万字总结
  15. autocad 二次开发 拆分图纸_(整理)autocad二次开发块表记录获得和cad层级结构,以及图块保存与打开....
  16. 分享两个开源的成品项目,一个视频播放器,一个音乐播放器!
  17. 【python】给excel加密
  18. android 转码工具下载,m3u8视频转码工具
  19. Js鼠标放上去图片变大变小
  20. 从事c++一年的感悟

热门文章

  1. 联想电脑怎样把计算机放桌面,怎样在电脑桌面上添加文字提醒
  2. ret2syscall
  3. 一、手把手教你 Vue2+Ts
  4. 为外部硬件设置一键连接WiFi HF-SmartLink V7的使用
  5. Matlab之贝塞尔函数
  6. NTFS和FAT32文件系统获取分区卷标的方法
  7. 南京大学地图学与地理信息系统815考研资料
  8. html和 xhtml的区别
  9. Ghost11之DISK TO DISK引发的血案
  10. 大数据+NCAA=?球迷情绪预测体育赛事结果