1.前言
这是在深航2期项目期间学习form的过程中总结出来的一些东西,但内容比较零散,不包含form开发的完整过程。
1.开发规范
1.1 命名规范
文件命名: 一般将源码放在….\\SVN\\05.客户化开发\\05.源代码\\ 目录下,文件的格式参考该目录下的代码包模板:开发编号-开发项名称文件夹,该文件夹命名如:EAM010_资产报废计划 EAM代表模块,010和资产报废计划是由开发文档给出,不需要自己取编号。
路径:05.源代码\\代码包模板:开发编号-开发项名称\\SZAXXXXX\\code 中,SZAXXXXX 也有自己的命名规范,一般取表名称的前6个字符,即应用名+模块名,在取表名后的5-6字符作为后缀,例如:表名是SZA_EAM_RETIRE_PLAN ,则取SZAEAMREPLAN,该文件夹名称与form名称保持一致。
SVN模板目录:
Sql :注册弹性域的plsql代码块,名称与表名一致 Table :建表脚本 View :建视图脚本
Pck : 基于视图的增删改form,在hss_public_util程序包中,Table_Handle_Pkg这个过程生成的代码要在数据库中执行,并且代码保存在package文件夹下,并以.pck保存。 Form_Table_Handle这个过程是要放在form中
Form规范
1.Form的命名:例如表名SZA_INV_TST_DOC_TYPES,选取前6个字符SZAINV,加上后面字符串的5-6个字符,SZAINVTSTDOCTP.
2. 块名命名: SZA_INV_TST_DOC_TYPES选表中间字段TST_DOC 3.窗口查询的块QUERY_FIND 的名称:块名+QF,对应的FIX和STK画布名字也要保持一致,但是QUERY_FIND触发器名称不能修改。 4.在ebs上注册表单,功能,弹性域时,form表单,功能和弹性域名称:SZA INV:+中文解释,
例如:SZA INV:单据类型定义。因为这些名称都是用户在查找时给用户看的。
5. 在窗口查询中,一般用id来作为查询字段,一般在id字段建立索引,查询速度更快,所以应该有消除依赖的代码
6. LOV的显示:id字段一般不显示出来,可以设置id字段的display width为0即可。
2.常用开发组件和功能
1.无TAB的Folder功能
一般情况下,将不随横向滚动条移动的列放置在FIX画布上,变成固定列,固定列是没有拖动效果的。
画布:MAIN ,FOLDER_FIX ,FOLDER_STK 第一步:使用data block wizard创建块
第二步:ROW_ID项的子类名设置为ROW_ID。 其他需要显示在画布上的项设置子类, 另设置显示在STK画布上的属性:
第三步:将数据块中显示在STK上的项复制到PROMT块中,并设置数据块中的trigger(模
板中的FOLDER块有现成的trigger) PRE-QUERY//POST-QUERY WHEN-NEW-BLOCK-INSTANCE //WHEN-NEW-RECORD-INSTANCE…
提示项的item type为display,子类为FOLDER_PROMT_MULTIROW 第四步:在when-new-form-instance初始化form。
使用app_folder.define_folder_block
如果用到了FIX画布,需要使用参数8
第五步:在画布上调整布局
设置块的Scrool Bar Canvas在fix画布上 注意:
ITEM名称 FOLDER_SWITCHER DRILLDOWN_RECORD_INDICATOR FOLDER_TITLE FOLDER_OPEN 画布 FIX ~~ 子类 SWITCHER DRILLDOWN_RECORD_INDICATOR DYNAMIC_TITLE FOLDER_OPEN FOLDER_DUMMY ORDER_BY1 TOOLBAR FOLDER_DUMMY STK FOLDER_ORDERBY 第六步:在WHEN-WINDOW-RESIZED触发器内
if :system.event_window in ('MAIN','DOC','TXN_DETAILS') then app_folder.event('WHEN-WINDOW-RESIZED'); end if;
2.TAB页的Folder功能
原理:与无tab页不同就是创建画布时,我们会选择创建一个tab_canvas类型的画布
假如你要显示的item都来自一个block,则我们只需要一个fix画布;如果画布上的item来自多个block,则需要多个fix画布。我们通过when-tab-changed触发器和show_view(hide_view)来控制画布的显示与隐藏
2.1 首先要创建类型为Tab的画布,在画布下添加两个子类为Tab_page的画布,注意的是最好使得这两个画布的名称和将来放在两画布上的stacked画布名称一致。如下图左
2.2 画布建好以后,我们来看如何布局。 首先将MAIN_TAB画布,堆叠在MAIN画布上,再将图中TAX画布(fix和stacked画布)和BASE画布(同上)堆叠在MIAN_TAB画布,尽量保持TAX和BASE重合,就是说x和y坐标相同。