Supcan FreeForm组件


  Supcan FreeForm组件是插件/加载项的一个功能组件,和Supcan TreeList有类似之处,但是一次只显示一条记录,且显示方式也不是表格,而是自由格式。
  在企业应用中,大量的表单通常是Master-Detail格式,即表头和表体两部分,表体通常是Grid,而表头就是自由格式, Supcan FreeForm 加 Supcan TreeList 就能轻松实现这类表单的需求。
  Supcan FreeForm封装了和TreeList类似的富输入功能,如输入掩码、各种下拉、各式按钮、表达式等等,大大减少了纯页面的js程序量。

  Supcan FreeForm支持2种布局: 基于 TableLayout 辅助的布局, 和以绝对/相对坐标定位的布局。TableLayout 布局类似 Html 的 Table 布局,输入控件被固定在网格内,其语法请参见《Freeform XML文档规范》。硕正公司还提供了基于 TableLayout 的可视化设计器,方便了 Freeform 的书写、开发.



  1.创建实例
  Supcan FreeForm组件是通过插件/加载项创建的,所以应该用使用指南 \ 页面语法中叙述的插件/加载项的页面创建语法创建, <Object>中的某几个Param参数规则如下:
<Object ...(略)>
<Param name="CtlName" value="BCV1.FreeForm">  //固定
<Param name="ZipUrl" value="BCV1.bin">	  //也可以是绝对URL
<Param name="CtlPara" value="Border=single; bgColor=white">	//例子
...
  如果页面是直接调用dynaload.js,那么可能就是这样:
insertFreeForm('AF', 'Border=single; bgColor=white')
  CtlPara参数决定了如何在页面上展现Supcan FreeForm实例,在上面的例子中,参数串中可包含多个子串,子串间以 ";" 分隔。
  子串的名值对的规范如下:
子串名含义可用值默认值
Border边界 1.none - 无边界
2.single - 单线条边界
3.3dLower(或3d) - 3D凹进边界
4.3dRaise - 3D凸起边界
single
BorderColor边界色颜色,仅用于Border=single#7f9db9
Hue强制更改色调 LightGray - 浅灰色
Caramel - 焦糖色
Lilian - 百合花色
Lividity - 青黑色
注:更改结果将保存至系统文件,永久有效.
(无)
isUseContextFont是否采用页面上下文字体
注:仅对IE有效
true/falsetrue
bgColor
或BackColor
背景色颜色串,也可以是以逗号分隔的多个颜色串空,表示采用页面上下文背景色
workMode当前工作模式runtime - 普通的发布运行时;
designTime - 设计时.
注:在designTime时, TableLayout将显示表格虚线.
runtime
EventLog事件日志文件名,建议后缀是txt, 不必带路径,系统将自动在 BC 目录下创建. 该文件能自动记录本组件实例的所有事件, 用于程序调试.
注:正式运行时请不要使用,因为频繁读写磁盘会导致性能下降.
FuncLog函数调用日志文件名,建议后缀是txt, 不必带路径,系统将自动在 BC 目录下创建. 该文件能自动记录本组件实例被调用的所有函数, 用于程序调试.
注:正式运行时请不要使用,因为频繁读写磁盘会导致性能下降.
FuncParaChars函数日志中参数最大字数数字,当启用函数日志时,函数的参数最多保留字数.128
FuncReturnChars函数日志中返回值最大字数数字,当启用函数日志时,函数的返回值最多保留字数.0




  2.函数
  Supcan FreeForm的函数是通过插件/加载项的 func( string funcname, string paras ) 函数间接调用的,Supcan FreeForm组件的可用funcname及用途说明如下:




  3.扩展函数
  普通的扩展函数使用方法与Supcan Treelist相同,请参见Treelist的扩展函数

  对于嵌入的普通的大粒度组件(即<Component>),扩展函数还有另一种使用方法,函数名可以直接写成 "ID号.函数名" 这样的格式,例如:
 AF.func("Te1.Load", xml);   // Te1是内部Treelist的ID
  与如下常规用法效果一样:
 var h = AF.func("GetHandle", "Te1");  //先取得内嵌Treelist  Te1的句柄
 AF.func(h + "Load", xml);
  在Freeform的演示页“20.Freeform框架”中有这样的实例,请参考。


  对于选项卡(Tab)中嵌入的大粒度组件(即<Component>),扩展函数的函数名可以直接写成 "Tab的ID号.ID号.函数名" 这样的格式,例如:
 AF.func("Tab1.T1.Load", xml);   // Tab1是选项卡的ID号,t1是Tab1的内部Treelist的ID
  对应的XML结构如下:
  当然,这样写也可以:
 var h = AF.func("GetHandle", "Tab1.t1");  //先取得内嵌Treelist  T1的句柄
 AF.func(h + "Load", xml);