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的大小设大些或把字段坐标轴设置在画布内

 

 

posted @ 2020-09-28 11:38  kiko_0926  阅读(1215)  评论(0编辑  收藏  举报