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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值