FORM二次开发 STEP BY STEP.docx

上传人:b****6 文档编号:6131781 上传时间:2023-01-04 格式:DOCX 页数:48 大小:1.05MB
下载 相关 举报
FORM二次开发 STEP BY STEP.docx_第1页
第1页 / 共48页
FORM二次开发 STEP BY STEP.docx_第2页
第2页 / 共48页
FORM二次开发 STEP BY STEP.docx_第3页
第3页 / 共48页
FORM二次开发 STEP BY STEP.docx_第4页
第4页 / 共48页
FORM二次开发 STEP BY STEP.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

FORM二次开发 STEP BY STEP.docx

《FORM二次开发 STEP BY STEP.docx》由会员分享,可在线阅读,更多相关《FORM二次开发 STEP BY STEP.docx(48页珍藏版)》请在冰豆网上搜索。

FORM二次开发 STEP BY STEP.docx

FORM二次开发STEPBYSTEP

FORM二次开发STEPBYSTEP

 

作者:

梁贤院

创建日:

2006-9-18

更新日:

控制号:

版本:

1.0

EMAIL:

l_x_yuan@

目录

目录2

FORM二次开发STEPBYSTEP3

1.Ftp->download3

2.安装数据库3

3.命名文件及前期工作3

4.建立数据库BLOCK5

5.布局向导定义6

6.块属性定义8

7.ITEM属性定义9

8.程序单元定义12

9.触发器定义12

10.LOV定义14

11.验证弹性域18

12.实现注销记录功能20

13.实现查询功能21

FOLDER二次开发STEPBYSTEP23

1.第一步到第三步同上23

2.添加标准类和对象24

3.建立数据库BLOCK25

4.布局向导定义26

5.TECH_DOCUMENTS块属性定义28

6.TECH_DOCUMENTS块下ITEM属性定义29

7.堆叠画布属性定义32

8.新增PROMPT块及属性定义33

9.PROMPT块下ITEM及属性定义34

10.LOV定义38

11.程序单元定义42

12.触发器定义43

13.实现注销记录功能(同前面)46

14.实现查询功能(同前面)46

FORM二次开发STEPBYSTEP

1.Ftp->download

一般到相应模块的目录下载$AU_TOP/forms/US$AU_TOP/forms/ZHS$AU_TOP/resource

2.安装数据库配置本地路径

运行:

INSTALL.sql

打开注册表HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_DevSuiteHome1修改路径:

FORMS_PATH

C:

\DevSuiteHome_1\cgenf61\admin;D:

\resource12\resource;D:

\resource12\ZHS;C:

\DevSuiteHome_1\forms

3.命名文件及前期工作

a)删除BLOCKNAME,DETAILBLOCK块

b)打开BLOCKNAME画布删除所有内容,并命名为MAIN

c)将窗口BLOCKNAME并命名为MAIN

d)修改app_custom包的if(wnd='')then改为if(wnd='MAIN')then

e)WHEN-NEW-FORM-INSTANCE:

$Header:

TEMPLATE.fmb改为$Header:

CUXTECHDEMO.fmb

修改FORM级的PRE-FORM事件中修改为

FND_STANDARD.FORM_INFO('$Revision:

115.11$','DEMOForm','CUX',

'$Date:

2000/05/2517:

20$','$Author:

appldev$');

f)app_standard.event('PRE-FORM');

g)app_window.set_window_position('MAIN','FIRST_WINDOW');

删除后

命名

4.建立数据库BLOCK

5.布局向导定义

6.块属性定义

a)BLOCK名修改为:

TECH_DOCUMENTS

b)子类信息改为BLOCK

c)显示滚动条,设置其画布为:

MAIN

d)

e)

7.ITEM属性定义

DOC_NAME,DESCRIPTION,AUTHOR,DEPT_NAME子类信息改为TEXT_ITEM

COMMIT_DATE子类信息改为TEXT_ITEM_DATE,LOV改为:

ENABLE_LIST_LAMP.

从列表中验证改为:

调整画布,ITEM宽度成这样

新增加一个ITEMCURRENT_RECORD_INDICATOR子类信息为:

CURRENT_RECORD_INDICATOR

调整高,宽与其它ITEM对齐

新增加一个DF子类信息为:

TEXT_ITEM_DESC_FLEX.(弹性域)

将列ROW_ID子类属性为ROW_ID

LAST_UPDATE_DATE子类属性为CREATION_OR_LAST_UPDATE_DATE

CREATION_DATE子类属性为CREATION_OR_LAST_UPDATE_DATE

 

8.程序单元定义

增加程序单元:

TECH_DOCUMENTS_DATA和TECH_DOCUMENTS_PKG

将DEMO的文件代码拷贝到相应的单元

9.触发器定义

在块TECH_DOCUMENTS写下如下触发器和代码:

PRE-INSERT:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('PRE-INSERT');

PRE-UPDATE:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('PRE-UPDATE');

WHEN-VALIDATE-RECORD:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('WHEN-VALIDATE-RECORD');

PRE-QUERY:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('PRE-QUERY');

POST-QUERY:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('POST-QUERY');

ON-INSERT:

TECH_DOCUMENTS_DATA.INSERT_ROW;

ON-DELETE:

TECH_DOCUMENTS_DATA.DELETE_ROW;

ON-UPDATE:

TECH_DOCUMENTS_DATA.UPDATE_ROW;

ON-LOCK:

TECH_DOCUMENTS_DATA.LOCK_ROW;

打开ITEMDF写下如下SQL和代码:

WHEN-NEW-ITEM-INSTANCE:

TECH_DOCUMENTS_PKG.DF('WHEN-NEW-ITEM-INSTANCE');

WHEN-VALIDATE-ITEM:

TECH_DOCUMENTS_PKG.DF('WHEN-VALIDATE-ITEM');

点击ITEMCOMMIT_DATE新建:

KEY-LISTVAL:

calendar.show;

10.LOV定义

重命名为:

在DEPT_LOV列映射属性.点击弹出对话框:

输入

子类信息:

LOV

返回项:

DEPT_NO:

TECH_DOCUMENTS.DEPT_NO

返回项:

DEPT_NAME:

TECH_DOCUMENTS.DEPT_NAME

选择ITEMDEPT_NAME的LOV属性DEPT_LOV

11.验证弹性域

是否有如下两个触发器(WHEN-NEW-ITEM-INSTANCE,WHEN-VALIDATE-ITEM)的DF字段

并检查触发器代码

块上是否有如下触发器:

PRE-QUERY,POST-QUERY,PRE-INSERT,PRE-UPDATE,WHEN-VALIDATE-RECORD

检查TECH_DOCUMENTS_PKG的相关代码是否完整.FND_FLEX.event

检查FORM级别:

WHEN-NEW-FORM-INSTANCE是否加入弹性域初始化SQL

--弹性域

fnd_descr_flex.define(BLOCK=>'TECH_DOCUMENTS'

field=>'DF'

appl_short_name=>'CUX'

desc_flex_name=>'CUX_TECH_DOCUMENTS_DF');

12.实现注销记录功能

添加FORM级TRIGGER:

SPECIAL1

修改FORM级TRIGGER:

WHEN-NEW-FORM-INSTANCE

添加以下代码,用以定义新的菜单项“注销记录”

APP_SPECIAL.INSTANTIATE('SPECIAL1','注销记录');

13.实现查询功能

从APPSTAND.fmb中拷贝QUERY-FIND对象到开发的FORM

QUERY-FIND对象包含:

QUERY-FINDWINDOW

QUERY-FINDCANVAS

QUERY-FINDBLOCK

本示列从DEMO程序中直接拷贝

拷贝好后,将其名字分别更改为QF_WINDOW,TECH_DOCU_QF,TECH_DOCU_QF,

 

并将TECH_DOCU_QF块属性设置为:

QUERYALLOWEDNO

PREVIOUSNAVIGATIONDATABLOCK:

TECH_DOCUMENTS

按照前面设置相关子类信息:

TECH_DOCU_QF:

BLOCK

TECH_DOCU_QF.DOC_NAME:

TEXT_ITEM

TECH_DOCU_QF.CLEAR:

BUTTON

TECH_DOCU_QF.FIND:

BUTTON

确认TECH_DOCUMENTS_PKG包里有如下代码:

IF:

parameter.g_query_find='TRUE'THEN

copy(name_in('TECH_DOCU_QF.DOC_NAME'),'TECH_DOCUMENTS.DOC_NAME');

:

parameter.g_query_find:

='FALSE';

ENDIF;

新增TECH_DOCUMENT块触发器QUERY_FIND:

并写下:

APP_FIND.QUERY_FIND('MAIN','QF_WINDOW','TECH_DOCU_QF');

14.上传服务器编译

上传到$AU_TOP/forms/ZHS目录下面

 

cd$AU_TOP/forms/ZHS

FORMS_PATH="$AU_TOP/resource:

$AU_TOP/resource/stub:

$AU_TOP/forms/ZHS"

exportFORMS_PATH

frmcmp_batchmodule=$AU_TOP/forms/ZHS/CUXTECHDEMO.fmbuserid=apps/appsoutput_file=$CUX_TOP/forms/ZHS/CUXTECHDEMO.fmxmodule_type=form

frmcmp_batchmodule=$AU_TOP/forms/ZHS/CUXTECHDEMOFOLDER.fmbuserid=apps/appsoutput_file=$CUX_TOP/forms/ZHS/CUXTECHDEMOFOLDER.fmxmodule_type=form

 

另外编译pll文件命令

frmcmp_batchmodule=$AU_TOP/resource/POXPOCTR.plluserid=apps/appsoutput_file=$CUX_TOP/resource/POXPOCTR.plxmodule_type=LIBRARY

 

FOLDER二次开发STEPBYSTEP

1.第一步到第三步同上

2.添加标准类和对象

●添加附加程序库:

APPFLDR.pll.对话框里选择是

●将APPSTAND.fmb文件中的对象组STANDARD_FOLDER拖到本文件的对象组里

选择子类按钮

3.建立数据库BLOCK

4.布局向导定义

5.TECH_DOCUMENTS块属性定义

a)BLOCK名修改为:

TECH_DOCUMENTS

b)子类信息改为BLOCK

c)显示滚动条,设置其画布为:

MAIN

d)

e)

6.TECH_DOCUMENTS块下ITEM属性定义

DOC_NAME,DESCRIPTION,AUTHOR,DEPT_NAME子类信息改为TEXT_ITEM.并去掉提示属性

COMMIT_DATE子类信息改为TEXT_ITEM_DATE,LOV改为:

ENABLE_LIST_LAMP.

从列表中验证改为:

否.并去掉提示属性

调整画布,ITEM宽度成这样

新增加一个ITEMCURRENT_RECORD_INDICATOR子类信息为:

CURRENT_RECORD_INDICATOR

调整高,宽与其它ITEM对齐.CANVAS为:

MAIN

新增加一个DF子类信息为:

TEXT_ITEM_DESC_FLEX.(弹性域)

画布属性:

新增一个FOLDER_SWITCHER

子类信息:

SWITCHER

画布:

MAIN

将列ROW_ID子类属性为ROW_ID

LAST_UPDATE_DATE子类属性为CREATION_OR_LAST_UPDATE_DAT

CREATION_DATE子类属性为CREATION_OR_LAST_UPDATE_DAT

7.堆叠画布属性定义

名称:

TD_STACK.

子类信息:

CANVAS_STACKED

视图窗口宽度:

6.5

视图窗口高度:

3

X轴位置:

0.33

Y轴位置:

0.2

宽度:

9

高度:

3

显示水平滚动条:

调整画布MAIN为如图:

8.新增PROMPT块及属性定义

新增一个块。

不不基表块。

名称:

PROMPT

数据库数据块:

9.PROMPT块下ITEM及属性定义

选中图中几个字段。

选择菜单复制。

再再PROMPT块上选择粘贴。

如图拷贝六个ITEM

设置六个ITEM的子类属性为:

FOLDER_PROMPT_MULTIROW

设置六个ITEM初始值为:

DOC_NAME:

文档名称

DESCRIPTION:

描述

AUTHOR:

作者

DEPT_NAME:

部门

COMMIT_DATE:

提交日期

DF:

[]

打开画布:

TD_STACK.调整六个ITEM的位置。

新增三个按钮:

如图:

名称:

ORDER_BY1,ORDER_BY2,ORDER_BY3

子类信息:

FOLDER_ORDERBY

画布:

TD_STACK

添加FOLDER_OPEN按钮

子类信息:

FOLDER_OPEN

画布:

MAIN

添加FOLDER_TITLE

子类信息:

DYNAMIC_TITLE

画布:

MAIN

添加:

FOLDER_DUMMY

子类信息:

FOLDER_DUMMY

画布:

MAIN

10.LOV定义

重命名为:

在DEPT_LOV列映射属性.点击弹出对话框:

输入

子类信息:

LOV

返回项:

DEPT_NO:

ECH_DOCUMENTS.DEPT_NO

返回项:

DEPT_NAME:

ECH_DOCUMENTS.DEPT_NAME

选择ITEMDEPT_NAME的LOV属性DEPT_LOV

11.程序单元定义

增加程序单元:

TECH_DOCUMENTS_DATA和TECH_DOCUMENTS_PKG

将DEMO的文件代码拷贝到相应的单元

12.触发器定义

在块TECH_DOCUMENTS写下如下触发器和代码:

PRE-INSERT:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('PRE-INSERT');

PRE-UPDATE:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('PRE-UPDATE');

WHEN-VALIDATE-RECORD:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('WHEN-VALIDATE-RECORD');

PRE-QUERY:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('PRE-QUERY');

POST-QUERY:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('POST-QUERY');

ON-INSERT:

TECH_DOCUMENTS_DATA.INSERT_ROW;

ON-DELETE:

TECH_DOCUMENTS_DATA.DELETE_ROW;

ON-UPDATE:

TECH_DOCUMENTS_DATA.UPDATE_ROW;

ON-LOCK:

TECH_DOCUMENTS_DATA.LOCK_ROW;

KEY-PREV-ITEM:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('KEY-PREV-ITEM');

KEY-NEXT-ITEM:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('KEY-NEXT-ITEM');

KEY-EXEQRY:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('KEY-EXEQRY');

KEY-ENTQRY:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('KEY-ENTQRY');

WHEN-NEW-RECORD-INSTANCE:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('WHEN-NEW-RECORD-INSTANCE');

POST-BLOCK:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('POST-BLOCK');

PRE-BLOCK:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('PRE-BLOCK');

WHEN-NEW-BLOCK-INSTANCE:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('WHEN-NEW-BLOCK-INSTANCE');

KEY-PRVREC:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('KEY-PRVREC');

KEY-NXTREC:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('KEY-NXTREC');

KEY-CLRBLK:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('KEY-CLRBLK');

KEY-CLRREC:

TECH_DOCUMENTS_PKG.BLOCK_EVENT('KEY-CLRREC');

打开ITEMDF写下如下SQL和代码:

WHEN-NEW-ITEM-INSTANCE:

TECH_DOCUMENTS_PKG.DF('WHEN-NEW-ITEM-INSTANCE');

WHEN-VALIDATE-ITEM:

TECH_DOCUMENTS_PKG.DF('WHEN-VALIDATE-ITEM');

点击ITEMCOMMIT_DATE新建:

KEY-LISTVAL:

calendar.show;

更改form级的FOLDER_ACTIONtrigger.

app_folder.event(:

global.folder_action);

更改form级的WHEN-WINDOW-RESIZEDtrigger.

if:

system.event_windowin('MAIN')then

app_folder.event('WHEN-WINDOW-RESIZED');

endif;

更改form级的KEY-CLRFRMtrigger.

APP_STANDARD.EVENT('KEY-CLRFRM');

app_folder.event('KEY-CLRFRM');

 

更改FORM级的WHEN-NEW-FORM-INSTANCE增加如下代码

--弹性域

fnd_descr_flex.define(BLOCK=>'TECH_DOCUMENTS'

field=>'DF'

appl_short_name=>'CUX'

desc_flex_name=>'CUX_TECH_DOCUMENTS_DF');

--Flolder

app_flolder.define_folder_block(object_name=>'CUXTECHDEMO'

folder_block_name=>'TECH_DOCUMENTS'

prompt_block_name=>'PROMPT'

folder_canvas_name=>'TD_STACK'

folder_window_name=>'MAIN'

disabled_functions=>NULL

tab_canvas_name=>NULL

fixed_canvas_name=>NULL);

app_folder.event('INSTANTIATE');

13.实现注销记录功能(同前面)

同前面

14.实现查询功能(同前面)

同前面

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1