2014-01-09 Created By BaoXinjian
1. 打开APPSTAND.fmb, 并加载程序库APPFLDR.pll.
2. 基于APPSTAND.fmb生成Folder开发所需的对象子类,如下:
- a) Window
- i. FOLDER_AUTOSIZE , FOLDER_SORT_DATA ,FOLDER_TOOLS
- b) Canvas
- i. FOLDER_AUTOSIZE , FOLDER_SORT_DATA ,FOLDER_TOOLS
- c) Datablock
- i. FOLDER_TOOLS
- ii. FOLDER_CONTROL
- d) Objectset
- i. STANDARD FOLDER
3. 建立基于表/视图的数据块,并设置记录指示器及滚动条.并设置对应画布及窗口.
4. 建立堆叠画布,把数据字段全部放入此画布.并调整在普通画布上的位置.
5. 删除所有数据字段的PROMPT.
6. 创建非数据库数据块PROMPT,并在其中建立如下对象.
- a) 与数据字段名称一致的显示项字段,属性类为”FOLDER_PROMPT_MULTIROW”
- b) ORDER_BY1,ORDER_BY2,ORDER_BY3的按钮字段,属性类为”FOLDER_ORDERBY”
- c) FOLDER_OPEN的按钮字段,属性类为”FOLDER_OPEN”.
- d) FOLDER_TITLE的文本项字段,属性类为”DYNAMIC_TITLE”.
- e) FOLDER_DUMMY的文本项字段,属性类为”FOLDER_DUMMY”.
7. 触发器编写
- a) FORM. LEVEL
- i. FOLDER_ACTION
- app_folder.event(:global.folder_action);
- ii. WHEN-NEW-FORM-INSTANCE
- app_folder.define_folder_block('testfolder', --form名称
'xxab_folder_form', --data block名称
'prompt', --prompt block 名称
'main_stk', --stack canvas名称
'main', --window 名称
''); --NULL - app_folder.event('instantiate');
- app_folder.define_folder_block('testfolder', --form名称
- i. FOLDER_ACTION
- b) BLOCK LEVEL
- i. 在数据库数据块上创建如下Triggers
- Pre-Query
- Post-Query
- Key-Prev-Item
- Key-Next-Item
- Key-ExeQry
- Key-EntQry
- When-New-Record-Instance
- Post-Block
- Pre-Block
- When-New-Block-Instance
- Key-Prvrec
- Key-Nxtrec
- Key-Clrblk
- Key-Clrrec
- 其中代码均为: app_folder.event('Trigger name')
- i. 在数据库数据块上创建如下Triggers
8. 在数据项数据块中创建FOLDER_SWITCHER的文本项,属性类为SWITCHER.
9. 新建两个Stack canvas, 用来分别放置记录指示器及滚动条.
10. 新建一个Stack canvas, 用来放置FOLDER OPEN及FOLDER TITLE.
Thanks and Regards