转自: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画布不同标签间切换的方法的更多相关文章

  1. 在多行列表中id同名的<a>标签点击事件处理方法

    Struts2标签 问题描述:最近项目中在使用struts迭代标签动态生成列表的过程中,由于每一行li元素中包含<a>超链接,如下图 一开始超链接是这样的<a href=“#” id ...

  2. html中控制Tab键的顺序

      在做项目中,需要控制html页面上登陆表单的按Tab键的顺序,代码如下: <tr>                         <td width="19%&quo ...

  3. 请写出在ASP.NET中常用的几种页面间传值的方法,并说出它们的特点。

    QueryString 传递一个或多个安全性要求不高或是结构简单的数值.但是对于传递数组或对象的话,就不能用这个方法了 session(viewstate) 简单,但易丢失 作用于用户个人,过量的存储 ...

  4. ElementUI使用v-if控制tab标签显示遇到的Duplicate keys detected: 'xxx'问题

    今天工作遇到一个问题: 需求背景:页面中有几个tab,需要根据登录用户的权限控制tab标签的显示与隐藏 . <el-tabs @tab-click="handleClick" ...

  5. Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行

      H1/H2/H3/H4标题标签常常使用在一个网页中唯一标题.重要栏目.重要标题等情形下. H1在一个网页中最好只使用一次,如对一个网页唯一标题使用.H2.H3.H4标签则可以在一个网页中多次出现, ...

  6. JAVAEE——BOS物流项目11:在realm中授权、shiro的方法注解权限控制、shiro的标签权限控制、总结shiro的权限控制方式、权限管理

    1 学习计划 1.在realm中进行授权 2.使用shiro的方法注解方式权限控制 n 在spring文件中配置开启shiro注解支持 n 在Action方法上使用注解 3.★使用shiro的标签进行 ...

  7. bootstrap框架中data-toggle="tab"属性会取消a标签默认行为

    这几天做公司项目用了bootstrap框架,在用导航组件的过程中,我发现在a标签里面添加data-toggle="tab"属性之后,这个a标签会失去默认行为,点击a标签的时候不会跳 ...

  8. selenium控制超链接在当前标签页中打开或重新打开一个标签页

    selenium控制超链接在当前标签页中打开或重新打开一个标签页 在web页面源码中,控制超链接的打开是在当前标签页还是重新打开一个标签页,是由属性target=“_black”进行控制的.如果还有属 ...

  9. FORM中的MOAC控制

    1.创建表时,对_ALL表创建同义词 -- Create Multi Org Synonym CREATE  OR REPLACE  SYNONYM CUX_WF_DEF_HEADER FOR CUX ...

随机推荐

  1. WIP_DISCRETE_JOBS.STATUS_TYPE

    WIP_DISCRETE_JOBS.STATUS_TYPE Value Meaning 7 Cancelled 8 Pending Bill Load 9 Failed Bill Load 10 Pe ...

  2. 国内的一些开源镜像站汇总,EPEL源

    国内的一些开源软件的镜像站 汇总 CentOS6.5安装 EPEL 源 国内高校的开源镜像站 中国科学技术大学(debian.ustc.edu.cn)    上海交通大学(ftp.stju.edu.c ...

  3. windows上制作懒人版MAC cdr/iso

    本教程以XPS15 L501X机型为例在windows7下讲解Lion纯净系统的制作及安装过程,以及一些后续美化,如果已有mac系统,就更简单了,照猫画虎即可.主楼的帖子对新手来讲信息量太大,所以关于 ...

  4. Spring读取加密属性文件处理

    引言:Spring框架俨然已经是目前Java WEB项目开发的一个宠儿,更有人将Spring, Struts,和Hibernage称之为Java WEB项目开发的3件利器.Spring的依赖.注入.A ...

  5. UVa 11752 - The Super Powers 数学

    请看这个说明http://blog.csdn.net/u014800748/article/details/45914353 #define _CRT_SECURE_NO_WARNINGS #incl ...

  6. asp.net基础

    这篇主要讲述以下基础知识: Request对象 Response对象 Server对象 Cookie对象 Application对象 ViewState对象 <%%>与<%=%> ...

  7. 利用fgets,fputs的回显程序

    #include <stdio.h> #define MAXLINE 20 int main(void) { char line[MAXLINE]; while(fgets(line,MA ...

  8. scp 详细总结

    转自:http://www.ha97.com/4169.html scp命令跟cp命令类似,只不过cp命令是在同一台机器上用的,scp是在两台机器上复制传输数据的命令.scp实质相当于利用SSH协议来 ...

  9. HADOOP2.2.0安装配置指南

    一.     集群环境搭建 这里我们搭建一个由三台机器组成的集群: Ip地址 用户名/密码 主机名 集群中角色 操作系统版本 192.168.0.1 hadoop/hadoop Hadoop-mast ...

  10. HW2.14

    import java.util.Scanner; public class Solution { public static void main(String[] args) { final dou ...