转自:http://yedward.net/?id=68

Form中一般常用的画布类型包括content、stacked、tab这三种,其实content类型的画布是每一个form都必须有的,而且只能有且仅有一个。其中,Tab画布算是比较特殊的一种画布了,首先不能直接在Tab上放置任何item,所有的item都是放在Tab的下属的标签页中,其次它的切换也还是蛮有门道的,这篇文章就聊聊怎么控制Form中Tab画布不同标签之间的切换。

假设有这样一个例子,有一个Tab画布(名为TAB_DEMO),其下有headers、lines两个标签页,同时还有一个名为order_lines_stacked的stacked类型的画布,我想实现,headers是第一个标签页,也是默认展示的标签页,我要把order_lines_stacked放在lines标签里面,当切换到lines的时候,order_lines_stacked显示,切换到headers的时候,order_lines_stacked又隐藏掉。

对于上面这个例子,首先要知道的是Tab画布及其标签页和堆叠画布其实是独立的,并不能直接通过属性设置来让stacked画布放置在某一个Tab标签页中,这个时候想要实现这样的功能,就要通过代码来实现,这也就是我要说的Tab特殊的一个地方。这里,我们要用到一个Form级的WHEN-TAB-PAGE-CHANGED触发器,特别要注意的是该触发器的fire条件是用鼠标点击时才触发,也正因为这样后面我们还要加一个触发器,以实现当是使用快捷键而不是鼠标点击来切换标签时候的功能实现。

对于上面的例子,实现过程如下:

在Form级添加WHEN-NEW-FORM-INSTANCE,代码如下:

set_canvas_property('TAB_DEMO', TOPMOST_TAB_PAGE, 'HEADERS');
hide_view('ORDER_LINES_STACKED');

在Form级添加WHEN-TAB-PAGE-CHANGED,代码如下:

if :system.tab_previous_page = 'HEADERS' thenvalidate(block_scope);if :system.MODE = 'ENTER-QUERY' or not form_success thenset_canvas_property('TAB_DEMO', topmost_tab_page, :system.tab_previous_page);return;end if;
elsif :system.tab_previous_page = 'LINES' thenvalidate(block_scope);if :system.MODE = 'ENTER-QUERY' or not form_success thenset_canvas_property('TAB_DEMO', topmost_tab_page, :system.tab_previous_page);return;end if;
end if;
if :system.tab_new_page = 'LINES' thenshow_view('ORDER_LINES_STACKED');go_item('ORDER_LINES.ORG');           --  ORDER_LINES.ORG是一个Item,假设本来LINES标签页上就已经设置了
elsif :system.tab_new_page = 'HEADERS' THENhide_view('ORDER_LINES_STACKED');go_item('ORDER_HEADERS.DESCRIPTION');      -- ORDER_HEADERS.DESCRIPTION是一个Item,假设本来HEADERS标签页上已经设置了
end if;

如果是使用快捷键切换的话,不会触发上面的trigger,所以做如下处理:

在ORDER_LINES.ORG这Item上面添加一个WHEN-NEW-ITEM-INSTANCE触发器,代码如下:

show_view('ORDER_LINES_STACKED');

在ORDER_HEADERS.DESCRIPTION上面添加一个WHEN-NEW-ITEM-INSTANCE触发器,代码如下:

hide_view('ORDER_LINES_STACKED');

转载于:https://www.cnblogs.com/pompeii2008/p/5407587.html

[转]Form中控制Tab画布不同标签间切换的方法相关推荐

  1. html怎么键tab键,html中控制Tab键的顺序

    在做项目中,需要控制html页面上登陆表单的按Tab键的顺序,代码如下: 账 号:昵称: 备注:这里的tabIndex的值可为0至32767之间的任意数字 当浏览者使用TAB键在网页控件中移动时,将首 ...

  2. Struts Form中Date类型之“argument type mismatch”错误解决方法

    现象: 当输入页面中含有日期如2008-01-01时,如果Form中对于的字段为Date类型,则会出现"argument type mismatch"错误. 原因: Struts的 ...

  3. React开发(132):ant design学习指南之form中控制展开和关闭逻辑

  4. Vue中使用file类型input标签,无法使用reset方法清空已经选择的文件【简单粗暴的解决方案】

    这是在一个vue+springboot的小项目中遇到的问题,如图: 看了其他大佬的文章,看到了不少解决方案,但是无济于事,我这里依然报错,我一不做 二不休直接提供一个是十分暴力的解决方案 下面这个是两 ...

  5. Cadence Orcad 中批量修改off-page connector 标签或者net名字方法

    最近做一项目需要批量修改off-page connector 和net网络标号,折腾了好半天总算完成了,现在抽空做一下总结: 第一步:打开原理图文件后选择要修改的页,如果修改整个原理图就选中整个原理图 ...

  6. vue项目中svg图(svg标签)的使用方法

    几天前,ui无法把我拉进项目iconfont库,只好切了一份svg图包给我,于是琢磨了怎么用,简单地记录一下 其实所在项目什么都配置好了,真正用到的只有最后一项 1. 安装依赖 npm install ...

  7. fieldset在form中的用法

    在表单的应用中,我们有时会用到对 form 的信息进行分组,例如"注册(regForm)",可能会将注册信息分组成基本信息(一般为必填),详细信息(一般为可选),因此可考虑在 fo ...

  8. LaTex 中 控制表格的行距

    LaTex 中 控制表格的行距 一个比较简单的方法是:表格中,在\begin{table}下加上 \renewcommand\arraystretch{1.5} \begin{table*} \ren ...

  9. Linux中设置tab4个空格,Linux怎么在VIM编辑器中修改Tab为4个空格

    摘要 腾兴网为您分享:Linux怎么在VIM编辑器中修改Tab为4个空格,云景任务,壹学车,围棋宝典,腾讯qq等软件知识,以及临沂市教育收费,美矣收银系统,我的世界rpgitem,来电归属地显示,盘古 ...

最新文章

  1. C++ 发手机短信(很易很简单)
  2. Eclipse版本列表
  3. 添加右键菜单_添加“复制路径”选项到右键菜单
  4. NAMENODE工作机制,元数据管理(元数据存储机制、元数据手动查看)、元数据的checkpoint、元数据目录说明(来自学习资料)
  5. 架构设计:远程调用服务架构设计及zookeeper技术详解(上篇)
  6. Linux用户空间与内核空间(理解高端内存)
  7. 【学步者日记】UnityEditor扩展菜单以及ScriptableObject
  8. 适用于ASP.NET的自定义分页控件
  9. 设计师学习HTML/CSS之路-09
  10. angularjs sill 创建项目_AngularJS快速上手,从安装到运行
  11. java第二章_Java第二章基本语法
  12. The content of element type “resultMap“ must match “(constructor?,id*,result*,association*,collectio
  13. 阿里全球数学竞赛落幕:全球最强73人出炉,北大获奖人数第一,还“炸出”各路世界大牛...
  14. 超详细的 DNS 协议解析
  15. c语言编程电机星三角启动,plc控制电机星三角启动梯形图
  16. 数学基础知识总结 —— 11. 什么是泰勒公式与泰勒级数
  17. nyoj 455-黑色帽子
  18. 免费长尾词挖掘API
  19. thead/thead标签怎么用?
  20. app接入支付宝后,支付成功后,回调不响应

热门文章

  1. 用一个二维码做下载app,自动区分是 ios 还是 android
  2. c语言个人所得税的打印思路,C语言编写一个计算个人所得税的程序,要求输入收入金额,能够输...
  3. 波浪下划线怎么设置_如何在word中的文字下面加波浪线
  4. SAP MM 常见移动类型及定义
  5. 鲁毅智权力交接:对AMD的影响还将继续
  6. 排列组合Cnm的求法
  7. 商城-折扣活动设计方案
  8. react网页添加水印
  9. Leetcode_6_Dynamic Programming_198,213打家劫室,打家劫室II
  10. 计算机休眠后无法唤醒出现蓝屏,笔记本电脑进入睡眠,唤醒后出现蓝屏怎么回事?...