1、FORM级触发器:
1、 在WHEN-NEW-FORM-INSTANCE后面添加以下代码:
--定义文件夹数据块
app_folder.define_folder_block(
object_name => ' DETAILBLOCK _FOLDER' , --表单名称
folder_block_name => 'DETAILBLOCK', --FOLDER数据块名称
prompt_block_name => 'DETAILBLOCK_PROMPT', --FOLDER标题块名称
folder_canvas_name => 'DETAILBLOCK_STACKED', -- FOLDER数据块所在画布
folder_window_name => 'BLOCKNAME', -- FOLDER数据块所在画布所属的窗口
disabled_functions => '');
--以上参数均为VARCHAR2,长度不得超过20个字符
2、 增加FORM级触发器:FOLDER_ACTION, PL/SQL代码如下:
app_folder.event(:global.folder_action);
3、 增加FORM级触发器:FOLDER_RETURN_ACTION, PL/SQL代码如下:
null;
--
-- action code is in :global.folder_action
-- affected field is in :global.folder_field
--
2、Attached Libraries:
添加文件:APPFLDR.PLL
来源:ERP安装目录下,AU目录下查找该类文件所在的目录
3、Object Groups
继承一个对象组:STANDARD_FOLDER
做法:复制APPSTAND.FMB中的同名对象,粘贴到模板对象组中,选择“Refence”(继承),路径方式选择“Remove path”(不要路经)。
结果:将会把对象组中的所有对象映射添加到相应的对象节点中。
1、 定义窗口(windows):继承属性WINDOW_NORMAL
2、 定义堆叠画布(stacked canvas-views):继承属性类CANVAS_STACKED
3、 定义文件夹数据块(folder block):继承属性类BLOCK
(1) 触发器:
• KEY-EXEQRY:
app_folder.event('KEY-EXEQRY');
• KEY-NEXT-ITEM
app_folder.event('KEY-NEXT-ITEM');
• KEY-PREV-ITEM
app_folder.event('KEY-PREV-ITEM');
• POST-BLOCK
app_folder.event('POST-BLOCK');
• PRE-BLOCK
app_folder.event('PRE-BLOCK');
• WHEN-NEW-BLOCK-INSTANCE
App_folder.event('WHEN-NEW-BLOCK-INSTANCE');
• PRE_QUERY
App_folder.event(' PRE_QUERY ');
(2) 定义数据项,可以是表项,也可以是非基表项,确定哪些项需要放在堆叠画布上,注意只有在堆叠画布上的项才能使用文件夹功能
(3) 注意:数据项的类型不能是:Display Item等;
可以是:Text Item、Check Box等;
如果打开folder时出现错误:“Set_Item_Property没有这样的属性”,说明erp标准程序中用到的属性在个别项中不存在,出现几次就有几个缺乏这个属性的Item;是否拥有这个属性,是由Item的类型确定的,因此有些Item类型不能用于folder功能。
(4) 确定各个项在画布中的位置
4、 定义标题数据块(prompt block):继承属性类BLOCK_DIALOG
便捷的做法:先复制文件夹数据块blk_detail,改名称,再删去新块下的全部触发器,然后除去不需要的项,修改剩下所有项的属性继承FOLDER_PROMPT_MULTRIROW,最后将各个项的default value属性值写入对应的中文或英文标题
(1) 触发器:无
(2) 标题项,来自文件夹数据块blk_detail,属性继承自FOLDER_PROMPT_MULTIROW,default value属性值写入相应的中英文标题
标题项必须和参与folder功能的数据项保持一一对应,名称必须一致
(3) 文件夹功能项(6个):
• FOLDER_OPEN:属性继承FOLDER_OPEN
Canvas: CV_MAIN
• FOLDER_TITLE:属性继承DYNAMIC_TITLE
Canvas: CV_MAIN
• ORDER_BY1、ORDER_BY2、ORDER_BY3:
属性:
继承FOLDER_ORDERBY
触发器:
WHEN-BUTTON-PRESSED:
APP_FOLDER.EVENT('TOGGLE-ORDER-BY');
Canvas: CV_DETAIL_STACKED
FOLDER_OPEN、FOLDER_TITLE可见,放置在堆叠画布的左上位置
(4) 确定各个项在画布上的位置
(5) 注意:在文件夹数据块中,项的初始宽度由同名的标题项的宽度确定,而且只有存在标题项的文件夹数据项才能使用文件夹功能。设计时,应该将文件夹数据块中项的宽度与标题块中项的宽度保持一致。
(6) 如果文件夹数据块在第一个窗口,可能会出现初次进入窗口标题项没有显示的现象,需要在form级触发器when-new-form-instance中,在导航到控制块之前,先将导航到标题块,例如:
…
GO_BLOCK(‘BLK_DETAIL_PROMPT’);
GO_BLOCK(‘BLOCKCONTROL’);
转载于:https://www.cnblogs.com/CiWEi-/archive/2011/12/13/2285867.html