赋值即可。 4.单选框和复选框
Value when Checked:Y Value when Unchecked:N
Check Box Mapping of Other Values:Unchecked 因为复选框除了选中,被选中外,还有一个null值状态,所以要设置null状态下的值是多少。 获得复选框的值:块名.复选框名–> Y or N 单选框:是一个单选组,组里有单选按钮 单选组:子类---Radio Group 单选按钮:子类---Radio Button Radio Button Value—这个属性必须有值
5.手电筒窗口查询
1.打开一个模板APPSTAND,将Object Groups下的QUERY_FIND对象拖到自己的form中,点击copy。将在block,canvases,windows下生成对应名称为QUERY_FIND的对象。 2. 将new 和find按钮,QUERY_FIND数据块下的key-nxtblock代码修改 New:新建的数据块名称 Find:查询的数据块名称 key-nxtblock:查询数据块的名称 3.设置query_find查询块的
块,这样关闭query_find的时候,就会显示主界面块。
属性为主界面
4.在主界面块内创建query_find触发器,名称不能修改,添加如下代码: App_find.query_find(main_win,query_find_win,query_find_block); 参数1:main_win—查询窗口显示在哪个窗口上 参数2:query_find_win ---查询窗口界面对应的窗口 参数3:query_find_block –查询窗口对应的块名称 5.在主界面块中的pre-query内添加查询代码 Copy ,app_find.query_range等 6.主界面块的when-new-record-instace触发器Execution Hierarchy 设置为After
注意:在其他窗口上调用出手电筒
若该窗口有两个块。则在两个块上建立query_find触发器,代码为app_find.query_find
6.菜单栏
通过这种方法来设置菜单的名称(when-new-form-instance) fnd_message.set_name('SQLSZA',
'SZA_PA_010_BUDGET_CHECK')/*;消息内容:预算检查(&B)*/ app_special.instantiate('SPECIAL1',
fnd_message.get);
app_special.disable('SPECIAL1');--使菜单灰显(失效) app_special.enable('SPECIAL1');--启用菜单
7.主从块
7.启用功能
fnd_function.execute(function_name INVARCHAR2, open_flag INVARCHAR2DEFAULT'Y', session_flag INVARCHAR2DEFAULT'SESSION', other_params INVARCHAR2DEFAULTNULL, activate INVARCHAR2DEFAULT'ACTIVATE', browser_target INVARCHAR2DEFAULTNULL); 关于详细介绍请查看 http://note.youdao.com/share/?id=cfde5dcc68e15a303e53a4f8b5166919&type=note
8.行指示器打开记录
1).更改行指示器的子类,如图
2.在Item触发器when-item-instance内
CURRENT_RECORD_INDICATOR名称改成DRILLDOWN_RECORD_INDICATOR
三.Form开发中常用的技巧
1.关闭窗口
如何正确的关闭非主窗口(A是主窗口块,B是非主窗口块)
在APP_CUSTOM.close_window这个过程内,if语句内注册window的关闭事件,代码为 clear_block;
go_item(‘A.Item_name’);
第二种方法是:设置B的previous navigate block为A,建议使用
在form触发器WHEN-WINDOW-RESIZED中的代码作用:folder能否随着窗口大小变化而变化。
2.lov查找
为item(lov)赋初值,初值在lov中存在多个。
在这中情况下,当你做其他操作时,lov会自动弹出让你选择某一个值。 如果lov中数据过多,需要先在查找中先输入字符,然后在匹配查找的方法:
不显示lov项可以设置显示项的宽度为0即可
3.得到dml语句错误信息
在on-insert触发器内,加入如下代码: exception when others then fnd_message.debug(sqlerrm);
可以得到触发器的具体信息。
4.clear_block 函数
一般在form的插入或更新模式下,clear_blcok会引发是否保存当前内容的系统提示,如果不希望提示,可以使用clear_block(NO_VALIDATE)
5.查询函数的使用
app_query.append( block_name,sql) 参数1:block_name ---字符串
参数2:sql ---字符串,一条查询语句
app_find.query_range( qf_block_name.item_name1,qf_block_name2,block_item_name) 参数qf_block_name.item_name1,qf_block_name2:因为该函数适用于范围查找,所以参数1表示范围开始,参数2表示范围结束
参数3:block_item_name –数据块对应的item项 Copy(qf_item,block_item) 类似于第二种,不是范围查找,针对某一个数据块 do_key
使用如下代码,不直接调用execute_query。
:parameter.g_query_find := 'TRUE';
do_key('execute_query'); :parameter.g_query_find := 'FALSE'; app_query.reset('TRACK');
6.设置头块和行块的增删改属性
尽量不设置 insert_allowed 和update-allowed属性,insert属性一般只设置行块,头块都是可以新增的,update属性通过设置item的能否输入来实现。
当查询后重新在when-new-block-instance调用一下刷新按钮以及块状态的过程。 一般都会在过程中先把块的delete_allowed和insert_allowed设置为NO,然后再根据逻辑去该状态。这样就不会出错。