当前位置:首页 > Oracle FORM 开发笔记
格式: procedure APP_FIND.NEW(block_name varchar2);
Description
This routine is called by the \record in the block on which the find is based.
Arguments (input)
block_name The name of the block the Find Window is based on 3) APP_FIND.CLEAR
格式: procedure APP_FIND.CLEAR;
Description
This routine is called by the \4) APP_FIND.CLEAR_DETAIL
18、不管是基于基表还是基于视图的Block,都建议编写ON-UPDATE、ON-INSERT、ON-DELETE、ON-LOCK触发器,
并且,把具体的DML和锁记录代码放入数据库Package中,然后在Form中调用,该Package以后还可以在其他地方调用。
理解:对于基于非单表视图的Block来说,这里的4个触发器是必须要写的,具体代码可以直接写在触发器内,但为了模块化管理和今后维护方便,这里分为三层调用,触发器中调用Program Unit中的过程,Program Unit中调用数据库Package中的过程。
19、app_item_property.set_property
(’Item_name’,update/insert/delete_allowed,property_true);过程用于修改item属性, set_block_property(‘block_name’,update/…._allowed,property_true);
SET_ITEM_INSTANCE_PROPERTY('CUX_EMP_CSW.EMP_NAME',CURRENT_RECORD,UPDATE_ALLOWED,PROPERTY_FALSE); 设置当前某列的某个属性值
20、添加日历项:
1)添加key_listval触发器,代码:calendar.show(默认日期); 2)修改项的格式掩码—yyyy-mm-dd 时间显示格式
3)修改项的lov属性,为List of value 为enable_list_lamp,Validate from list为否
21、lov的注意
1)列:指要返回的列,并在界面显示(一般全选)
2)列显示:要在界面上显示的标题,并设置返回值(修改标题,设置要返回到那个item)
3)项:指要在那个列上显示lov按钮(选要进行选择的列)
22、滚动条
1)块滚动条:水平与垂直其一,一般只添加垂直滚动条
2)画布滚动条:因为view是显示在界面上的,而canvas是存放item的,如果view太小不足以显示所有的item则需要使用canvas滚动条了,一般使用在堆叠canvas上(一般使用水平滚动条)
23、创建堆叠画布时,要再new form触发器中添加入:
show_view(‘canvas_name’); 步骤:
1) 创建一个堆叠画布,设置标题、子类、显示水平滚动条、window与主画布相同 2) 设置item到新增加的堆叠画布上 3) 调整堆叠画布, 规则:
1) view在canvas上的坐标为:0,0;宽度以情况而定,高度与canvas相同 2) canvas左右没有空白,第一个item的坐标为0,0.25(用于放prompt) 3) canvas底部留出0.2的宽度用于存放滚动条
24、添加行指示符:在block中添加一个item,并设置为current_record_indicator 25、建立块查询步骤:
1)打开appstand.fmb,并拖动query_fnd对象组到所需要建立块查询的form中,选择copy的方式 2)删除对象组query_fnd,此时我们的form中会新增加了一个window、canvas、block,分别设置它们的子类属性,并设置block属性的上、下导航块(上为目标块,下为null)而主块的上、下导航为本身
3)修改clear、new、find按钮触发器中的block_name为要查询的块名 4)为query_find block手动添加所需要的item,并显示到相应的canvas上
5)修改块触发器,为要查询的块block添加一个user_name(name:query_find)的触发器,并写入代码:
app_find.query_find(‘block_window’,’query_find_window’,’query_find_block’);
block_window与query_find的window、block进行绑定,调用EBS中的手电筒按钮
将
6)为要查询的block添加一个pre_query触发器,并写入代码:(ture和false注意大小写)
if :parameter.G_query_find = 'TRUE' then
copy(name_in('query_find.ORGANIZATION_ID'),'CUX_DEPT_CSW.ORGANIZATION_ID');
copy(name_in('query_find.department_id'),'CUX_DEPT_CSW.DEPARTMENT_ID'); app_find.query_date_range(:query_find.VALID_date_f,
:query_find.VALID_date_t,
'CUX_DEPT_CSW.VALID_DATE'); :parameter.G_query_find := 'FALSE'; END IF;
将块查询的条件传递到主块上,并执行ctrl+F11,这样就达到了查询的目的了
26、光标从块A点入块B时触发器执行过程:
27、创建tab画布步骤:
1)新建一个tab_canvas,并创建herders与lines pages(这两个pages是必须的),设置herders与lines的显示标签
2)设置Item的显示canvas到新建立的tab_canvas上(设置初始化那个page显示) 3)切换到主画布,在view->stacked canvas中选择tab_canvas将tab_canvas显示到主画布上
4)控制标签pages的显示
1、在Form级WHEN-NEW-FORM-INSTANCE中追加:
SET_CANVAS_PROPERTY('TAB_CANVAS', TOPMOST_TAB_PAGE, 'HEADERS');
2、新建Form级WHEN-TAB-PAGE-CHANGED触发器,该触发器是用鼠标点时才会触
发;另外注意几个Form标准过程的使用: IF :system.tab_previous_page = 'HEADERS' THEN validate(block_scope);
IF :system.MODE = 'ENTER-QUERY' OR NOT form_success THEN --Message here
set_canvas_property('TAB_DEMO',topmost_tab_page,:system.tab_previous_pag
e);
RETURN; END IF;
ELSIF :system.tab_previous_page = 'LINES' THEN
validate(block_scope);
IF :system.MODE = 'ENTER-QUERY' OR NOT form_success THEN --Message here
set_canvas_property('TAB_DEMO',topmost_tab_page,:system.tab_previous_pag
e);
RETURN; END IF; END IF;
IF :system.tab_new_page = 'LINES' THEN
--show_view('ORDER_LINES_STACKED'); go_item('ORDER_LINES.ORGANIZATION_CODE'); ELSIF :system.tab_new_page = 'HEADERS' THEN --hide_view('ORDER_LINES_STACKED'); go_item('ORDER_HEADERS.DESCRIPTION'); END IF;
28、一个导航块中必须有一个ITEM可UPDATE或INSERT可输入,否则会提示目标块中没有可导航的项(frm-40106错误) 29、一个块名称超过22个字符,会提示(frm-41079:添加组
列错误)
30、创建文件夹步骤及注意:
注意:如果创建文件夹不显示prompt,则在new_form_instance触发器中添加app_folder.event('INSTANTIATE');
为文件夹添加自动伸缩的效果:在when_window_resized中添加
IF :SYSTEM.EVENT_WINDOW IN (‘WINDOW_NAME’) THEN APP_FOLDER.EVENT(‘WHEN_WINDOW_RESIZED’); END IF;
1)打开APPSTAND.FMB表单,将object group中的STARNDARD_FOLDER拖动到我们
新建的form中,选择subclass,将SAMPLE_FOLDER中的所有触发器拖动到我们要建立文件夹选项的block上
2)为我们新建的form导入APPFLDR.PLL库
3)新建一个prompt block,建完结果图,说明:ORDER_BY3以下属性为要导航的Item
共分享92篇相关文档