触发器详解
1. ACCEPT
APP_STANDARD.EVENT(‘ACCEPT’);
这个触发器处理菜单或工具条上调用Save and Proceed (保存并继续)动作。它执行保存,并移动到指定当作第一个导航块的块上。替换这个触发器中的代码,或创建块级触发器并把执行类型指定为‘Override’.
2. FOLDER_RETURN_ACTION
null;
这个触发器允许指定客户化的文件夹事件用需要的处理文件夹动作的代码替换。
3. KEY_DUPREC
APP_STANDARD.EVENT(‘KEY-DUPREC’);
这个触发器禁用了Oracle 表单默认的重复记录的功能。
4. KEY-CLRFRM
APP_STANDARD.EVENT(‘KEY-CLRFRM’);
这个触发器在试图清空form前验证记录,在原来的代码后添加附加的代码,通常你你应添加GO_BLOCK如果form中存在多个的区域,使用GO_BLOCK在调用清空from操作后重新填充控制菜单
5. KEY_MENU
APP_STANDARD.EVENT(‘KEY-MENU’);
这个触发器禁用了Oracle froms的Block Menu 命令. 为了启用从特定的块对替代的块通过键盘操作,那么编写块级KEY_MENU并且设定执行类型为’Override ’这个触发器会打开一个与弹出式菜单相同的LOV
6. KEY_LISTVAL
APP_STANDARD.EVENT(‘KEY-LISTVAL’);
这个触发器执行弹性域操作或引用LOV
创建块或项级触发器并设置执行类型为‘Override’,可以使用日历或动态执行弹性域
7. ON-ERROR
APP_STANDARD.EVENT(‘ON-ERROR’);
这个触发器处理服务器或客户端的所有的错误,使用消息字典调用。为了捕获处理指定的错误,在调用APP_STANDARD前检查指定的错误
declare original_mess varchar2(80); begin IF MESSAGE_CODE = <your message number> THEN original_mess := MESSAGE_TYPE||’–’|| to_char(MESSAGE_CODE)||’: ’||MESSAGE_TEXT; ––– your code handling the error goes here message(original_mess); ELSE APP_STANDARD.EVENT(’ON_ERROR’); END IF end;
8. PRE-FORM
FND_STANDARD.FORM_INFO(’$Revision: <Number>$’, ’<Form Name>’, ’<Application Shortname>’, ’$Date: <YY/MM/DD HH24:MI:SS> $’, ’$Author: <developer name> $’); APP_STANDARD.EVENT(’PRE–FORM’); APP_WINDOW.SET_WINDOW_POSITION(’BLOCKNAME’, ’FIRST_WINDOW’);
这个触发器初始化Oracle 应用的内部值和菜单。在这里输入的值将在Oracle应用程序菜单‘Help About Oracle Applications’中看到。
你必须编辑应用程序的简称,应用的简称控制当用户选择‘help’按钮后哪个应用的在线帮助文档将被调用。如果你将应用的简称设置为FND,你的用户将会看不到任何帮助因为Oracle应用程序将不能建立可用的帮助目标。
Form的名称是用户form名称(form标题)。
Oracle公司使用源控制系统,它可以自动更新以“$”开头的值,如果你不使用这个源控制系统你可以按你的开发信息编辑这些值。
你必须编辑APP_WINDOW中的BLOCKNAME为你自己的block.不要编辑FIRST_WINDOW
9. QUERY_FIND
APP_STANDARD.EVENT(‘QUERY_FIND’);
这个触发器将设置显示字符串’Query Find is not available ’
在这个触发器中替代代码,当你创建窗口或Row_LOV在你的form中时创建块级触发器并设置执行类型为‘Override’
10. WHEN-NEW-FORM-INSTANCE
FDRCSID(’$Header: ... $’); APP_STANDARD.EVENT(’WHEN–NEW–FORM–INSTANCE’); app_folder.define_folder_block(’template test’, ’folder_block’, ’prompt_block’, ’stacked_canvas’, ’window’, ’disabled functions’); --app_folder.event(’VERIFY’);
调用 APP_STANDARD.EVENT 是为了在query-only模式下调用FND_FUNCTION.EXECUTE,调用FNDRCSID是为了Oracle 应用程序的源控制系统(source control system).APP_FOLDER 只为了Oracle应用程序内部调用。客户化form不需要FDRCSID或APP_FOLDER调用,但是如果将它们留在触发器中也没有影响。
在现有的代码前添加附加代码。
11. WHEN-NEW-RECORD-INSTANCE
APP_STANDARD.EVENT(‘WHEN-NEW-RECORD-INSTANCE’);
这个触发器管理Oracle应用程序菜单和工具栏
创建块级触发器并设置执行类型为‘Before’.
12. WHEN-NEW-ITEM-INSTANCE
APP_STANDARD.EVENT(‘WHEN-NEW-ITEM-INSTANCE’);
这个触发器管理Oracle应用程序的菜单和工具栏
如果你添加弹性域方法调用,你应该添加它在APP_STANDARD.EVENT 调用前调用,通常,你不应该添加任何代码在这个触发器中,这样的代码将会影响你表单的速度并且影响每一个项
13. POST-FORM
APP_STANDARD.EVENT(‘POST-FORM’);
这个触发器是预留为以后使用,添加附加的代码在原有代码之后。
以下为不能修改的触发器
Oracle应用程序不支持修改的form级触发器.
1. CLOSE_THIS_WINDOW
从菜单Action->Close 调用触发器APP_CUSTOM.CLOSE_WINDOW 。
2. CLOSE_WINDOW
APP_CUSTOM.CLOSE_WINDOW(:SYSTEM.EVENT_WINDOW);
这个出发其处理所有关闭窗口的事件。编写处理关闭窗口的事件必须写在APP_CUSTOM.CLOSE_WINDOW包中
3. EXPORT
App_standard.event(‘EXPORT’);
这个触发器是“Action,Export”菜单中的选择。
4. FOLDER_ACTION
App_folder.event(:global.folder_action);
5. KEY-COMMIT
App_standard.event(‘KEY-COMMIT’);
这个触发器处理正常的提交或form调用
6. KEY-EDIT
App_standard.event(‘KEY-EDIT’);
这个触发器处理弹性域或日历,编辑器操作。
7. KEY-EXIT
App_standard.event(‘KEY-EXIT’);
这个触发器处理关闭事件和退出enter-query状态
8. KEY-HELP
App_standard.event(‘KEY-HELP’);
这个触发器调用窗口的帮助系统。
9. LASTRECORD
APP_STANDARD.EVENT(‘LASTRECORD’);
这个触发器处理菜单(Go ->LAST RECORD)事件
10. MENU_TO_APPCORE
App_standard.event(:global.menu_to_appcore);
这个触发器支持Special菜单
11. STANDARD_ATTACHMENTS
Atchmt_api.invoke;
这个触发器处理附件菜单或工具按钮的调用
12. WHEN-WINDOW-CLOSE
Execute_trigger(‘CLOSE_WINDOW’);
这个触发器集中了form的关闭事件
13. WHEN-FORM-NAVIGATE
你不能修改这个触发器,它包含了标准的行为,当最小化的表单被导航到的时候正常化这个表单。
14. ZOOM
Appcore_custom.event(‘ZOOM’);
这个触发器处理菜单或工具条按钮’Action,Zoom ’事件。