OracleForm开发笔记
⽇期选择实现:
1、设置Item属性
数据类型:Date
值列表:ENABLE_LIST_LAMP
从列表中验证:否
2、编写Item的KEY-LISTVAL触发器:
calendar.show;
窗⼝最⼤化时⾃动扩展⽂件夹数据块:
在Form触发器:WHEN-WINDOW-RESIZED 增加以下代码
1IF :SYSTEM.EVENT_WINDOW IN ('WINDOW_NAME') THEN
2    APP_FOLDER.EVENT('WHEN-WINDOW-RESIZED');
3END 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      varchar2default null,
4                                  field3      varchar2default null,
5                                  field4      varchar2default null,
6                                  field5      varchar2default null,
7                                  field6      varchar2default null,
8                                  field7      varchar2default null,
9                                  field8      varchar2default null,
10                                  field9      varchar2default null,
11                                  field10      varchar2default null)
附Procedure原码:(在附加库APP_CORE中)
1PROCEDURE clear_dependent_fields(master_field VARCHAR2,
2                                    field1      VARCHAR2,
3                                    field2      VARCHAR2DEFAULT NULL,
4                                    field3      VARCHAR2DEFAULT NULL,
5                                    field4      VARCHAR2DEFAULT NULL,
6                                    field5      VARCHAR2DEFAULT NULL,
7                                    field6      VARCHAR2DEFAULT NULL,
8                                    field7      VARCHAR2DEFAULT NULL,
9                                    field8      VARCHAR2DEFAULT NULL,
10                                    field9      VARCHAR2DEFAULT NULL,
11                                    field10      VARCHAR2DEFAULT NULL) IS
12BEGIN
13    COPY('Entering app_field.clear_dependent_fields.','global.frd_debug');
14if (name_in(master_field) is null) then
15      clear_fields(field1, field2, field3, field4, field5,
16                    field6, field7, field8, field9, field10);
17end if;
18    COPY('Completed app_field.clear_dependent_fields.','global.frd_debug');
19END clear_dependent_fields;
禁⽤F11、CTRL + F11查询
禁⽤F11查询:
resized
在对应的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的⼤⼩设⼤些或把字段坐标轴设置在画布内