freeform1.htm 5.6 KB
<HTML>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="../temp1.css" type="text/css">
<script type="text/javascript" src="functable.js"></script>
<script>
 function gentable()
 {
  var xmlDoc = getXMLDoc("func_freeform.xml?81");
  genfunctable('TagFuncTable', 'TagFunc', xmlDoc);
 }
</script>
</head>
<body onLoad="gentable()" bgcolor=#ffffff vlink=#0000ff>

<div id="Tag12"/>
<Table cols=2 border=0 width=100%>
<col width=60%>
<col width=40%>
<tr height=91><td/><td><img src='../../res/tradefreeform.jpg'></td></tr>
</table>
<h3> <font color=#3366ff>Supcan FreeForm组件</font></h3><hr color=#2266ee size=1>
  Supcan FreeForm组件是插件/加载项的一个功能组件,和Supcan TreeList有类似之处,但是一次只显示一条记录,且显示方式也不是表格,而是自由格式。<br>
  在企业应用中,大量的表单通常是Master-Detail格式,即表头和表体两部分,表体通常是Grid,而表头就是自由格式, Supcan FreeForm 加 Supcan TreeList 就能轻松实现这类表单的需求。<br>
  Supcan FreeForm封装了和TreeList类似的富输入功能,如输入掩码、各种下拉、各式按钮、表达式等等,大大减少了纯页面的js程序量。<br>
<br>
  Supcan FreeForm支持2种布局: 基于 TableLayout 辅助的布局, 和以绝对/相对坐标定位的布局。TableLayout 布局类似 Html 的 Table 布局,输入控件被固定在网格内,其语法请参见《Freeform XML文档规范》。硕正公司还提供了基于 TableLayout 的可视化设计器,方便了 Freeform 的书写、开发.<br>

<div id="Tag1201"/><br><br><br>
  <font style='font-size:15pt'>1.创建实例</font><hr color=#2266ee size=1>
  Supcan FreeForm组件是通过插件/加载项创建的,所以应该用<a href="act.htm?81#Tag205" target=_blank>使用指南 \ 页面语法</a>中叙述的插件/加载项的页面创建语法创建,
&lt;Object&gt;中的某几个Param参数规则如下:<br>
<pre class='xml'>
&lt;Object ...(略)&gt;
&lt;Param name="CtlName" value="<Font color=red>BCV1.FreeForm</Font>"&gt;  //固定
&lt;Param name="ZipUrl" value="<Font color=red>BCV1.bin</Font>"&gt;	  //也可以是绝对URL
&lt;Param name="CtlPara" value="Border=single; bgColor=white"&gt;	//例子
...</pre>
  如果页面是直接调用dynaload.js,那么可能就是这样:<br>
<pre class='cpp'>insertFreeForm('AF', 'Border=single; bgColor=white')</pre>
  CtlPara参数决定了如何在页面上展现Supcan FreeForm实例,在上面的例子中,参数串中可包含多个子串,子串间以 ";" 分隔。<br>
  子串的名值对的规范如下:<br>
<table width=98% cellpadding=4 cellspacing=0 border=1 borderColorLight=#999999 borderColorDark=#999999 align="center">
<tr bgcolor=#eaeaea><td>子串名</td><td>含义</td><td>可用值</td><td>默认值</td></tr>

<tr><td>Border</td><td>边界</td><td>
1.none  - 无边界<br>
2.single  - 单线条边界<br>
3.3dLower(或3d)  - 3D凹进边界<br>
4.3dRaise  - 3D凸起边界
</td><td>single</td></tr>
<tr><td>BorderColor</td><td>边界色</td><td>颜色,仅用于Border=single</td><td>#7f9db9</td></tr>
<tr><td>Hue</td><td>强制更改色调</td><td>
LightGray - 浅灰色<br>
Caramel - 焦糖色<br>
Lilian - 百合花色<br>
Lividity - 青黑色<br>
注:更改结果将保存至系统文件,永久有效.
</td><td>(无)</td></tr>
<tr><td>isUseContextFont</td><td>是否采用页面上下文字体<br>注:仅对IE有效</td><td>true/false</td><td>true</td></tr>
<tr><td>bgColor<br>或BackColor</td><td>背景色</td><td>颜色串,也可以是以逗号分隔的多个颜色串</td><td>空,表示采用页面上下文背景色</td></tr>
<tr><td>workMode</td><td>当前工作模式</td><td>runtime - 普通的发布运行时;<br>designTime - 设计时.<br>注:在designTime时, TableLayout将显示表格虚线.</td><td>runtime</td></tr>
<tr><td>EventLog</td><td>事件日志</td><td>文件名,建议后缀是txt, 不必带路径,系统将自动在 BC 目录下创建. 该文件能自动记录本组件实例的所有事件, 用于程序调试.<br>注:正式运行时请不要使用,因为频繁读写磁盘会导致性能下降.</td><td></td></tr>
<tr><td>FuncLog</td><td>函数调用日志</td><td>文件名,建议后缀是txt, 不必带路径,系统将自动在 BC 目录下创建. 该文件能自动记录本组件实例被调用的所有函数, 用于程序调试.<br>注:正式运行时请不要使用,因为频繁读写磁盘会导致性能下降.</td><td></td></tr>
<tr><td>FuncParaChars</td><td>函数日志中参数最大字数</td><td>数字,当启用函数日志时,函数的参数最多保留字数.</td><td>128</td></tr>
<tr><td>FuncReturnChars</td><td>函数日志中返回值最大字数</td><td>数字,当启用函数日志时,函数的返回值最多保留字数.</td><td>0</td></tr>
</table><br>

<div id="Tag1202"/><br><br><br>
  <font style='font-size:15pt'>2.函数</font><hr color=#2266ee size=1>
  Supcan FreeForm的函数是通过插件/加载项的 func( string funcname, string paras ) 函数间接调用的,Supcan FreeForm组件的可用funcname及用途说明如下:<br>
<div id="TagFuncTable"></div><br>
<div id="TagFunc"></div>


<div id="Tag1203"/><br><br><br>
  <font style='font-size:15pt'>3.扩展函数</font><hr color=#2266ee size=1>
  普通的扩展函数使用方法与Supcan Treelist相同,请参见Treelist的<a href="treelist3.htm?81#Tag507" target=_blank>扩展函数</a><br>
<br>
  对于嵌入的普通的大粒度组件(即&lt;Component&gt;),扩展函数还有另一种使用方法,函数名可以直接写成 "ID号.函数名" 这样的格式,例如:<br>
<pre class='cpp'>
 AF.func("Te1.Load", xml);   // Te1是内部Treelist的ID</pre>
  与如下常规用法效果一样:
<pre class='cpp'>
 var h = AF.func("GetHandle", "Te1");  //先取得内嵌Treelist  Te1的句柄
 AF.func(h + "Load", xml);</pre>
  在Freeform的演示页“20.Freeform框架”中有这样的实例,请参考。
<br>
<br>
<br>
  对于选项卡(Tab)中嵌入的大粒度组件(即&lt;Component&gt;),扩展函数的函数名可以直接写成 "Tab的ID号.ID号.函数名" 这样的格式,例如:<br>
<pre class='cpp'>
 AF.func("Tab1.T1.Load", xml);   // Tab1是选项卡的ID号,t1是Tab1的内部Treelist的ID</pre>
  对应的XML结构如下:<br>
<Center><img src='freeform6.png'></Center>
  当然,这样写也可以:<br>
<pre class='cpp'>
 var h = AF.func("GetHandle", "Tab1.t1");  //先取得内嵌Treelist  T1的句柄
 AF.func(h + "Load", xml);</pre>

<br><br><br><br><br>
<script type='text/javascript' src='nstd.js'></script>
</body></html>