转:http://yedward.net/?id=82

1、execute_trigger:用来运行一个指定的触发器,常用来运行用户自定义的触发器。

语法:procedure execute_trigger(trigger_name varchar2),其中trigger_name是指定的一个有效的用户命名的触发器。execute_trigger无法指定调用的trigger的范围,所以forms一般会从最底层的触发器开始,然后向上处理,所以我见过一些用到execute_trigger的时候,它调用的自定义触发器都写在了form级别。

如果要运行一个关联了键(Key)的内置触发器,应该使用内置函数do_key而不是execute_trigger。例如execute_trigger('KEY-NEXT-ITEM')就应该改为do_key('NEXT_ITEM')。

值得注意的是,对于内置的触发器虽然也可以用execute_trigger来执行,但是这种方式并不是推荐的,因为默认的失败处理行为是不同的,它不像forms按照规则自动调用触发器那样处理。例如,在默认的处理中,如果when-validate-item触发器失败,那么它会抛出一个异常并停止form的运行,但是,如果when-validate-item是由execute_trigger来调用执行的,那么如果调用执行失败了,这个失败并不会停止form的运行,而是在执行execute_trigger以后返回的时候把变量form_failure设置为false。所以,一般的execute_trigger更常用在执行自定义的触发器。

下面是我在看form中menu的时候的一段代码,放在这里加强学习:

set_menu_item_property ('VIEW_MENU.DEFAULT', CHECKED, PROPERTY_FALSE);
set_menu_item_property ('VIEW_MENU.SAVED', CHECKED, PROPERTY_FALSE);
set_menu_item_property ('VIEW_MENU.CUSTOM', CHECKED, PROPERTY_TRUE);
set_menu_item_property ('VIEW_MENU.SET_1', CHECKED, PROPERTY_FALSE);
Execute_trigger('T_view_custom'); -- T_view_custom就是自定义的触发器

至于上面涉及到的form_failure以及form_success,它们表示的是返回上一次form执行结果的布尔表达式,至于是true还是false,请参见下面:

对于form_failure,其返回值如下:

success            FALSE

failure             TRUE

fata error         FALSE

对于form_success,其返回值如下:

success            TRUE

    failure              FALSE

    fata error         FALSE

2、do_key:运行对应于特定内置子程序的键触发器,它的功能相当于按下相应的功能键。

内置子程序 键触发器 相关的功能键
CLEAR_BLOCK                            Key-CLRBLK                            [Clear Block]           
                CLEAR_FORM                            Key-CLRFRM            [Clear Form]
                CLEAR_RECORD                            Key-CLRREC                            [Clear Record]           
                COMMIT_FORM                            Key-COMMIT                            [Commit]           
                COUNT_QUERY                            Key-CQUERY                            [Count Query Hits]           
                CREATE_RECORD                            Key-CREREC                            [Insert Record]           
                DELETE_RECORD                            Key-DELREC                            [Delete Record]           
                DOWN                            Key-DOWN                            [Down]           
                DUPLICATE_ITEM                            Key-DUP-ITEM                            [Duplicate Item]           
                DUPLICATE_RECORD                            Key-DUPREC                            [Duplicate Record]           
                EDIT_TEXTITEM                            Key-EDIT                            [Edit]           
                ENTER                            Key-ENTER                            [Enter]           
                ENTER_QUERY                            Key-ENTQRY                            [Enter Query]           
                EXECUTE_QUERY                            Key-EXEQRY                            [Execute Query]           
                EXIT_FORM                            Key-EXIT                            [Exit/Cancel]           
                HELP                            Key-HELP                            [Help]           
                LIST_VALUES                            Key-LISTVAL                            [List]           
                LOCK_RECORD                            Key-UPDREC                            [Lock Record]           
                NEXT_BLOCK                            Key-NXTBLK                            [Next Block]           
                NEXT_ITEM                            Key-NEXT-ITEM                            [Next Item]           
                NEXT_KEY                            Key-NXTKEY                            [Next Primary Key Fld]           
                NEXT_RECORD                            Key-NXTREC                            [Next Record]           
                NEXT_SET                            Key-NXTSET                            [Next Set of Records]           
                PREVIOUS_BLOCK                            Key-PRVBLK                            [Previous Block]           
                PREVIOUS_ITEM                            Key-PREV-ITEM                            [Previous Item]           
                PREVIOUS_RECORD                            Key-PRVREC                            [Previous Record]           
                PRINT                            Key-PRINT                            [Print]           
                SCROLL_DOWN                            Key-SCRDOWN                            [Scroll Down]           
                SCROLL_UP                            Key-SCRUP                            [Scroll Up]           
                UP                            Key-UP                            [Up]           

表1:内置子程序 - 键触发器 - 功能键对应表

需要注意的是do_key只接受内置子程序的名字作为参数,而不是键的名字,上面的对应表非常重要哦,在以后开发的时候参考非常有用,比如do_key('ENTER_QUERY')和execute_trigger('Key-ENTQRY')。

[Form Builder]内置函数execute_trigger、do_key详解的更多相关文章

  1. 函数新特性、内联函数、const详解

    一.函数回顾与后置返回类型 函数定义中,形参如果在函数体内用不到的话,则可以不给形参变量名字,只给其类型. 函数声明时,可以只有形参类型,没有形参名 把函数返回类型放到函数名字之前,这种写法,叫前置返 ...

  2. SpringBoot内置生命周期事件详解 SpringBoot源码(十)

    SpringBoot中文注释项目Github地址: https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE 本篇接 SpringBoot事件监听 ...

  3. iOS OC内联函数 inline的详解

    inline 在iOS中的一些框架中,static inline是经常出现的关键字组合. static自不用多说,表示在当前文件中应用,如 static A, 在其它文件中也可以出现static A. ...

  4. Spring Cloud内置的Zuul过滤器详解

    Spring Cloud默认为Zuul编写并启用了一些过滤器,这些过滤器有什么作用呢?我们不妨按照@EnableZuulServer.@EnableZuulProxy两个注解进行展开,相信大家对这两个 ...

  5. Python内置OS模块用法详解

    大家好,从今天起早起Python将持续更新由小甜同学从初学者的角度学习Python的笔记,其特点就是全文大多由新手易理解的代码与注释及动态演示.刚入门的读者千万不要错过! 很多人学习python,不知 ...

  6. Python自动化运维之5、内置函数

    python3.x内置函数 官网详解 一些例子:后期慢慢接触到再补充 # help() 详细查看某个类有那些方法或者方法的具体使用 >>> help(str) >>> ...

  7. MYSQL常用内置函数详解说明

    函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...

  8. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

  9. Python内置函数详解

    置顶   内置函数详解 https://docs.python.org/3/library/functions.html?highlight=built#ascii https://docs.pyth ...

随机推荐

  1. C#中的深拷贝与浅拷贝

    1.基本的概念: 首先我们应该了解一下什么叫深拷贝与浅拷贝(Deep Copy and Shallow Copy). a.浅拷贝(Shallow Copy影子克隆):只复制对象的基本类型,对象类型,仍 ...

  2. 【转】国内用户如何加快App Store的访问速度

    原文网址:http://www.app111.com/doc/100024206_1.html 作为国内互联网用户是比较可怜的,除了国外四大顶尖互联网服务不能访问外,就是App Store用得也比较痛 ...

  3. jQuery on()方法绑定动态元素的点击事件

    之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态 ...

  4. 使用Bugfree不应有的坏习惯

    Bugfree是一款优秀的bug管理和追踪工具,因此受到不少公司的青睐.但实际的工作中,我发现不少开发或是测试的同事有一些不好的使用习惯,使得我们对Bugfree的利用不够高效.我下面列出使用Bugf ...

  5. 两个结构体ifconf和ifreq

    用ioctl获得本地ip地址时要用到两个结构体ifconf和ifreq,它们对于大多数人来说都是比较陌生的,这里给大家一种比较简单的理解方法,当然只一种帮助理解的方法,在描述中可能会有一些地方与真实定 ...

  6. STL总结之vector

    STL中vector是通常作为数组使用,不过它更像一个动态数组,在实际项目开发中大量使用. 优点:存储空间连续,可以使用下标访问,时间复杂度O(1). 缺点:不适合从中间删除和添加元素. C++标准规 ...

  7. JavaScript下拉框去除重复内容

    下拉框去除重复内容 <script type="text/javascript" src="http://www.joleye.com/libraries/java ...

  8. Restful与webService区别

    有好多人问我们在设计底层服务的时候到底是应该选择目前最流行的RestFul架构还是选择老牌的webService呢?今天我就将这两个概念做一下阐述,到底什么情况下选择什么比较合理. 首先需要了解:RE ...

  9. 【原】Redis入门教程

    最近在学习Redis,写几篇文章记录一下学习过程:Redis入门教程. 1.Redis基本概念 Redis Redis Keys Redis 基本数据类型 Redis基本操作 遍历操作 Pub-Sub ...

  10. makefile for VCS from Syn@psys

    已调试通过 未来将修改成verdi的FSDB版本 下载后把 Makefile_VCS.txt 修改为 Makefile 就可以使用 链接地址: http://files.cnblogs.com/all ...