Form个性化开发内容不是很多,在国内的项目上客户化界面上基本用不上,相关开发文档有的讲解的很详细,有的讲解太过简练,希望通过这个文档可以给我们这些刚开始做个性化的新手快速完成需求,不要再这方面花费过多的时间,我们都做过Form开发,可以把Form个性化的开发都用类比Form开发去理解就很快能上手。
Form启动时,所有与当前Function相关的个性化规则都会被加载到内存,当Form触发特定的Event时候,系统会搜索相应的个性化规则并进行匹配,得到匹配的规则,再按照规则序号从小到大一次执行对应的个性化效果。执行完毕后,将该Event会传到Form,执行Form原先定义的处理代码。所以这里注意的是,Form个性化的规则是加在在Form原先定义的程序之前的,如果针对同一个事件,个性化和Form原先定义的程序都处理了,那么个性化的效果就会被Form原先定义的程序所覆盖,看不到个性化效果,这一点需要注意。
1. 基于Form界面的个性化开发
对标准界面简单的个性化开发可以直接在开发界面上进行一些修改,无需修改标准的CUSTOM.pll文件,避免对标准界面产生较大的影响。如果当前看不到帮助菜单的诊断功能的话,在界面上做个性化开发之前需要修改两个配置文件的值,分别是:
公用程序:诊断 是
隐藏诊断菜单项 否
1.1个性化界面介绍
注意事项:
1. 界面上顶部的有当前的表单名和功能名,如果是基于CUSTOM.pll文件的个性化,通常检测的都是当前的Form名称而不是功能 。
2. 调试模式:关闭,显示调试信息,逐步。
关闭:不使用调试模式,即当Action的类型为Message,Message的Message Type 为“调试“ 的时候,在打开Form界面的时候并不显示“调试”类型的消息。
显示调试信息:允许显示活动(Action)为Message,Message Type为“调试”的消息
逐步:设置为这个模式可以很方便的查看设置的个性化在哪一步起作用了,设置完成个性化之后,每次打开应用界面满足个性化条件的时候都会显示满足那个个性化规则。
3. 对一个界面所加的个性化序号在1到100直接,个性化的执行顺序按照需要的大小的顺序,序号可以是小数。
4. 执行该个性化的条件中的触发器时间,对于Form界面上只能用到五个触发器,并不像在Form Builder 开发工具中使用到很多的触发器,因为个性化效果是在Form代码之前加载的,这五个触发器分别是
WHEN-NEW-FORM-INSTANCE、WHEN-NEW-BLOCK-INSTANCE、WHEN-NEW-RECORD-INSTANCE、
WHEN-NEW-ITEM-INSTANCE、WHEN-VALIDATE-RECORD。
还有其它的SPECIALLn(总共45个,最终的结果是在菜单栏的下拉列表中添加一个菜单项,SPECIAL1至15是在Tools菜单下,16至30是在Reports菜单下,31至45在Actions菜单下,需要注意的是,一般Actions菜单不显示,因为它下面没有菜单项目,没有显示的意义,只有在这个菜单下创建了菜单项才会有显示出这个菜单),MENUn(15个)触发器。
有时候我们在个性化的开发中往往不能选准触发器,触发的时间过早会导致界面上相关字段的取值不能取到,触发的时机过迟会导致达不到效果。我们可以把界面设置成显示自定义状态,然后在界面上试着操作,找到我们对应的触发时机,需要打开个性化代码中的“显示自定义选项”的单选框。使用完成后需要关闭。
还需要注意的是,基于Form界面的五个WHEN触发器,不一定在所有的界面中都有,比如说个性化希望加在一些标准界面的查询界面,希望在点击查询按钮的时候对输入的数据经行校验,因为个性化不能加载在按钮上,所以我们想把数据的校验加载在when-validate-record上,但是查询界面并没有存储记录,更新记录,验证记录的要求,也不存在这个触发器。
5. 处理模式,也属于一个个性化执行条件,主要是指定个性化是否需要在查询状态下使用,或者仅在查询状态下使用。
6. 层,行业,地点,职责,用户,表示限制个性化的产生效果的范围,但是这里的效果并不像配置文件中的用户层设置覆盖职责层,职责层覆盖地点层,层级之间是相互覆盖和重写的的关系。而是或的关系,一条个性化规则只要符合其中一条层级限制,这个个性化规则就会产生作用。
7. 界面下端的两个按钮。“插入‘获取’表达式”,“插入项目值”是两个不错的按钮,通过这个按钮可以快速和准确的取得界面上对象的值。