[Form Builder]内置函数execute_trigger、do_key详解

转: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')。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值