实现文件夹功能
1、在客制的Form里面实现Oracle Folder的功能,最终效果如下:
2、使用TEMPLATE.fmb创建一个Form(名称:FRMSTONE)。
2.1添加Form Objects 包括一个Window,MY_FOLDER
一个Canvas, MY_FOLDER 一个Block,MY_FOLDER(可以使用向导创建),并修改其属性。如下图:
注:使用文件夹的数据块,其名称总长不能超过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属性设置
注:须要说明的是:设成第一个导航数据块的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。
3.3此时会弹出对话框:
选择子类,你会发现Form Builder都会在你的Form里面自动添加很多对象。做完这一步后,请不要关闭APPSTAND.FMB。
4、增加Attached Libraries
做完上面的步骤后,检查一下Attached libraries里面有没有APPFLDR。如果没有,我们需要手工添加。
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里面拖动即可。
5.2设置Stacked Canvas属性
6、更改数据块MY_FOLDER中的Item属性