1. 打开Template.fmb,并另存为一个名字(QUERYFIND.fmb)
2.从Window,Canvas,Data Block中删除BLOCKNAME,从Data Block中删除DETAILBLOCK
3.创建一个Window(DEPT_WINDOW),subclass选择WINDOW
4.Pre-Form trigger中,把DEPT_WINDOW设置为第一个显示的窗口
Program Unit:APP_CUSTOM中,设置关闭窗口的行为
5.定义一个Canvas(DEPT_CANVAS),subclass设置为CANVAS
6.通过Wizard创建Data block:DEPT,在Table中使用DEPT这个部门表
并把这个Block绑定到刚创建的canvas:DEPT_CANVAS上
把block:DEPT的subclass设置为BLOCK ,并且把block下边三个字段的subclass都设置为TEXT_ITEM.
7.加载APPSTAND.fmb
把APPSTAND.fmb下的Object Groups中的Query_Find对象组拖到Demo Form中的Object Groups中(选择Copy),
这样window,canvas,datablock有了QUERY_FIND标准对象
然后分别定义QUERY_FIND window,canvas,block的subclass。
打开QUERY_FIND block,可以看到默认会有三个button自动带入。
修改FIND,New按钮的When-Button-Pressed代码,把block:DEPT,替换进去
8.在Query_Find block中增加一个TEXT_ITEM字段,用于在查询时输入部门编码,并记得把这个字段绑定到Query_Find canvas中去。
9.然后把APPSTAND.fmb中的QUERY_FIND trigger拖拽到DEPT block level(Copy)
把原有的代码改成APP_FIND.QUERY_FIND(‘DEPT_WINDOW’, ‘QUERY_FIND’,'QUERY_FIND’);
补充:Syntax: APP_FIND.QUERY_FIND(<results block window>,<Find window>,<Find window block>);
10.接下来,在DEPT block level创建一个Pre-Query trigger,代码如下:
IF :parameter.G_query_find = 'TRUE' THEN
COPY(:QUERY_FIND.DEPT_NO,'DEPT.DEPTNO');
:parameter.G_query_find := 'FALSE';
END IF;
补充:
:parameter.G_query_find为True表示,当前查询为Query Find所触发的。
Pre-Query Syntax:
IF :parameter.G_query_find = TRUE THEN
COPY (<find Window field>,<results field>);
:parameter.G_query_find := FALSE;
END IF;
11.Form:QUERYFIND的属性中,设置First Navigation Data Block为Query_Find
QUERY_FIND block的Next Navigation Data Block设置为DEPT
12.Compile一把,看看有没有错误。没有错误的话,就可以参考如何注册一个新的form到EBS系统把文件注册到系统中了。
13.进入系统,查看功能