欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FORM

程序员文章站 2022-06-21 15:33:19
...

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