早就为ebs系统的文件夹功能折服,今特意在开发一个客户化form后去实现了一把。
前提:开发完成并测试成功的客户化form一个。
内主要有内容画布一个,堆叠式画布一个,数据块一个,窗口一个。
具体步骤如下:
1、添加Object Groups。
操作如下:在同一窗口打开标准的Form APPSTAND.FMB 和我们自己客制的Form,并且选择APPSTAND.FMB
的Object Groups STANDARD_FOLDER然后用
鼠标拖动至我们自己的Form的ObjectGroups。
选择子类,你会发现Form Builder都会在你的Form里面自动添加很多对象。
2、添加Attached Libraries
操作如下:检查一下客户化form中Attached libraries里面有没有APPFLDR。如果没有,选择APPSTAND.FMB
中的Attached Libraries下的APPFLDR.pll到我们客户化form的Attached Libraries下。
3、增加控制块。如需要显示文件夹功能的数据块为BLOCK_NAME,则创建控制块BLOCK_NAME_PROMPT.
3.1 、设置块的属性 子类信息:block 数据库数据块:否
3.2 、增加ITEM
注:增加Item,名称必须和BLOCK_NAME中的Item保持一致。另外,数据块BLOCK_NAME
中有些item不要显示在canvas上的,那么此类item也无须在BLOCK_NAME_PROMPT创建相应的item.
3.3
、设置其初始值,也就是显示的标签名及子类信息
3.4 、增加其他相关Item (必须)我们还需要增加其他的一些Item,都是和Folder的功能有关的。
1) 、ORDER_BY1、ORDER_BY2、ORDER_BY3
为PUSH_BUTTON,子属性为FOLDER_ORDERBY 画布为内容主画布
2)、FOLDER_OPEN
为PUSH_BUTTON,子属性为FOLDER_OPEN
画布为内容主画布
3)
、FOLDER_TITLE
为Display Item ,子属性为DYNAMIC TITLE
画布为内容主画布
4) 、FLODER_DUMMY 为Text Item,子属性为FLODER_DUMMY
,画布为TOOLBAR
4、在
BLOCK_NAME里增加项:SWITCHER 。
SWITCHER:为文本项,子属性为SWITCHER ,画布为主画布,X/Y/宽/高均为0;数据库字段为否
项目级触发器:
WHEN-NEW-ITEM-INSTANCE:app_folder_move_cursor('1');
5、增加trigger
5.1、FORM级别trigger两个
1)、FOLDER_ACTION
内容: app_folder.event(:global.folder_action);
2)、WHEN-NEW-FORM-INSTANCE
内容:APP_FOLDER.DEFINE_FOLDER_BLOCK( 'CUXFAQRY',--FormName
'FA_QUERY_ASSET',--FolderBlock
'FA_QRY_PROMPT',--prompt_block
'FA_QUERY_DETAIL_CANVAS',--stacked_canvas
'FA_QUERY_WINDOW',--window
NULL--disabledfunctions
);
app_folder.event( 'INSTANTIATE' ) ;
5.2 、BLOCK级别trigger7个
WHEN-NEW-BLOCK-INSTANCE
PRE-BLOCK
POST-BLOCK
PRE-QUERY
KEY-EXEQRY
KEY-NEXT-ITEM
KEY-PRE-ITEM
内容:app_folder.event( 'EVENT' ) ;
用trigger名字替换EVENT即可。
ps:为防止堆叠式画布在用鼠标滑轮滑动时出错,请尽量减少堆叠式画布页边的空白。