FORM
Oracle EBS的Forms,基本上都是从Template.fmb开始,该模版预先定义了:
1、 各种界面元素的属性集——子类
2、 常用的控件——日历、进度条
3、 一系列Form级触发器,统一处理各种未被明确处理的事件
4、 丰富的PLL库函数,大大超越了Forms Builder内置的函数
所以,我们基于EBS的开发,当然也是从Template.fmb开始。
AU模块存放fmb、pll、plx文件、各应用模块存放fmx文件,具体是:
$AU_TOP/resource:pll文件、plx文件
$AU_TOP/forms/US: 英文fmb文件
$AU_TOP/forms/<语言代码>: 特定语种(如ZHS)的fmb文件
$<应用简称>_TOP/forms/US: 各模块英文fmx文件录
$<应用简称>_TOP/forms/<语言代码>: 特定语种(如ZHS)fmb文件
上面<应用简称>,如INV、GL、AP、AR等等,在System Administrator职责下的
Application/Register中定义。
总之我们需要的模版及相关文件在AU_TOP下;我们开发的fmb文件呢,也应根据上
述规则传到$AU_TOP/forms的相关语言路径下,不过为管理、备份方便,实际开发中
可能故意违反EBS的规则,与fmx一起放在$CUX_TOP/forms的相关语言路径下。
Form文件类型:
.fmb:源文件,目前是二进制格式,也可以转成早期版本的ASCII格式
.fmx:可执行文件,类似VB的.exe文件,其也需要在Forms Runtime环境中运行
.pll:库函数源文件,类似所有开发语言的库函数,如VC的.cpp文件
.plx:库函数可执行文件
调用关系:fmb文件可以引用其他fmb文件、pll文件,pll文件可以进一步引用其他pll
文件,引用是可以嵌套的。所以要成功打开一个forms源文件,必须保证其直接引用、
间接引用的fmb、pll文件均存在。
Form的开发:
1.拷贝TEMPLATE.fmb
获取到TEMPLATE.fmb模板,另存模板并改名,打开之后把Form Name也改为CUXORDENT,一定要保持一致性;
2.删除多余对象
删除Data Blocks下的两个块——BLOCKNAME、DETAILBLOCK,它们是模版自带
的示例主从块。
删除Canvases下的一个画布——BLOCKNAME。
3.修改Windows名称
修改Windows下的BLOCKNAME这个Window,在Property Palette中修改Name值和Title;
4.修改2个触发器、1个程序单元
因为一个Forms有多个Window,所以需要明确指出哪个Window是主Window,这样
在关闭主Window的时候将退出整个Forms;此外,我们也须要在源代码中记录作者、
开发时间、版本等备注信息。
4.1 修改Forms级触发器PRE-FORM :
将其中的app_window.set_window_position('BLOCKNAME', 'FIRST_WINDOW');改为
app_window.set_window_position('FORM的名称', 'FIRST_WINDOW');
同时修改上面几行代码中的作者、时间、版本、Form描述、应用简称;
4.2 修改Forms级触发器WHEN-NEW-FORM-INSTANCE
主要修改Form名字、版本和日期。
4.3 修改Program Unit下app_custom中的close_window过程
将if(wnd = '<your first window>') thenapp_window.close_first_window;改为if(wnd = 'FORM的名称') thenapp_window.close_first_window;
5.创建Block数据块
数据块,定义Form上的字段与数据库中的字段是如何对应的,同时定义块和字段的各
种操作特性——字段类型、长度、默认值、可否增删改查等等。
N: 在Data Blocks上右键,选择数据块创建向导:
之后第一步跳过,第二步保持默认的选择“Table or View”
第三步输入View名字或者Table名字
登录后Available Column将显示所有视图字段,点击>>全部选过来。
第四步跳过,第五步选择“Just create the data block”后Finish。
Forms Builder将自动将表字段的名称、类型、长度、是否必须等信息带到Block下的
Items中。
6.设置Block属性及其Subclass
默认Block名字为视图名字,需要“精简”,同时需要设置块属性中的Subclass为Block;
此外,需要设置块的前后导航属性,本例目前仅有一个有意义的数据块,这里将
Previous和Next Navigation Data Block均设置为自身,这样在运行时,使用快捷键
Shift+Pageup和Shift+Pagedown时,均不会跳离本块。
7.设置Item属性及其Subclass
设置需要显示Item和特殊Item的子类,同时设置部分Item的默认值
8.创建Canvas画布
画布,用来设计各字段的布局,画布必需放置在Window上后才真正对用户“可见”。最基本的画布为Content画布,一个Window必需有且仅有一个Content画布。
第一步选择New Canvas,Type选择Content;
第二步选择要显示的字段;
第三步修改各字段的提示和显示长度;
后面两步跳过直至Finish。
在打开的画布设计界面,删除自动生成的Frame。
9.设置画布属性和子类、调整布局
设置画布名字,放置第3步做好的Window,子类为Canvas;
调整View和Canvas大小,Content画布这两者设置为一样大,即拉到重叠为止;
Canvas与View:Canvas是整个画布的大小,Item是放置在Canvas上的;View是这个
画布的可见部分,如果View小于Canvas,那么通常需要借助滚动条来查看整个
Canvas中的内容;可以通过菜单View中的Show View、Show Canvas来确定哪个框是
Canvas哪个框是View。
10.设置Windows属性
设置Window的Primary Canvas,该Window的大小将自动调整为Content Canvas的大小
11.设置Form属性
设置Form的第一个导航块
上传&编译
form路径:$AU_TOP/forms/ZHS/
form编译路径:$FND_TOP/forms/ZHS/
f60gen userid=apps/apps module=TEST01.fmb output_file=$FND_TOP/forms/ZHS/TEST01.fmx module_type=FORM batch=no
上一篇: servlet实现购物车(项目代码)
下一篇: sed编辑器