转:FORM:客制化Form的菜单栏和右鍵菜單
Oracle EBS还允许客制化Form的菜单栏。
用户最多可以定义45个form-level的trigger,名称必须为SPECIALn,
其中SPECIAL1 to SPECIAL15属于Tools菜单项,
SPECIAL16 to SPECIAL30属于Reports菜单项,
SPECIAL31 to SPECIAL45属于Actions菜单项,其中Reports、Actions的名称可以被修改。
修改代码为:
APP_SPECIAL.INSTANTIATE('SPECIAL_B','库存');
APP_SPECIAL.ENABLE('SPECIAL_B',PROPERTY_On);
其中SPECIAL,SPECIAL_B,SPECIAL_C分别代表的是Tools,Reports,Actions。
初始化示例:
IF (FND_FUNCTION.TEST('DEMVC_DEMVCEOR_PRINT_ORDER')) THEN
app_special.instantiate('SPECIAL1','&Print Order');
app_special.enable('SPECIAL1',PROPERTY_ON);
app_special.instantiate('SPECIAL2','Specia&l 2 Line', '',TRUE,'LINE');
app_special.instantiate('SPECIAL3_CHECKBOX','Spe&cial 3 Box w Line', '',TRUE,'LINE');
app_special.set_checkbox('SPECIAL3_CHECKBOX','TRUE');
app_special.instantiate('SPECIAL4_CHECKBOX','Special &4 Box');
app_special.set_checkbox('SPECIAL4_CHECKBOX','TRUE');
app_special.instantiate('SPECIAL18','Specia&l 18 Line SEP', separator=>'LINE');
app_special.instantiate('SPECIAL32','Specia&l 32 Line', '',TRUE,'LINE');
app_special.instantiate('SPECIAL33','Specia&l 33');
app_special.instantiate('SPECIAL30','Specia&l 30');
app_special.instantiate('SPECIAL31','Specia&l 31 Line','',TRUE,'LINE');
app_special.instantiate('SPECIAL45','Spe&cial 45');
/* and display a button on the form */
app_item_property.set_property('orders.print_order',
DISPLAYED, PROPERTY_ON);
ELSE
app_item_property.set_property('orders.print_order',
DISPLAYED, PROPERTY_OFF);
END IF;
app_special.instantiate设置菜单项的文字说明,
app_special.enable设置菜单项是否可用,
app_special.set_checkbox设置check_box菜单项的选定状态。
在form-level 的SPECIALn trigger中,定义了这些菜单项选中后的处理代码,如下所示:
Eg1:
demvceor.PRINT_ORDER('SPECIAL1');
Eg2:
if (app_special.get_checkbox('SPECIAL3_CHECKBOX')='TRUE') then
fnd_message.debug('Special 3 is True!');
else
fnd_message.debug('Special 3 is False!');
end if;
右键菜单也可以自定义,form-level PRE-POPUP-MENU trigger引用APPSTAND.EVENT('PRE-POPUP-MENU')建立default menu;建立block /item level pre-pop-menu trigger须(Execution HierarchyàAfter)。
从block /item level pre-pop-menu trigger(Execution HierarchyàAfter)中调用app_popup.instantate函数初始化右键菜单项:
procedure APP_POPUP.INSTANTIATE(
option_name varchar2,
txt varchar2,
initially_enabled boolean default true,
separator varchar2 default null);
Example
• This example results in a menu that has a line above the second custom entry and
has the third custom entry grayed out (disabled)
APP_POPUP.INSTANTIATE(
‘POPUP1’,’First Entry’);
APP_POPUP.INSTANTIATE(
‘POPUP2’,’Second Entry’, TRUE, ‘LINE’);
APP_POPUP.INSTANTIATE(
‘POPUP3’,’Third Entry’, FALSE);
右键菜单的处理函数写在名为POPUP1 through POPUP10的trigger中,应该在正确的level上建立这些trigger (通常是block/item level)。
客制化菜单
Effect:

Usage:调用 app_special.instantiate包
Examples:
1、增加一个自定义Form Level的触发器(SPECIAL11)

2、增加测试代码如下:
――――――――――――――――――――――――――――――――――――――――――――――
declare
v_invoice_num varchar2(50);
begin
v_invoice_num := '菜单栏客制化100';
fnd_message.debug(v_invoice_num);
end;
―――――――――――――――――――――――――――――――――――――――――――――――
3、在Form WHEN-NEW-FORM-INSTANCEFJ 进行调用:
APP_SPECIAL.INSTANTIATE('SPECIAL11','测试菜单2', '', TRUE, 'LINE');
―――――――――――――――――――――――――――――――――――――――――――――――
4、一些特殊说明:
上面自定义FORMS级触发器,名字必须定义为“SPECIAL+数字‖,否则会报错。并且数字的大小决定了菜单出现的先后顺序。数字还有更大作用就是决定了,自定义菜单选项放在哪个主菜单下。
SPECIAL1—SPECIAL15在“工具”主菜单下。
SPECIAL16—SPECIAL30在“报表”主菜单下。
SPECIAL31—SPECIAL45在“活动”主菜单下。
SPECIAL46以上就直接报错了。^_^
如下图

5、 控制自定义菜单的是否激活可用。
使用app_special.enable函数可以控制菜单是否可以使用。
例如:基于不同的数据块,实现菜单的不可用。在block的‖when-new-block-instance‖中加入
效果:
app_special.enable('SPECIAL1',property_off);
效果

6、 在自定义的菜单上使用checkbox按钮。
①增加一个自定义Form Level的触发器(SPECIAL1_CHECKBOX),代码如下:
if app_special.get_checkbox('SPECIAL1_CHECKBOX')='TRUE' then
fnd_message.debug('Special 1 is True!');
else
fnd_message.debug('Special 1 is False!');
end if;
注:使用app_special.get_checkbox来获取checkbox的状态值。
②在Form的WHEN-NEW-FORM-INSTANCE触发器中初始化菜单。
app_special.instantiate('SPECIAL1_CHECKBOX','Spe&cial 1 Box w Line', '',TRUE,'LINE');
app_special.set_checkbox('SPECIAL1_CHECKBOX','TRUE');
注:app_special.set_checkbox是对checkbox进行赋值操作。
③效果如下:

客制化右键菜单
1、 首先如果是要为某个ITEM,另外开发一个右键菜单。这个需要直接按照FORM的开发教程,自定义一个POPUP菜单就可以了。但本文讲的在EBS所有的快捷菜单上,额外增加所需的菜单按钮。也就是要图上所示的快捷菜单上增加菜单按钮。

2、 在FROM-LEVEL增加自定义触发器(名字规则为:POPUP+N)

3、 ITEM的“PRE-POPUP-MENU”触发器上初始化菜单。
APP_POPUP.INSTANTIATE('POPUP1','First Entry');
APP_POPUP.INSTANTIATE('POPUP10','SECONED Entry',TRUE,'LINE');
APP_POPUP.INSTANTIATE('POPUP3','THREE Entry',FALSE,NULL);

4、 如果是整个BLOCK的ITEM都需要客制化快捷菜单,可以在BLOCK的“PRE-POPUP-MENU”定义。
APP_POPUP.INSTANTIATE('POPUP1','global');

调用EBS日期控件
1、 首先将ITEM的LOV属性设置为“ENABLE_LIST_LAMP”、列表验证属性设置为“否”

2、在ITEM的“KEY-LISTVAL”解发器下加入对下代码:
BEGIN
calendar.show();
END;
3、注意:ITEM对应数据库类型必须是DATE类型,否则会报frm-40700错误。效果如下:

转:FORM:客制化Form的菜单栏和右鍵菜單的更多相关文章
- (整理)FORM:Oracle EBS客制化Form的菜单栏用法说明
用户最多可以定义45个form-level的trigger,名称必须为SPECIALn, 其中SPECIAL1 to SPECIAL15属于Tools菜单项,放在“工具”主菜单下. SPECIAL16 ...
- Form_通过Zoom客制化跳转页面功能(案例)
2012-09-08 Created By BaoXinjian
- Dynamics AX 2012 R2 客制化RDP报表参数对话框
当我们在使用RDP报表时,AX会根据Data Contract,自动生成报表参数对话框上的字段控件.一般情况下,该对话框能够满足我们的需求,但是如果有较为复杂或特殊的需求,就要我们对该对话框进行客制化 ...
- BEvent_客制化BusinessEvent通过PLSQL Procedurer接受消息传递(案例)
2014-06-27 Created By BaoXinjian
- Android MTK6580 客制化关机充电动画
1.客制化关机充电图片 vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/xxx 找到对应分辨率替换 2.调整显示图片位置.大小 ...
- Report_客制化Excel报表中的XLS标记(案例)
2014-06-06 Created By BaoXinjian
- Android RRO机制的运用-----google开机向导客制化
上周五的时候领导分了一个任务,客户让在google开机向导里面增加一页,首先就想到了android的Overlay,然后网上搜了下,发下有很多人写了这方面的技术.而且写的都还不错,所以本篇只当记录作用 ...
- BEvent_客制化Event Agent通道(案例)(待整理)
2014-09-09 Created By BaoXinjian
- BEvent_客制化BusinessEvent通过Workflow Event接受消息传递(案例)
2014-08-03 Created By BaoXinjian
随机推荐
- Java开发所需架包官方下载
1.连接MySQL数据库所需架包点击进入官网下载 2.连接Oracle数据库所需架包点击进入官网下载 3.JUnit测试所需架包点击进入官网下载或者点击进入官网下载 4.Struts所需架包点击进入官 ...
- URAL1017. Staircases
链接 简单递推 #include <iostream> #include<cstdio> #include<cstring> #include<algorit ...
- 结构体 row_prebuilt_t
typedef struct row_prebuilt_struct row_prebuilt_t; /** A struct for (sometimes lazily) prebuilt stru ...
- Oracle MySQL Server 安全漏洞
漏洞名称: Oracle MySQL Server 安全漏洞 CNNVD编号: CNNVD-201401-317 发布时间: 2014-01-22 更新时间: 2014-01-22 危害等级: 中危 ...
- GIS数据格式:Geodatabase
转自:http://www.cnblogs.com/quansixiang/archive/2010/09/17/1829286.html 1 Geodatabase概念 Geodatabase是A ...
- 【转】centos 6.4 samba 安装配置
关掉防火墙 service iptables stop chkconfig iptables off (永久关闭防火墙) 关闭SELinux vi /etc/sysconfig/selinu ...
- Codeforces Round #335 (Div. 2)B. Testing Robots解题报告
B. Testin ...
- 【HTML】Advanced2:Conditional Comments
1.try and figure out what is sensible for you to support. Are your web site visitors likely to be us ...
- bzoj 2434 [Noi2011]阿狸的打字机(fail树+离线处理+BIT)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2434 [题意] 按照一定规则生成n个字符串,回答若干个询问:(x,y),问第x个字符串 ...
- NOIP2001 统计单词个数
题三 统计单词个数(30分) 问题描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1<k&l ...