oracle 文件夹开发,Oracle Form开发之folder(文件夹)功能开发(二)

实现文件夹功能

1、在客制的Form里面实现Oracle Folder的功能,最终效果如下:

27484552_1.jpg

2、使用TEMPLATE.fmb创建一个Form(名称:FRMSTONE)。

2.1添加Form Objects 包括一个Window,MY_FOLDER

一个Canvas, MY_FOLDER 一个Block,MY_FOLDER(可以使用向导创建),并修改其属性。如下图:

27484552_2.jpg

注:使用文件夹的数据块,其名称总长不能超过22字节!

2.2修改Trigger和ProgramUnits

Form Level Trigger: PRE-FORM:

app_window.set_window_position('MYFOLDER', 'FIRST_WINDOW');

Program Units:APP_CUSTOM:

if (wnd = 'MYFOLDER') then app_window.close_first_window;

2.3修改FORM属性设置

27484552_3.jpg

注:须要说明的是:设成第一个导航数据块的blockname必须至少一个item处于canvas中,否则会报FRM-40106的错误。

2.4其他的具体步骤同一般的FORM开发一样,就不多说了。

3、添加Folder相关的Objects

3.1文件夹相关的Window、Canvas、Block、Item…等都包含在Oracle Standard Form APPSTAND.FMB。

3.2在同一窗口打开标准的Form和我们自己客制的Form,并且选择APPSTAND.FMB 的Object Groups STANDARD_FOLDER然后用鼠标拖动至我们自己的Form的Object Groups。

将原来已经打开的APPSTAND.fmb中的三个以FOLDER开头的三个窗口选中,按住ctrl键,然后移动到自己建的表单HELPSTZD的Windows节点,在弹出的对话框中选择Subclass。然后利用同样的方法将APPSTAND.fmb中的三个以FOLDER开头的画布Subclass到自己的表单中,还要用同样的方法将APPSTAND.fmb中的两个以FOLDER开头的数据块Subclass到自己的表单中。还要用还要用同样的方法将APPSTAND.fmb中的名称为STANDARD_FOLDER的Object

Groups 通过Subclass的方式移植到自己的表单中。

27484552_4.jpg

3.3此时会弹出对话框:

27484552_5.jpg

选择子类,你会发现Form Builder都会在你的Form里面自动添加很多对象。做完这一步后,请不要关闭APPSTAND.FMB。

4、增加Attached Libraries

做完上面的步骤后,检查一下Attached libraries里面有没有APPFLDR。如果没有,我们需要手工添加。

27484552_6.jpg

5、增加Stacked Canvas FOLDER_STACK 这一步是必须的,而且你期望实现Folder拖动功能的那些Item都是放在这个Canvas里面,这个Stacked Canvas又是放在前面我们建立的Canvas:MY_FOLDER上面的。

5.1增加Stacked Canvas 双击打开Canvas MY_FOLDER,在左侧工具条里面选择Stacked Canvas,然后在Canvas MY_FOLDER里面拖动即可。

27484552_7.jpg

5.2设置Stacked Canvas属性

27484552_8.jpg

6、更改数据块MY_FOLDER中的Item属性

27484552_9.jpg

7、创建控制块MY_FOLDER_PROMPT

7.1设置块的属性 子类信息:block 数据库数据块:否

7.2增加ITEM 注:增加Item,名称必须和Block MY_FOLDER中的Item保持一致。 另外,数据块中有些item(如id)不要显示在canvas上的,那么此类item也无须在MY_FOLDER_PROMPT创建相应的item.

27484552_10.jpg

7.2设置其初始值,也就是显示的标签名及子类信息

27484552_11.jpg

7.3增加其他相关Item 我们还需要增加其他的一些Item,都是和Folder的功能有关的。

27484552_12.jpg

27484552_13.jpg

8、增加相应的trigger

27484552_14.jpg

9、其他注意事项

9.1错误:在编译带有文件夹的FORM时,经常会出现如下提示。

FRM-30085: Unable to adjust form for output

这是因为ITEM超出的了画布的高度或是宽度造成的。如图:

27484552_15.jpg

可以通过调整ITEM的X坐标或Y坐标来解决此错误。

9.2错误:无法实现拖动。

27484552_16.jpg

解决:数据块的item与folder的item与调整一定的距离。

27484552_17.jpg

在按FOLDER按鍵時,為了防止系統詢問是否查詢所有數據

需要添加FOLDER_RETURN_ACTION 触发器:

if :global.folder_action = 'CONFIRM-AUTOQUERY' then

:global.folder_action_allowed := 'FALSE';

end if;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值