Oracle Form 开发笔记
日期选择实现:
1、设置Item属性
数据类型:Date
值列表:ENABLE_LIST_LAMP
从列表中验证:否
2、编写Item的KEY-LISTVAL触发器:
calendar.show;
窗口最大化时自动扩展文件夹数据块:
在Form触发器:WHEN-WINDOW-RESIZED 增加以下代码
1 IF :SYSTEM.EVENT_WINDOW IN ('WINDOW_NAME') THEN 2 APP_FOLDER.EVENT('WHEN-WINDOW-RESIZED'); 3 END IF;
有时文件夹堆叠画布设置的宽度不起作用,可以在Form触发器下增加如下代码:
--设置FOLDER 和 窗口右边距的距离 IF :GLOBAL.FOLDER_ACTION = 'VIEW-SIZE' THEN :GLOBAL.FOLDER_VIEW_SIZE_MARGIN := '0.05'; END IF;
设置记录颜色
app_record.highlight('RED_REC');
设置窗口居中
在Form触发器:WHEN-NEW-FORM-INSTANCE增加以下代码
app_window.set_window_position('WINDOW_NAME','CENTER');
设置窗口标题
在Form触发器:WHEN-NEW-FORM-INSTANCE增加以下代码
app_window.set_title('WINDOW_NAME','TITLE_NAME');
设置项属性
1 set_item_property(ITEMID, insert_allowed, property_false/property_true);--插入 2 set_item_property(ITEMID, update_allowed, property_false/property_true);--更新 3 set_item_property(ITEMID, delete_allowed, property_false/property_true);--删除 4 set_item_property(ITEMID, REQUIRED, property_false/property_true);--必需 5 set_item_property(ITEMID, ENABLED, property_false/property_true);--可用 6 set_item_property(ITEMID, DISPLAYED, property_false/property_true); --显示
两项关联:
调用app_field.clear_dependent_fields来将两个(或多个)item建立关联,当父item field变化时,子fields清空。实现:如果master_field为空,则清空后续所有fieldn.可以在Item触发器WHEN-VALIDATE-ITEM使用。
1 app_field.clear_dependent_fields(master_field varchar2, 2 field1 varchar2, 3 field2 varchar2 default null, 4 field3 varchar2 default null, 5 field4 varchar2 default null, 6 field5 varchar2 default null, 7 field6 varchar2 default null, 8 field7 varchar2 default null, 9 field8 varchar2 default null, 10 field9 varchar2 default null, 11 field10 varchar2 default null)
附Procedure原码:(在附加库APP_CORE中)
1 PROCEDURE clear_dependent_fields(master_field VARCHAR2, 2 field1 VARCHAR2, 3 field2 VARCHAR2 DEFAULT NULL, 4 field3 VARCHAR2 DEFAULT NULL, 5 field4 VARCHAR2 DEFAULT NULL, 6 field5 VARCHAR2 DEFAULT NULL, 7 field6 VARCHAR2 DEFAULT NULL, 8 field7 VARCHAR2 DEFAULT NULL, 9 field8 VARCHAR2 DEFAULT NULL, 10 field9 VARCHAR2 DEFAULT NULL, 11 field10 VARCHAR2 DEFAULT NULL) IS 12 BEGIN 13 COPY('Entering app_field.clear_dependent_fields.','global.frd_debug'); 14 if (name_in(master_field) is null) then 15 clear_fields(field1, field2, field3, field4, field5, 16 field6, field7, field8, field9, field10); 17 end if; 18 COPY('Completed app_field.clear_dependent_fields.','global.frd_debug'); 19 END clear_dependent_fields;
禁用F11、CTRL + F11查询
禁用F11查询:
在对应的BLOCK级触发器KEY-ENTQRY中的值赋成NULL;
禁用CTRL + F11查询:
在对应的BLOCK级触发器KEY-EXEQRY中的值赋成NULL;
注:当设置KEY_EXEQRY触发器为NULL时,对应form界面的块查询也将无法执行查询
编译报错:
FRM-30041: Position of item places it off of canvas. --字段位置超出画布大小
解决方法:把canvas的大小设大些或把字段坐标轴设置在画布内