form开发相关技巧Word文件下载.docx
《form开发相关技巧Word文件下载.docx》由会员分享,可在线阅读,更多相关《form开发相关技巧Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
将其中的代码app_standard.event('
EXPORT'
屏蔽掉,改为null;
试一试
3当form启动时,在pre-form触发器中instantiate你特定的菜单items
调用app_special.instantiate包
procedureAPP_SPECIAL.INSTANTIATE(
option_namevarchar2,--定义tigger名字
hintvarchar2defaultnull,--定义菜单实体的名字,使用&
来定义菜单实体的键盘快捷键
iconvarchar2defaultnull,--
initially_enabledbooleandefaulttrue,
separatorvarchar2defaultnull);
--定义'
LINE'
为separator
例子
app_special.instantiate(’SPECIAL1’,’&
rintOrder’,’PRINTORD’);
4,在tool菜单中的checkboxes
--option_name与trigger_name包括关键字CHECKBOX(例如:
SPECIAL3_CHECKBOX)
app_special.instantiate(’SPECIAL3_CHECKBOX’,’Spe&
cial3BoxwLine’,’’,TRUE,’LINE’);
--调用app_special.set_checkbox来初始化checkbox的值
app_special.set_checkbox(’SPECIAL3_CHECKBOX’,’TRUE’);
--在SPECIALn_CHECKBOX函数中和相应的逻辑代码中测试checkbox
app_special.get_checkbox
if(app_special.get_checkbox(’SPECIAL3_CHECKBOX’)=’TRUE’)then
fnd_message.debug(’Special3isTrue!
’);
else
fnd_message.debug(’Special3isFalse!
endif;
5,在你在pre-form中instantiate实体,随意将指定的菜单实体设置为可用或不可用(基于数据块),
调用APP_SPECIAL.ENABLE
procedureAPP_SPECIAL.ENABLE(option_namevarchar2,
state);
在form-level中的pre-blocktrigger里面,将你的special菜单的item定义为disable
app_special.enable(’SPECIAL1’,PROPERTY_OFF);
在form-level中的pre-blocktrigger里面,将你的special菜单的item定义为able
app_special.enable(’SPECIAL1’,PROPERTY_on);
将所有的special菜单设置为disable
app_special.enable(’SPECIAL’,PROPERTY_OFF);
6,编辑鼠标右键菜单
调用APP_POPUP.INSTANTIATE(block或者item层的PRE-POPUPMENUTrigger)
procedureAPP_POPUP.INSTANTIATE(
option_namevarchar2,
txtvarchar2,
initially_enabledbooleandefaulttrue,
与app_special.instantiate类似
例如:
APP_POPUP.INSTANTIATE('
POPUP1'
'
FirstEntry'
7,关于ImplementingZoomUsetheCustomLibrary的学习:
1..pll文件可以用formbuilder打开,修改,创建
2..pll文件的编译方法:
f60genmodule=CUTOM.PLLuserid=apps/appsmodule_type=LIBRARY
3.当系统不自动激活菜单上的图标时,可以在数据块的block-level的when-new-block-instancetrigger中
添加如下代码:
以zoom为例子:
set_menu_item_property('
VIEW.ZOOM'
,ENABLED,PROPERTY_TURE)
在form-level的相应的trigger(比如zoomtrigger)中改写下列代码:
custom.event('
ZOOM'
)
4.fnd_function.exrcute语法:
procedureFND_FUNCTION.EXECUTE
(function_nameINvarchar2,
open_flagINvarchar2default’Y’,
session_flagINvarchar2default’SESSION’,
other_paramsINvarchar2defaultNULL,
activateINvarchar2default’ACTIVATE’,
browser_targetINvarchar2defaultNULL);
5.FND_FUNCTION.TEST(function_nameINvarchar2)
测试指定的函数是否可以连接,该函数用于form启动时测试函数的可用性,
8,弹性域(Flexfields)的总结:
使用FND_KEY_FLEX.DEFINE在itemhandler中设定key弹性域的定义
procedureflexfield_item_name(eventvarchar2)
is
begin
fnd_key_flex.define(
block=>
'
block_name'
field=>
concatenated_segements_field_name'
id=>
ccid_field_name'
appl_short_name=>
shortname_of_application_used_to_register_flexfield'
code=>
flexfield_code'
NUM=>
structure_number'
any_other_auguments);
例:
FND_KEY_FLEX.DEFINE(
BLOCK=>
’LINES’,
FIELD=>
’ACCTG_FLEX_VALUES’,
ID=>
’GL_ACCOUNT_CC_ID’,--YourIDfieldistheGL_ACCOUNT_CC_IDitem
APPL_SHORT_NAME=>
’SQLGL’,
CODE=>
’GL#’,
’101’--可以使用GL_SET_OF_BOOKS_ID作为structureid
----------------------------------------------------------------------------------
使用FND_DESCR_FLEX.DEFINE在itemhandler中设定描述性弹性域的定义
定义
FND_DESCR_FLEX.DEFINE(
BLOCK_NAME'
DISPLAYED_FLEXFIELD_FIELD_NAME'
SHORTNAME_OF_APPLICATION_USED_TO_REGISTER_FLEXFIELD'
DESC_FLEX_NAME=>
FLEXFIELD_NAME'
ANY_OTHER_ARGUMNTS);
例
’ORDERS’,
’DESC_FLEX’,
’DEM’,
’DEM_ORDERS’);
9,COPY命令
Copiesavaluefromoneitemorvariableintoanotheritemorglobalvariable.
Syntax
PROCEDURECOPY(sourceVARCHAR2,destinationVARCHAR2)
Parameters
source:
Thesourceisaliteralvalue.
destination:
Thedestinationcanbeeitheratextitemoranotherglobalvariable.
例:
COPY('
Yes'
'
GLOBAL.'
||global_var_name);
将‘YES’付值给变量global_var_name
10,message用法总结:
1.设置信息:
--FND_MESSAGE.SET_NAME语法:
procedureFND_MESSAGE.SET_NAME(application_shortnameINvarchar2,message_nameINvarchar2);
作用:
从MessageDictionary获取一条信息
一般情况下在FORM中显示出错信息使用以下代码:
FND_MESSAGE.SET_NAME(APPL_SHORT_NAME,MESSAGE_NAME);
FND_MESSAGE.ERROR;
--FND_MESSAGE.RETRIEVE
取得一条数据库中的等待信息
--FND_MESSAGE.SET_STRING(valueINvarchar2)
作用:
将字符串放到消息栈中,
--FND_MESSAGE.SET_TOKEN
用值替换message的信息中的变量
语法:
procedureFND_MESSAGE.SET_TOKEN(token_nameINVARCHAR2,valueINVARCHAR2
translateINbooleandefaultFALSE);
--在form用于显示信息的函数
1.FND_MESSAGE.ERROR
2.FND_MESSAGE.WARN
Example:
FND_MESSAGE.SET_NAME(’SQLAP’,’AP_PAY_MULTI_PAY_VOID’);
REC_COUNT:
=<
NUMBEROFPAYMENTS>
;
FND_MESSAGE.SET_TOKEN(’NUM_OF_RECS’,REC_COUNT);
IF(NOTFND_MESSAGE.WARN)THEN
RaiseFORM_TRIGGER_FAILURE;
ENDIF;
3.FND_MESSAGE.QUESTION
FND_MESSAGE.QUESTION(
button1INvarchar2default‘YES’,
button2INvarchar2default‘NO’,
button3INvarchar2default‘CANCEL’;
default_btnINnumberdefault1,
cancel_btnINnumberdefault3,
iconINvarchar2default‘question’)returnnumber;
FND_MESSAGE.QUESTION返回一个被选中的button的number
FND_MESSAGE.SET_NAME(’FND’,’ATCHMT-COMMITBEFOREINVOKING’);
IFFND_MESSAGE.QUESTION
(’YES’,’CANCEL’,NULL,1,2,NULL)=2THEN
RAISEFORM_TRIGGER_FAILURE;
4.FND_MESSAGE.SHOW
显示信息
5.FND_MESSAGE.DEBUG
6.FND_MESSAGE.GET
取得在message中设置好的message信息
11设置Item-level和Item-instance-level属性时需特别的注意,
Item-level属性影响所有的记录,而Item-instance-level属性只影响特定的记录(当前行)。
12fotmattingcurrencyfields(货币的转换和格式化)
FND_CURRENCY:
TheDynamicCurrencyfeatureallowsdifferentvaluesinarbitrarycurrenciestobedisplayedin
thesamereportorform,eachshownwithappropriateformatting.
FND_CURRENCY.GET_FORMAT_MASK(:
ORDERS.CURRENCY_CODE,GET_ITEM_PROPERTY('
LINES.PRICE'
MAX_LENGTH));
1.取得需对应的货币
其中:
GET_ITEM_PROPERTY('
MAX_LENGTH)为返回一个该item的最大长度,
FND_CURRENCY.GET_FORMAT_MASK(currency_codeINvarchar2,field_lengthINnumber)returnvarchar2;
2.格式化(需要的话进行汇率转换)item的货币类型
APP_ITEM_PROPERTY.SET_PROPERTY('
FORMAT_MASK,
ORDERS.CURRENCY_CODE,
MAX_LENGTH)))
3.动态控制item的显示格式的触发范围
在Block-level的Post-querytrigger和Item-level的when-validate-itemtrigger调用handler,控制显示格式。
CALENDAR日历
如何实现在form中弹出calendar并返回所选日期的功能?
1.设textitem为日期型,LOV属性为:
ENABLE_LIST_LAMP并且ValidatefromListLOV—>
No
2.在该textitem的KE_LISTVAL下加入如下代码:
calendar.show;
trigger属性ExecutionHierarchy—>
Override,fireinenter-querymode—>
No。
使用APP_DATE.FND_DATE取得服务器端的时间环境
13,Dependenciesitem的编程
1.APP_FIELD.SET_DEPENDENT_FIELD(EVENT,:
block.master_item=CONDITION,
‘block.dependent_item’);
用途:
Aconditionally-dependentitemchangesvalidationwhenthevalueinthemaster
itemchanges.Specifytheconditionratherthanthemasteritemname.
Thisproceduremakesanitementerableornotenterablebasedonwhetherthemasteritem
isNULLoraspecifiedconditionisTRUE,andclearsthefield.Thedependentitemcanbe
atextitem,checkbox,orpoplist.
Youtypicallycallthisprocedureinthefollowingtriggers:
?
WHEN–VALIDATE–ITEMonthemasterfield
WHEN–VALIDATE–ITEMonthefield(s)theconditionisbasedonorineventINIT
onthedependentfield
PRE–RECORD
POST–QUERY(requiredonlywhenthedependentitemisina
multi–recordblock)
:
block.master_item=CONDITION包括:
--APP_FIELD.SET_DEPENDENT_FIELD(EVENT,(:
block.master_itemISNOTNULL),
’block.dependent_item’);
用于Multipleitemsmaydependonasinglemaster.
--APP_FIELD.SET_DEPENDENT_FIELD(EVENT,((:
block.master_item1ISNOTNULL)AND
(:
block.master_item2ISNOTNULL)),’block.dependent_item’);
用于Twomasteritemsmayshareadependentitem.
--APP_FIELD.SET_DEPENDENT_FIELD(EVENT,’block.master_item,’block.dependent_item’);
用于Cascadingdependence-anitemcanbebothmasteranddependent.
2.APP_FIELD.SET_EXCLUSIVE_FIELD
用途Mutuallyexclusiveitems—theylookliketwoitems,butbehaveasone.Use
APP_FIELD.SET_EXCLUSIVE_FIELDtocode.
--APP_FIELD.SET_EXCLUSIVE_FIELD(EVENT,’block.item1’,’block.item2’,’block.item3’);
Callitemhandlerproceduresin:
–WHEN-VALIDATE-ITEMforeachexclusiveitem
–PRE-RECORDontheitems’block(FireinEnter-QueryMode:
No)
–WHEN-CREATE-RECORDontheitems’block
3.APP_FIELD.SET_INCLUSIVE_FIELD
用途MutuallyInclusiveItems—oneforallandallforone!
UseAPP_FIELD.SET_INCLUSIVE_FIELDtocodeasetofitemswhere,ifany
oftheitemsisnotnull,allitemsarerequired.
--APP_FIELD.SET_INCLUSIVE_FIELD(EVENT,’block.item1’,’block.item2’);
Callitemhandlerproceduresin:
–WHEN-VALIDATE-ITEMforeachinclusiveitem
4.APP_FIELD.SET_REQUIRED_FIELD
ConditionallyMandatoryitems—useAPP_FIELD.SET_REQUIRED_FIELDto
requirecertainitemsonlyifacertainconditionismet.
--APP_FIELD.SET_REQUIRED_FIELD(EVENT,(CONDITION),’block.item’);
通常在以下的trigger中调用Dependencies控制逻辑:
PRE-RECORD,when-create-record,
when-validate-item,when-checkbox-changed,when-radio-changed,when-list-changed
和‘INIT’事件。
PRE-RECORD和INIT是在操作数据前初始化这些逻辑,而其他是在item发生变化后验证这些逻辑,满足条件则进行后续的动作。
------------------------------------------------------------------------------
使用APP_ITEM_PROPERTY.SET_PROPERTY代替SET_ITEM_PROPERTY设置item属性
APP_ITEM_PROPERTY.SET_PROPERTYmo