[转]Form中控制Tab画布不同标签间切换的方法
转自: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' then
validate(block_scope);
if :system.MODE = 'ENTER-QUERY' or not form_success then
set_canvas_property('TAB_DEMO', topmost_tab_page, :system.tab_previous_page);
return;
end if;
elsif :system.tab_previous_page = 'LINES' then
validate(block_scope);
if :system.MODE = 'ENTER-QUERY' or not form_success then
set_canvas_property('TAB_DEMO', topmost_tab_page, :system.tab_previous_page);
return;
end if;
end if;
if :system.tab_new_page = 'LINES' then
show_view('ORDER_LINES_STACKED');
go_item('ORDER_LINES.ORG'); -- ORDER_LINES.ORG是一个Item,假设本来LINES标签页上就已经设置了
elsif :system.tab_new_page = 'HEADERS' THEN
hide_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');
[转]Form中控制Tab画布不同标签间切换的方法的更多相关文章
- 在多行列表中id同名的<a>标签点击事件处理方法
Struts2标签 问题描述:最近项目中在使用struts迭代标签动态生成列表的过程中,由于每一行li元素中包含<a>超链接,如下图 一开始超链接是这样的<a href=“#” id ...
- html中控制Tab键的顺序
在做项目中,需要控制html页面上登陆表单的按Tab键的顺序,代码如下: <tr> <td width="19%&quo ...
- 请写出在ASP.NET中常用的几种页面间传值的方法,并说出它们的特点。
QueryString 传递一个或多个安全性要求不高或是结构简单的数值.但是对于传递数组或对象的话,就不能用这个方法了 session(viewstate) 简单,但易丢失 作用于用户个人,过量的存储 ...
- ElementUI使用v-if控制tab标签显示遇到的Duplicate keys detected: 'xxx'问题
今天工作遇到一个问题: 需求背景:页面中有几个tab,需要根据登录用户的权限控制tab标签的显示与隐藏 . <el-tabs @tab-click="handleClick" ...
- Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行
H1/H2/H3/H4标题标签常常使用在一个网页中唯一标题.重要栏目.重要标题等情形下. H1在一个网页中最好只使用一次,如对一个网页唯一标题使用.H2.H3.H4标签则可以在一个网页中多次出现, ...
- JAVAEE——BOS物流项目11:在realm中授权、shiro的方法注解权限控制、shiro的标签权限控制、总结shiro的权限控制方式、权限管理
1 学习计划 1.在realm中进行授权 2.使用shiro的方法注解方式权限控制 n 在spring文件中配置开启shiro注解支持 n 在Action方法上使用注解 3.★使用shiro的标签进行 ...
- bootstrap框架中data-toggle="tab"属性会取消a标签默认行为
这几天做公司项目用了bootstrap框架,在用导航组件的过程中,我发现在a标签里面添加data-toggle="tab"属性之后,这个a标签会失去默认行为,点击a标签的时候不会跳 ...
- selenium控制超链接在当前标签页中打开或重新打开一个标签页
selenium控制超链接在当前标签页中打开或重新打开一个标签页 在web页面源码中,控制超链接的打开是在当前标签页还是重新打开一个标签页,是由属性target=“_black”进行控制的.如果还有属 ...
- FORM中的MOAC控制
1.创建表时,对_ALL表创建同义词 -- Create Multi Org Synonym CREATE OR REPLACE SYNONYM CUX_WF_DEF_HEADER FOR CUX ...
随机推荐
- hdu4671Backup Plan
http://acm.hdu.edu.cn/showproblem.php?pid=4671 这个高端的题意啊 看了N久啊 n>m时 直接第一列按顺序来 第二列为M+1 else 第一列顺序 ...
- BZOJ3585: mex
3585: mex Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 322 Solved: 169[Submit][Status] Descripti ...
- Journal.Today 1.0.0
我喜欢把一天的日记都放在一个文件中,而不是每次都新建一个文件. 写了一个脚本,检测当天是否已经新建日记,已经新建则打开,未新建则新建并打开. 其中我不太喜欢Wiz日记本来的标题命名方式,所以都 ...
- [liu yanling]软件测试技巧
1.添加.修改功能 (1)是否支持tab键 (2)是否支持enter键 (3)不符合要求的地方是否有错误提示 (4)保存后,是否也插入到数据库中 (5)字段唯一的,是否可以重复添加 (6)对编辑页列表 ...
- localStorage保存账号密码
首先是判断浏览器是否支持这一属性,他是HTML5里的属性: if(window.localStorage){ alert('支持');}else{ alert('不支持');} localStorag ...
- Java笔记(二)……Hello world!
编写源文件 将Java代码编写到扩展名为.java的文件中,此文件称为源文件. 1: class Hello 2: { 3: public static void main(String[] args ...
- poj 2528 线段树 离散化的小技巧
题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报思路:直接搞超时+超内存,需要离散化.离散化简单的来说就是只取我们需要的值来 用,比如说区间[1000,2000],[1990,2012] ...
- 使用Windows Azure创建Linux系统虚拟机-上
创建虚拟机来运行Linux 当您在Azure管理门户中使用映像图库时,创建运行Linux的虚拟机很容易.本指南告诉您如何做到这一点,假设你没有使用过Azure. 注意: 即使你不需要使用过Azure虚 ...
- algorithm@ Matrix fast power
一. 什么是快速幂: 快速幂顾名思义,就是快速算某个数的多少次幂.其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高.一般一个矩阵的n次方,我们会通过连乘n-1次来得到它的n次 ...
- java中的"goto"--label
java中没有goto,但是goto是保留字.例如int goto;是不合法的. 但是java中有标签,仅作用在多重循环的continue和break中. continue和break只能作用于本层循 ...