FORM/FOLDER开发步骤
创建数据表和视图
创建数据表的PL/SQL(包含创建数据表的序列);创建表的同义词,分别保存两个脚本!
创建FORM中展示数据所需的视图,如果需要在FORM中进行增删改数据操作,则视图必须包含数据基表的所有字段!保存创建视图的脚本!
选择合适的开发模板
如果是开发一般FORM,则选择使用TEMPLATE.fmb;
如果是开发FOLDER,则选择使用TEMPLFLD.fmb。
添加主窗口MAIN_WIN
添加主画布MAIN_CANVAS
1. 关联主窗口和主画布!
添加固定画布CANVAS_FIXED
固定画布通常显示定位符,文件夹和文件目录名三个ITEM。
添加堆叠画布CANVAS_STK
1. 设置显示水平滚动条!
在设置显示水平滚动条后FORM编译器会同时显示水平滚动条和垂直滚动条,但这里显示的垂直滚动条只是假象,实际编译后的显示效果并不显示垂直滚动条!
添加主块并设置属性
1. 主块设置数据显示条数在10到15之间。
2. 主块设置显示滚动条在FIXED画布!这里设置的滚动条才是实际显示在FORM上的垂直滚动条!
3. 主块添加FOLDER块下的所有触发器!
4. 主块添加FOLDER块下的两个ITEM:FOLDER_SWITCHER和CURRENT_RECORD_INDICATOR!
5. 设置上面添加的CURRENT_RECORD_INDICATOR项的画布为FIXED画布!
6. 根据需要设置ITEM的子类属性,位置属性,长宽高属性!清空所有显示项的PROMPT属性!
7. 设置所有FORM显示项的画布属性为STK画布!Y轴属性为0.25!
添加提示块并设置属性
1. 提示块添加PROMPT块下的六个FOLDER的ITEM,设置项FOLDER_DUMMY的画布为:TOOLBAR!其他五个项的画布设置为:FIXED!设置文件夹ITEM的X,Y轴属性都为0!相应调整文件夹目录ITEM。
2. 提示块添加与主块一一对应的提示项,设置提示项的子类属性为FOLDER_PROMPT_MULTIROW!设置画布属性为STK!Y轴属性为0!
3. 清空所有提示项的PROMPT属性!设置提示项的初始值属性为数据项提示!
画布布局
MAIN_CANVAS布局后在最底层,FIXED布局后在第二层,STK布局后在最上层!
1. 画布大小的设置:
MAIN画布大小比例为4:3,且应该设置宽和高为最大;如果只有一个MAIN_FIXED画布,则应该设置MAIN_FIXED大小比MAIN画布的宽和高都小0.5,因为在堆叠的时候一般会设置MAIN_FIXED的X,Y轴属性为0.25,再考虑到主画布FRAME所占的区域和边框大概也有0.25;如果只有一个MAIN_STK画布,则应该设置MAIN_STK的宽比MAIN_FIXED小0.3,因为最后堆叠画布的时候,MAIN_STK会放在MAIN_FIXED的CURRENT_RECORD_INDICATOR(0.1)和数据块的垂直滚动条(0.2)之间,高度设置为能显示所有ITEM的高度即可。
按照上述经验布局后,为了美观再进行微调即可。
2. MAIN_FIXED布局:FOLDER_OPEN的X,Y轴属性都设置为0;CURRENT_RECORD_INDICATOR的X轴属性设置为0,Y轴属性设置为0.5,和FOLDER_OPEN(0.25)之间0.25的空隙用于在堆叠画布时放置数据提示块的ITEM;ORDER_BY1,ORDER_BY2,ORDER_BY3任意放置,美观即可,因为不可见。
3. MAIN_STK布局:数据块的所有ITEM的X轴属性设置为0,Y轴属性设置成0.25,因为数据提示块的ITEM宽度为0.25。
修改FOLDER的初始化函数
在FORM的WHEN-NEW-FORM-INSTANCE触发器中修改FOLDER的初始化函数:
app_folder.define_folder_block('HELPOPRC', 'REQUISITION', 'REQUISITION_PROMPT', 'REQUISITION_STK', 'MAIN_WIN', '','','REQUISITION_FIXED');
app_folder.event('INSTANTIATE');
上传编译
上传路径:/u03/devp/devpappl/hel/11.5.0/forms/ZHS
编译路径:/u03/devp/devpappl/au/11.5.0/forms/ZHS
编译命令:f60gen $HEL_TOP/forms/ZHS/HELPOPRC.fmb apps/apps output_file=$HEL_TOP/forms/ZHS/HELPOPRC.fmx
注意:上传路径和编译路径不同,上传路径是我们程序源文件的存放路径,编译路径是我们运行编译命令的路径,之所以两者不同是因为编译命令在运行时需要使用编译路径下的一些系统组件!而上传路径并不影响编译命令的正确执行,只要在编译命令中指明程序源文件的路径和名称即可!
定义表单,功能;挂载菜单;查看