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的菜单栏和右鍵菜單的更多相关文章

  1. (整理)FORM:Oracle EBS客制化Form的菜单栏用法说明

    用户最多可以定义45个form-level的trigger,名称必须为SPECIALn, 其中SPECIAL1 to SPECIAL15属于Tools菜单项,放在“工具”主菜单下. SPECIAL16 ...

  2. Form_通过Zoom客制化跳转页面功能(案例)

    2012-09-08 Created By BaoXinjian

  3. Dynamics AX 2012 R2 客制化RDP报表参数对话框

    当我们在使用RDP报表时,AX会根据Data Contract,自动生成报表参数对话框上的字段控件.一般情况下,该对话框能够满足我们的需求,但是如果有较为复杂或特殊的需求,就要我们对该对话框进行客制化 ...

  4. BEvent_客制化BusinessEvent通过PLSQL Procedurer接受消息传递(案例)

    2014-06-27 Created By BaoXinjian

  5. Android MTK6580 客制化关机充电动画

    1.客制化关机充电图片 vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/xxx 找到对应分辨率替换 2.调整显示图片位置.大小 ...

  6. Report_客制化Excel报表中的XLS标记(案例)

    2014-06-06 Created By BaoXinjian

  7. Android RRO机制的运用-----google开机向导客制化

    上周五的时候领导分了一个任务,客户让在google开机向导里面增加一页,首先就想到了android的Overlay,然后网上搜了下,发下有很多人写了这方面的技术.而且写的都还不错,所以本篇只当记录作用 ...

  8. BEvent_客制化Event Agent通道(案例)(待整理)

    2014-09-09 Created By BaoXinjian

  9. BEvent_客制化BusinessEvent通过Workflow Event接受消息传递(案例)

    2014-08-03 Created By BaoXinjian

随机推荐

  1. 《C#并行编程高级教程》第5章 协调数据结构 笔记

    本章介绍了一些轻量级的同步原语,其中有很大部分是.NET Framework 4才引入的. System.Threading.Barrier 用于一段程序分成多个阶段,每个阶段的开始都需要之前的阶段完 ...

  2. 从头开始编写一个Orchard网上商店模块(3) - 创建Orchard.Webshop模块项目

    原文地址:http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-par ...

  3. c# 提取word文件中的图片问题

    最近遇到一个项目就是要从一份word中提取出所有的图片信息,功能看起来不是很难,只要使用office自带的Microsoft.Office.Interop.Word就可以解决问题.网上也有不少的文章来 ...

  4. Axis2联接WCF(比较完整的版本)

    Axis2联接WCF(比较完整的版本) 分basicHttpBinding和wsHttpBinding两种情况: 一.basicHttpBinding比较简单一点,先来看看它所要求的HTTP包:POS ...

  5. 提取WORD中的所有InlineShape图片并保存成文件

    InlineShape表示的类型其实不只是图片,还包括OLE, ACTIVE X等. 下面是MSDN中的定义:Represents an object in the text layer of a d ...

  6. linux cross toolsChain 交叉编译 ARM(转)

    转载请注明出处:http://blog.csdn.net/mybelief321/article/details/9076583 安装环境 Linux版本:Ubuntu 12.04    内核版本:L ...

  7. BZOJ 2588: Spoj 10628. Count on a tree 主席树+lca

    分析:树上第k小,然后我想说的是主席树并不局限于线性表 详细分析请看http://www.cnblogs.com/rausen/p/4006116.html,讲的很好, 然后因为这个熟悉了主席树,真是 ...

  8. UVA 540 Team Queue

    思路:使用优先队列,按队伍出现的时刻和自身出现的时刻定义优先级,同时记录此时刻队列里是否有自己队伍的人,一开始没注意,wa了两发. #include<map> #include<qu ...

  9. 【HTML】Beginner8:Table

    1.Table     Abused to lay out pages    The correct use for tables is to do exactly what you would ex ...

  10. Kafka系列(一)安装和配置说明

    单机模式 修改kafak安装文件中 .../kafka_2.9.2-0.8.1.1/config 下面的server.properties 配置文件 1.broker.id=0   [默认不用修改,该 ...