FOLDER
一、建noTab的Folder Form:
1.创建数据库对象:
create table 和相应的view。
2.基于模板Template.fmb创建一个新的Form:****.fmb
添加一个Library:APPFLDR.pll(目录:$AU_TOP/Resource;打开后,系统询问是否去掉绝对路径,选择YES)
再打开APPSTAND.fmb:将其中的对象组STANDARD_FOLDER拖到自己的FORM中,选择Subclass
3.添加窗口 window:
设置属性:Subclass information:WINDOW
4.添加画布:MAIN(内容画布) 和 CANVAS(堆叠画布)
MAIN的type为content ;
CANVAS的type为stacked
subclass:canvas_Stacked
5.添加数据块:block(基于数据库)、 block_prompt(放Title)
设置对应属性:subclass都为BLOCK
画布block :Number of Records Displayed--8
ShowScrolbar--YES
Scrollbar Canvas-- MAIN 设置滚动条显示的画布
========== 以下对数据块block:======
6.添加触发器:
对数据块block:添加支持FOLDER的Block级的Trigger:
PRE-QUERY -- app_folder.event('PRE-QUERY');
POST-QUERY -- app_folder.event('POST-QUERY');
app_globe.event('POST-QUERY');
WHEN-NEW-BLOCK-INSTANCE app_folder.event('WHEN-NEW-BLOCK-INSTANCE');
WHEN-NEW-RECORD-INSTANCE app_folder.event('WHEN-NEW-RECORD-INSTANCE');
app_folder.event('KEY-PREV-ITEM');
app_folder.event('KEY-NEXT-ITEM');
app_folder.event('KEY-PRVREC');
app_folder.event('KEY-NXTREC');
app_folder.event('KEY-CLRREC');
app_folder.event('KEY-EXEQRY');
app_folder.event('KEY-ENTQRY');
app_folder.event('PRE-BLOCK');
app_folder.event('POST-BLOCK');
app_folder.event('KEY-CLRBLK');
pre-insert fnd_standard.set_who;
7.添加ITEM: Folder_Switcher and CURRENT_RECORD_indicator
注:这两个item要放置在块的最上面。
设置属性:SWITCHER:
item type:TEXT ITEM
SUBCLASS : SWITCHER
VISIBLE : yes
canvas :显示在堆叠画布CANVAS
PROMPT : 空
------------------------------
indicator:
ITEM TYPE: TEXT ITEM
SUBCLASS : CURRENT_RECORD_INDICATOR
VISIBLE : YES
CANVAS : 显示在内容画布MAIN
PROMPT : 空
========== 以下对数据块block_prompt:======
8.添加6个FOLDER特有的Item
注:放在block中的下方,顺序为:by321 dummy title open
itemtype subclass visible canvas
FOLDER_OPEN : push folder_open yes MAIN
FOLDER_TITLE: Display dynamic_title yes MAIN
FOLDER_DUMMY: TEXT FOLDER_DUMMY YES TOOLBAR
ORDER_BY1: PUSH FOLDER_ORDERBY NO CANVAS
ORDER_BY2: push FOLDER_ORDERBY no canvas
ORDER_BY3: push FOLDER_ORDERBY NO CANVAS
9.添加与基于数据库的block中的要显示的item对应的用于显示title的item
注:必须与之同名,宽度必须一致,且在block中的上下顺序一致。
设置属性:ITEMtype : Display Item
subclass : FOLDER_PROMPT_MULTIROW
InitialValue:需要显示的名称
10.更改App_custom Package 中的一些代码:
将wnd='****' ---改为自己的窗口名:WINDOW
11.更改Form级Trigger
pre-form: app_window.set_window_position('WINDOW','FISRT_WINDOW');--是显示的第一个窗口
12.设置窗口的primary Canvas 为 主画布MAIN
13.添加PACKAGE: Form_pkg
===============================================================
PACKAGE BODY Form_pkg IS
procedure new_form_instance is
begin
--定义Folder
app_folder.define_folder_block('Cup_ORDER_4040_2',--客户化自定义名
'block',--folder_block_name
'block_prompt',--prompt_block_name
'canvas',--folder_canvas_name
'window',--folder_window_name
null,--disabled_functions
null,--tab_canvas_name
null);--fixed_canvas_name
app_folder.event('INSTANTIATE');
SYNCHRONIZE;
end;
END;
================================
14.更改Form级trigger
when-new-form-instance :
FDRCSID('$Header: TRNORD4040.fmb 120.0 2005/05/06 23:25 appldev ship $');
APP_STANDARD.EVENT('WHEN-NEW-FORM-INSTANCE');
form_pkg.new_form_instance;
folder_action:
app_folder.event(:global.folder_action);
when-window-resized:
if :system.event_window in ('ORDER_MAIN') then
app_folder.event('WHEN-WINDOW-RESIZED');
end if;
key-CLRFRM :
APP_STANDARD.EVENT('KEY-CLRFRM');
app_folder.event('KEY-CLRFRM');
更改Item级trigger
folder_switcher: when-new-item-instance : app_folder_move_cursor('1');
current_record_indicator: when-new-item-instance: app_folder_move_cursor('1');
二、建有Tab的Folder Form:
*与非tab不同之处:
1.固定列不再放在内容画布上,而是放在子类型为canvas_stacked_fix_field的堆叠画布上
2.API定义Folder时的参数不同,需指定:tab_canvas_name,fixed_canvas_name 两个参数
*建Tab的Folder Form:
1.创建数据库对象:
create table 和相应的view。
2.基于模板Template.fmb创建一个新的Form:****.fmb
添加一个Library:APPFLDR.pll(目录:$AU_TOP/Resource;打开后,系统询问是否去掉绝对路径,选择YES)
再打开APPSTAND.fmb:将其中的对象组STANDARD_FOLDER拖到自己的FORM中,选择Subclass
3.添加窗口 window:
设置属性:Subclass information:WINDOW
4.添加画布:MAIN(内容画布) 和 CANVAS(堆叠画布)
CANVAS的subclass:canvas_Stacked
添加Tab类型的画布MAIN_Tab
设置属性:CanvasType: Tab
subclass :TAB_CANVAS
VISIBLE : YES
WINDOW :window
对标签页设置label(显示标题) 、设置subclass为TAB_PAGE
5.添加数据库:block(基于数据库)、 block_prompt(放Title)
设置对应属性:subclass都为BLOCK
画布block :Number of Records Displayed--8
ShowScrolbar--YES
Scrollbar Canvas-- ***FIX 设置垂直滚动条显示的画布(为fix画布)
========== 以下对数据块block:======
6.添加触发器:
对数据块block:添加支持FOLDER的Block级的Trigger:
PRE-QUERY -- app_folder.event('PRE-QUERY');
POST-QUERY -- app_folder.event('POST-QUERY');
app_globe.event('POST-QUERY');
WHEN-NEW-BLOCK-INSTANCE app_folder.event('WHEN-NEW-BLOCK-INSTANCE');
WHEN-NEW-RECORD-INSTANCE app_folder.event('WHEN-NEW-RECORD-INSTANCE');
app_folder.event('KEY-PREV-ITEM');
app_folder.event('KEY-NEXT-ITEM');
app_folder.event('KEY-PRVREC');
app_folder.event('KEY-NXTREC');
app_folder.event('KEY-CLRREC');
app_folder.event('KEY-EXEQRY');
app_folder.event('KEY-ENTQRY');
app_folder.event('PRE-BLOCK');
app_folder.event('POST-BLOCK');
app_folder.event('KEY-CLRBLK');
fnd_standard.set_who;
7.添加ITEM: Folder_Switcher and CURRENT_RECORD_indicator
注:这两个item要放置在块的最上面。
设置属性:SWITCHER:
item type:TEXT ITEM
SUBCLASS : SWITCHER
VISIBLE : yes
canvas :显示在堆叠画布CANVAS
PROMPT : 空
------------------------------
indicator:
ITEM TYPE: TEXT ITEM
SUBCLASS : CURRENT_RECORD_INDICATOR
VISIBLE : YES
CANVAS : 显示在内容画布MAIN
PROMPT : 空
========== 以下对数据块block_prompt:======
8.添加6个FOLDER特有的Item
注:放在block中的下方,顺序为:by321 dummy title open
itemtype subclass visible canvas
FOLDER_OPEN : push folder_open yes MAIN---改为fix
FOLDER_TITLE: Display dynamic_title yes MAIN---改为fix
FOLDER_DUMMY: TEXT FOLDER_DUMMY YES TOOLBAR
ORDER_BY1: PUSH FOLDER_ORDERBY NO CANVAS--更改为fix
ORDER_BY2: push FOLDER_ORDERBY no canvas
ORDER_BY3: push FOLDER_ORDERBY NO CANVAS
9.添加与基于数据库的block中的要显示的item对应的用于显示title的item
注:必须与之同名,宽度必须一致,且在block中的上下顺序一致。
设置属性:ITEMtype : Display Item
subclass : FOLDER_PROMPT_MULTIROW
InitialValue:需要显示的名称
10.更改App_custom Package 中的一些代码:
将wnd='****' ---改为自己的窗口名:WINDOW
11.更改Form级Trigger
pre-form: app_window.set_window_position('WINDOW','FISRT_WINDOW');--是显示的第一个窗口
12.设置窗口的primary Canvas 为 主画布MAIN
13.添加PACKAGE: Form_pkg
===============================================================
PACKAGE BODY Form_pkg IS
---------------------------
procedure new_form_instance is
begin
--定义TabFolder
app_folder.define_folder_block('Cup_ORDER_4040_2',
'ORDER_LINES',--folder_block_name
'ORDER_LINES_PROMPT',--prompt_block_name
'ORDER_CREATE_PROMPT,ORDER_CREATE_PROMPT_ADDITION',--folder_canvas_name
'ORDER_TAB',--folder_window_name
null,--disabled_functions
'MAIN_TAB',--tab_canvas_name
'FIX');--fixed_canvas_name
app_folder.event('INSTANTIATE');
SYNCHRONIZE;
end;
----------------------------------
/*隐藏标签页*/
PROCEDURE hide_main_tab( p_tab_name varchar2) IS
BEGIN
IF p_tab_name = 'ORDER_CREATE_PROMPT' THEN
hide_view('ORDER_CREATE_PROMPT_ADDITION');
ELSIF p_tab_name = 'ORDER_CREATE_PROMPT_ADDITION' THEN
hide_view('ORDER_CREATE_PROMPT');
END IF;
END hide_main_tab;
----------------------------------
/*定位光标*/
PROCEDURE go_tab_first_item(p_tab_name varchar2) IS
BEGIN
IF p_tab_name = 'ORDER_CREATE_PROMPT' THEN
go_item('ORDER_LINES.ITEM_NUMBER');
ELSIF p_tab_name = 'ORDER_CREATE_PROMPT_ADDITION' then
go_item('ORDER_LINES.ADDITION1');
END IF;
END go_tab_first_item;
----------------------------------
/*显示标签页*/
PROCEDURE show_main_tab( p_tab_name varchar2) is
begin
IF p_tab_name = 'ORDER_CREATE_PROMPT' THEN
show_view('ORDER_CREATE_PROMPT');
show_view('FIX');
ELSIF p_tab_name = 'ORDER_CREATE_PROMPT_ADDITION' THEN
show_view('ORDER_CREATE_PROMPT_ADDITION');
show_view('FIX');
end if;
END show_main_tab;
----------------------------------
/*当切换tab页*/
PROCEDURE when_tab_page_changed is
new_tab varchar2(30) := :system.tab_new_page;
prev_tab varchar2(30) := :system.tab_previous_page;
begin
hide_main_tab(prev_tab);
show_main_tab(new_tab);
go_tab_first_item(new_tab);
end when_tab_page_changed;
----------------------------------
/*当隐藏item,不能隐藏第一个item*/
PROCEDURE folder_return_action is
BEGIN
IF(:global.folder_action = 'CONFIRM-HIDE-FIELD') THEN
IF :global.folder_field = 'ADDITION1' THEN
:global.folder_action_allowed := 'FALSE';
elsif :global.folder_field='ITEM_NUMBER' then
:global.folder_action_allowed := 'FALSE';
END IF;
ELSIF (:global.folder_action = 'SET-WHERE-CLAUSE') THEN
--:global.folder_action_allowed := 'FALSE';
null;
END IF;
END folder_return_action;
----------------------------------
/*When_New_Item_Instance */
PROCEDURE When_New_Item_Instance IS
curr_canvas_name Varchar2(30) := get_item_property(Name_In('SYSTEM.CURSOR_ITEM'),item_canvas);
current_tab varchar2(30) := get_canvas_property('MAIN_TAB',topmost_tab_page);
tab_canvas_name Varchar2(30) := Name_In('SYSTEM.EVENT_CANVAS');
Begin
IF curr_canvas_name in ('ORDER_CREATE_PROMPT','ORDER_CREATE_PROMPT_ADDITION') THEN
IF curr_canvas_name != current_tab THEN
set_canvas_property('MAIN_TAB', topmost_tab_page, curr_canvas_name);
END IF;
END IF;
END When_New_Item_Instance;
----------------------------------
END;
================================
14.更改Form级trigger
when-new-form-instance :
FDRCSID('$Header: TRNORD4040.fmb 120.0 2005/05/06 23:25 appldev ship $');
APP_STANDARD.EVENT('WHEN-NEW-FORM-INSTANCE');
form_pkg.new_form_instance;
folder_action:
app_folder.event(:global.folder_action);
when-window-resized:
if :system.event_window in ('ORDER_MAIN') then
app_folder.event('WHEN-WINDOW-RESIZED');
end if;
key-CLRFRM :
APP_STANDARD.EVENT('KEY-CLRFRM');
app_folder.event('KEY-CLRFRM');
Folder_return_action: form_pkg.folder_return_action;
添加:when-tab-page-changed: form_pkg.when_tab_page_changed;
更改Item级trigger
folder_switcher: when-new-item-instance : app_folder_move_cursor('1');
current_record_indicator: when-new-item-instance: app_folder_move_cursor('1');
更改block级trigger:--解决TAB键在各个item之间导航时,tab页不变的问题
when-new-item-instance:form_pkg.when_new_item_instance;
FOLDER的更多相关文章
- Visual Basic 函数速查
Calendar 常数 可在代码中的任何地方用下列常数代替实际值: 常数 值 描述 vbCalGreg 0 指出使用的是阳历. vbCalHijri 1 指出使用的是伊斯兰历法. Color 常数 可 ...
- VMWare Tools 和 Shared folder(共享文件夹)
转自: http://www.51testing.com/html/38/225738-143732.html 使用vmwar下shared folders功能实现vmware中host与ghost间 ...
- eclipse的package, folder, source folder 异同以及相互转化
1 相同点:都是文件夹; 不同点: 我们用面对对象思维来看; 首先说folder, 三者的父类(object),就是普通的文件夹,它和我们window下面使用的文件夹没有任何区别; source fo ...
- 怎样制作web版的folder treeview
文件夹treeview的效果 这样的treeview在实际项目中使用的场景较多. 既然用的多,那就DIY一遍,虽没有面面俱到,但也要将其基本实现完成一遍. 1.先准备图标素材 file.gif,文件 ...
- iOS项目groups和folder的区别(组和文件夹)
在引用一个第三方框架的时候,已经拖进去了,但是引用框架里面的文件时,竟然报错说找不到.......查了一下,原来在拖进去时没有注意group和folder的选择! 其实仔细观察一下,不难发现,以gro ...
- push or get File or Folder using scp wrapped with expect and bash
经常需要把服务器的某些文件传到 Mac,或者获取 Mac 的一些文件到服务器.尽管有很多命令scp, ftp, rsync都可以,霸特每次都有敲好长的命令,好烦,而且还要输入密码.所以想着 wrap ...
- folder、source folder、package 区别与联系
在eclipse下,package,source folder,folder都是文件夹. 它们的区别如下: package:当你在建立一个package时,它自动建立到source folder下 ...
- Informatica相同环境与不同环境的导入导出( Repository Name,Integration Service Name,Folder Name是否相同):
Informatica相同环境与不同环境的导入导出( Repository Name,Integration Service Name,Folder Name是否相同): 1.repository N ...
- Django project structure: how does static folder, STATIC_URL, STATIC_ROOT work
So I've been messing up with Django(1.6+) project setting for quite sometime, this is what i finally ...
- cannot determine the location of the vs common tools folder
问题:打开"VS2010开发人员命令提示后",上面提示"cannot determine the location of the vs common tools fold ...
随机推荐
- 松软科技web课堂:SQLServer之NOW() 函数
NOW() 函数 NOW 函数返回当前的日期和时间. 提示:如果您在使用 Sql Server 数据库,请使用 getdate() 函数来获得当前的日期时间. SQL NOW() 语法 SELECT ...
- JS基础语法---对象总结
* 编程思想: * 面向过程:凡事亲力亲为,所有的事情的过程都要清楚,注重的是过程 * 面向对象:提出需求,找到对象,对象解决这个问题,我们要结果,注重的是结果 * ...
- 039.[转] 基于 Kubernetes 和 Spring Cloud 的微服务化实践
http://dockone.io/article/2967 基于 Kubernetes 和 Spring Cloud 的微服务化实践 写在前面 网易云容器平台期望能给实施了微服务架构的团队提供完整的 ...
- SSH远程管理
目录 SSH远程管理 ssh功能 SSH相关命令 Xshell连接不上虚拟机 scp命令 SSH验证方式 优化 免交互expect[扩展] 免交互sshpass[扩展] 简易跳板机 小结 SSH远程管 ...
- HTTPS混合内容解析
什么是HTTPS混合内容 我们可能会有这样的经验,当我们通过HTTPS访问一个网站的时候,突然有提示:“本页面包含有不安全的内容”.这个时候会询问是否显示“不安全的内容”,这个时候,就是遇到了有混合内 ...
- PHP转Go系列:map映射
映射的定义 初识映射会很懵,因为在PHP中没有映射类型的定义.其实没那么复杂,任何复杂的类型在PHP中都可以用数组表示,映射也不例外. $array['name'] = '平也'; $array['s ...
- 学习postman教程
postman可以做什么 1.可以做单接口的测试 2.可以调试接口 3.对接口设置变量后,可以做多接口的测试,并输出报告 如何用postman调试接口 1.填写api地址 2.选择请求方式 3.输入a ...
- LG2145 「JSOI2007」祖码 区间DP
问题描述 LG2145 题解 把颜色相同的一段看做一个点. 然后类似于合唱队区间DP即可. 但是这题好像出过一些情况,导致我包括题解区所有人需要特判最后一个点. \(\mathrm{Code}\) # ...
- 【python爬虫】正则表达式
一.数据的分类 1.结构化数据 特点:数据以行为单位,每一个数据表示一个实体.每一行数据的属性都是一样的. 举例:关系型数据库中的表就是结构化数据. 处理方法:sql 2.半结构化数据 特点:结构化数 ...
- mysql关联两张表时的编码问题
Mysql关联两张表时,产生错误提示Illegal mix of collations 1.先用工具把数据库.两张表的编码方式改变 2.这步很重要,需要改变字段的编码方式. ALTER TABLE ` ...