全局函数
所谓全局函数是一组公共的函数,硕正的所有组件都拥有几乎完全一样的函数形式. 全局函数分如下几类:
1.对话框函数
1.1.非模式对话框函数
1.2.模式对话框函数
2.消息框函数
3.下拉List管理函数
4.Validations管理函数
5.对表达式和计算函数的封装
6.DOM函数
7.其它函数
1.对话框函数
全局函数中有二组对话框函数。通过调用对话框函数,您能够打开一个对话框。对话框是以 一个FreeForm 作为显示样式的,其内容完全自定义.
硕正的对话框分为 模式 对话框 和 非模式 对话框 二种,模式对话框是Windows的标准对话框,当对话框出现时, 主线程是阻塞的,直到对话框关闭;而非模式对话框则是在控件的内部浮现出一个freeform,主线程不会阻塞.
非模式对话框的好处,是在打开对话框时不影响其它Tab选项卡 - 用户仍能正常切换选项卡. 此外,由于线程不阻塞,对话框中的 freeform 的子控件的事件能触发到页面的OnEvent( )中,能实现与页面的交互,这一点非常有用.
非模式对话框是悬浮在组件中央的一个FreeForm,同时组件本身呈半透明、非活动状态.
并不是所有组件都支持内嵌的非模式对话框的,如下组件是支持的(即支持本组函数):
Treelist / Freeform / Freeform设计器 / Report / Tree / Chart .
非模式对话框 和 它的容器(即组件本身)都会触发页面的OnEvent( )事件,为了相互区分,您应该在事件中调用 IsInnerDialogOpen( ) 这个函数来判断,这一点非常重要 ,具体请参见自有表头的演示页:“13.基于Freeform的对话框”、“15.辅助Treelist输入(2)”。
函数详解:
SetDialogFreeForm 指定对话框的Freeform
参数 FreeForm的URL(相对或绝对),或者直接就是XML大串
返回值 (无)
SetDialogPara 指定对话框的参数
参数 可选,可以是如下属性值(多个属性间以分号(;)分隔):
width / height - 宽度和高度,可以是百分比(如"80%",相对于组件的宽/高)、整数(绝对像素数),默认都是80%;
ExtWidth / ExtHeight - 扩展宽度/高度, 默认分别是20/14;
备注:扩展宽度/高度表示对话框右、下方预留的空白边界.
IdFocus(或FocusId) - 指定定位焦点,如果为空,则按freeform的TabOrder自动定位;
bgColor(或backColor) - 组件被遮罩的底色,默认是#C8C8C8;
alpha - 遮罩时组件画面的透明度, 0-255, 默认是70;
返回值 (无)
OpenInnerDialog 打开非模式对话框
参数 加载的数据的URL, 或直接就是XML/JSON大串,用于为FreeForm赋初值
返回值 成功 - 返回对话框的freeform的句柄(一个整数串); 失败 - 空串, 原因通常为:freeform的XML模版不存在、或对话框已经打开着
备注 由于函数返回了freeform的句柄,所以您可以以扩展函数的方式调用freeform的所有函数
备注 关闭后,Freeform并未被销毁,您仍然可以使用这个返回的句柄,通过扩展函数存取freeform中的内容
示例 //打开 freeform 弹窗, 并取得句柄 var h = AF.func("OpenInnerDialog", "");
//弹出的 freeform 中有选项卡、树列表, 要对其执行函数, 必须是如下这种扩展函数的形式
AF.func(h + "tab1.T.Load", "treelistdata/data60.tsv-ex.txt");
CloseInnerDialog 关闭非模式对话框
参数 (无)
返回值 成功 - 返回对话框的freeform的句柄(一个整数串); 失败 - 空串, 对话框本来就没有打开
IsInnerDialogOpen 或"IsInnerDialogOpened",非模式对话框是否正打开着
参数 (无)
返回值 1 / 0
备注 该函数很重要,常用于在OnEvent( )事件中判断当前的消息发送者.
1.2.模式对话框函数
模式对话框的FreeForm至少要有1个Button,但不支持菜单、下拉菜单按钮、分页器.
模式对话框弹出后,如果用户按下其中的Button,对话框随即关闭,并返回Button按钮的ID。
由于模式对话框是线程阻塞的,对话框中的控件的事件是无法被页面拦截的。模式对话框的函数分类说明如下:
函数详解:
SetDialogFreeForm 指定对话框的Freeform
参数 FreeForm的URL(相对或绝对),或者直接就是XML大串
返回值 (无)
备注 该Freeform中必须要有一个按钮控件 ,否则不起作用
SetDialogPara 指定对话框的标题等参数
参数 可选,可以是如下属性值(多个属性间以分号(;)分隔):
title - 对话框窗口的标题
IdOk(或OkId) - 相当于“确认”的按钮的id, 点击后能自动执行Freeform的 Validate( ) 验证函数;
IdFocus(或FocusId) - 指定定位焦点,如果为空,则按freeform的TabOrder自动定位;
ExtWidth / ExtHeight - 扩展宽度/高度, 默认分别是20/14;
备注:扩展宽度/高度表示对话框右、下方预留的空白边界.
返回值 (无)
示例 AF.func("SetDialogPara", "title=警告; ExtWidth=20; ExtHeight=20");
OpenDialog 打开模式对话框
参数 可选,加载的数据的URL, 或直接就是XML/JSON大串,用于为FreeForm赋初值
返回值 鼠标点击Freeform中的Button按钮的ID
备注 1.如果未弹出对话框,可能是Freeform的URL不正确、或Freeform中没有Button导致;
2.本函数执行时,线程进入阻塞状态,直到对话框关闭,本函数才返回.
示例 AF.func("OpenDialog", "{price:20, date1:2010.12.20, checked:true}");
GetDialogValues 取得刚关闭的对话框中的FreeForm的所有input的输入内容
参数 可选,可以为 XML / JSON, 默认是XML
返回值 XML或JSON串
备注 如果返回JSON串,可能是类似这样的:{"price":"20", "date1":"2010.12.20", "checked":"1"}
GetDialogValue 取得刚关闭的对话框中的FreeForm的某个input的输入内容
参数 Input的ID 如果是串 @freeform, 表示取得该freeform的ID(在freeform的XML的 <Properties> 中定义的ID)
返回值 该input的输入内容
GetDialogIDs 取得刚关闭的对话框中的FreeForm中的所有ID
参数 (无)
返回值 以逗号分隔的所有ID
2.消息框函数
消息框是指在组件中心位置呈现出的时尚的提示框、数据加载中的小对话,有了这批函数,您可以自己操控这些提示信息了. 函数主要有2个: MessageBoxFloat、MessagaePoint, 也可以简写为 MsgFloat、MsgPoint.
消息框显示的文字,支持部分类似HTML的元素,使得文字内容可以较为灵活地呈现,例如代码:
var text = "<br> 今晚<font color=red>21:00</font>整,请第二工组到二号库房集合,一起将发往<b>通州、<br>宁波</b>的货物清点";
text += "完毕,第三工组请打扫货车,并检查核对货柜.<br>";
text += " <image>res/capu.png</image> <i>谢谢!</i>";
AF.func("msgFloat", text + "\r\n hold=0;pos=browser;buttonText1=我请事假;buttonWidth1=120;buttonId1=1112;buttonText2=收到;buttonId2=1000;buttonWidth2=120");
//注: buttonId是给事件消息用的,因为消息框不是模式对话框,不阻塞主线程,点击按钮将触发 UserEvent 事件
呈现的效果是:
如下是树列表的 "12.事件" 示例,在 MouseMoveIn 事件中执行了 MessageBoxPoint函数:
文字仅支持如下类似HTML的元素:
元素名 规则 元素名 规则
b 文字加粗 i 文字倾斜
br 换行,也可以用\\r\\n代替 center 文字(或图片)居中显示
font 文字颜色和字体,例如<font face="Consolas,Courier New" color="#ff0000">21:00</font> 支持的属性: 仅 color 、face 属性 image 嵌入图片,如 <image>res/capu.png</image>, 也可以是一个 Base64 串 支持的属性: height , width , 用以指定显示尺寸
函数详解:
MessageBoxFloat(语法1) 弹出Supcan风格的能自动关闭的浮动提示框,也可简写为MsgFloat
参数1 具体的文字串
参数2 标题,可选,可含如下文字之一:Warn、Success、Fail、Error、Prompt(可以更长,包含即可,例如Successful、Warning均合法),默认是Prompt
参数3 左侧小图标,可选,可含如下文字之一:Stop、Success、Question、Info(可以更长,包含即可,例如Successful、Information均合法),默认是Info
返回值 (无)
备注 参数2 和 参数3 次序可以颠倒
示例 xml = xml.replace(/\r\n/g, "\\r\\n"); //把串中原有的回车符全部转换成\\r\\n AF.func("MessageBoxFloat", xml + "\r\n Warning \r\n Information");
MessageBoxFloat(语法2) 弹出Supcan风格的能自动关闭的浮动提示框,也可简写为MsgFloat
参数1 具体的文字串
参数2 属性串,以分号(;)分隔,可以有如下"属性=值"对:
title - 标题,可含如下文字之一:Warn、Success、Fail、Error、Prompt(可以更长,包含即可,例如Successful、Warning均合法),默认是Prompt;
icon - 左侧小图标,可含如下文字之一:Stop、Success、Question、Info(可以更长,包含即可,例如Successful、Information均合法),默认是Info;
hold - 保留的时间(单位:秒),0表示永远显示,点击它才关闭. 它的默认值和icon有关(不是很精确):
Success - 2.5秒;
Info - 3.5秒;
Question - 4.5秒;
Stop - 永远显示;
pos - 位置, 如果是串"cursor",表示当前鼠标位置;否则, 可以是如下子串的组合(逗号分隔): supcan(相对于硕正控件), browser(相对于浏览器), screen(相对于显示器), center(中心对齐), left(左对齐), right(右对齐), top(上对齐), bottom(下对齐). 默认是"supcan, center";
以及如下的位于底部的自定义按钮:
ButtonText - 按钮的文字;
ButtonWidth - 按钮的宽度,单位是像素,如果不定义宽度,系统将自动算出一个合适的.
ButtonId - 按钮的Id, 须为大于0的数字, 相当于功能号,用于消息通知。由于该消息框不是阻塞线程的对话框,所以点击按钮将触发名为 UserEvent 的事件,事件的 P1 参数就是该 Id 号。注:如果不定义Id, 将不触发 UserEvent 事件;
此外,也支持同时安置多个按钮,写法是在上述属性后面加1、2..序号,请参考下面的例子。
返回值 (无)
示例 xml = xml.replace(/\r\n/g, "\\r\\n"); //把串中原有的回车符全部转换成\\r\\n
AF.func("MessageBoxFloat", xml + "\r\n title=Warning; icon=Information; hold=0; pos=screen,bottom,right");
//安置多个按钮
AF.func("MessageBoxFloat", "您确认要保存吗?\r\n title=Warning; ButtonText1=确认;ButtonText2=取消;ButtonId1=123");
MessageBoxPoint(用途1) 用于Treelist、Report,弹出Supcan风格的能自动关闭的指向某单元格的浮动提示框,也可简写为MsgPoint
参数1 行号
参数2 列号,或列名(for Treelist)
参数3 接下去的参数接续了和MessageBoxFloat一样的语法(除了不支持 "center"),请参考MessageBoxFloat
返回值 (无)
MessageBoxPoint(用途2) 用于Freeform,弹出Supcan风格的能自动关闭的指向某输入框的浮动提示框,也可简写为MsgPoint
参数1 Freeform中的输入控件的ID号
参数2 接下去的参数接续了和MessageBoxFloat一样的语法(除了不支持 "center"),请参考MessageBoxFloat
返回值 (无)
MessageBoxPoint(用途3) 用于Edit、Upload,弹出Supcan风格的能自动关闭的指向当前控件的浮动提示框,也可简写为MsgPoint
参数 参数和MessageBoxFloat一样(除了不支持 "center"),请参考MessageBoxFloat
返回值 (无)
MessageBoxPoint(用途4) 用于Treelist、Freeform、Report、Edit、Upload,弹出Supcan风格的能自动关闭的指向当前光标的浮动提示框,也可简写为MsgPoint
参数 固定的串 "Cursor"
参数 参数和MessageBoxFloat一样(除了不支持 pos 属性),请参考MessageBoxFloat
返回值 (无)
示例 xml = xml.replace(/\r\n/g, "\\r\\n"); //把串中原有的回车符全部转换成\\r\\n
AF.func("MsgPoint", "Cursor \r\n" + xml + "\r\n title=Warning; icon=Information; hold=0");
CloseMessageBox 强制关闭提示框, 也可以简写为CloseMsg
参数 (无)
返回值 (无)
OpenLoadMask 显示含义为“加载中”的小动画( )。用于js发送独立的Ajax请求时,让控件呈现"正在加载中"的动画效果
参数 延迟的毫秒数,默认500,表示500毫秒后才显示这个动画.
返回值 (无)
备注 随后必需关闭动画,否则永远在动画中。关闭动画有2种途径: 1.调用下面的 CloseLoadMask 立即关闭; 2.调用Treelist、Freeform的Load( )函数后,动画会自动关闭的;
CloseLoadMask 关闭含义为“加载中”的小动画
参数 (无)
返回值 (无)
3.下拉List管理函数
全局函数中还有一组用于操控下拉List的函数,能单独存取List的内容。下拉List的句柄是通过GetHandle( )函数获取的.
函数详解:
DropList_Add 往下拉List中添加 Key-Value 对
参数1 下拉List的句柄 (注: 通过GetHandle( )函数获取)
参数2 键(key)
参数3 值(value)
返回值 1 - 成功,空串 - 失败,失败的原因通常为Key已经存在
DropList_Insert 往下拉List中插入一个Key-value对
参数1 下拉List的句柄 (注: 通过GetHandle( )函数获取)
参数2 位置的键(key),表示位于这个key插入
参数3 键(key)
参数4 值(value)
返回值 1 - 成功,空串 - 失败,失败的原因通常为位置的键(Key)不存在、或新的Key已经存在
DropList_Delete 删除下拉List中某个Key
参数1 下拉List的句柄 (注: 通过GetHandle( )函数获取)
参数2 键(key)
返回值 1 - 成功,空串 - 失败,失败的原因通常为Key不存在
DropList_DeleteAll 清除下拉List的全部内容
参数 下拉List的句柄 (注: 通过GetHandle( )函数获取)
返回值 (无)
DropList_GetItems 取得下拉List的记录总条数
参数 下拉List的句柄 (注: 通过GetHandle( )函数获取)
返回值 数量
DropList_Find 根据Key从下拉List中查找Value
参数1 下拉List的句柄 (注: 通过GetHandle( )函数获取)
参数2 键(key)
返回值 值(Value)
DropList_GetKey 从下拉List中顺序取得Key
参数1 下拉List的句柄 (注: 通过GetHandle( )函数获取)
参数2 顺序号,从0开始
参数3 可选,true/false, 表示是否按照下拉中的显示顺序,默认false, 仅用于isSortByKey="true"的情形
返回值 键(key)的内容
DropList_GetValue 从下拉List中顺序取得value
参数1 下拉List的句柄 (注: 通过GetHandle( )函数获取)
参数2 顺序号,从0开始
参数3 可选,true/false, 表示是否按照下拉中的显示顺序,默认false, 仅用于isSortByKey="true"的情形
返回值 值(value)的内容
DropList_SetValue 更改下拉List中某个Key对应的value
参数1 下拉List的句柄 (注: 通过GetHandle( )函数获取)
参数2 键(key)
参数3 值(value)
返回值 1 - 成功,空串 - 失败,失败的原因通常为键(Key)不存在
4.Validations管理函数
本函数集用于单独管理 Treelist 或 Report 中的<Validations>.
函数详解:
Validation_Get 取得某id的Validation的内容
参数1 Validation的句柄
参数2 Validation的id
返回值 该Validation的JSon串
Validation_GetIds 取得所有Validation的ID
参数 Validation的句柄
返回值 ID, 多个ID间以逗号分隔
Validation_Set 更改或添加Validation
参数1 Validation的句柄
参数2 Validation的id,如果该id不存在,就添加
参数3 该Validation的JSon串,或以分号分隔的"key=value"格式串
返回值 (无)
示例 var h = AF.func("GetHandle", "Validation"); //取得句柄
AF.func("Validation_Set", h+"DJ1 \r\n {'errorText':'价格不对', 'validation':'price>0'}");
Validation_Add 添加Validation
参数1 Validation的句柄
参数2 Validation的JSon串,或以分号分隔的"key=value"格式串
返回值 (无)
Validation_Delete 删除某id的Validation
参数1 Validation的句柄
参数2 Validation的id
返回值 (无)
Validation_DeleteAll 删除所有Validation
参数 Validation的句柄
返回值 (无)
5.对表达式和计算函数的封装
5.1.对表达式的封装
硕正内部有一表达式解析引擎,它能高效地处理报表、树列表组件的公式表达式,表达式的书写规则在“开发者指南 \ 公共内容” 中的 “表达式” 有专门的介绍,通过如下2个API函数,您也可以单独调用该功能.
函数详解:
RunExp 执行表达式
参数 表达式串
返回值 结果,如果执行有误,返回的是"[Err!]"
备注 如果控件 (即 AF ) 是硕正报表,表达式功能更强大,支持和单元格的公式几乎一样的表达式(仅企业版)
示例 var result = AF.func("runExp", "=15+3"); //返回18
//假如 AF 是硕正报表, 支持如下的表达式计算(仅企业版):
var ret = AF.func("runExp", "=A4 + if(D3==1, K4, K6) + myFunc(A1)"); //注: myFunc 是报表的自定义函数
ParseExp 解析表达式
参数 表达式串
返回值 空串表示表达式正确,否则返回错误信息
5.2.对计算函数的封装
“开发者指南 \ 公共内容” 中的 “计算函数” 一般单独用于硕正组件自身的表达式,但也可以用 AF.func( ) 单独调用,例如.
//返回串 "壹万零壹佰贰拾叁元贰角肆分"
var s = AF.func("RMB", "10123.24");
//返回串 "10,123.20"
var s = AF.func("formatNum", "10123.2 \r\n #,##0.00");
Report报表中的数据源函数,象 "data"、"head"、"search" 这些取得单个数据的函数,可以通过本方法获取, 但是 "datarow"、"headrow" 这些函数就无法支持了。
执行 Report 报表的这些函数前, 通常还需要执行报表的 SetHoldDSData 函数.
6.DOM函数
DOM(文档对象模型)是XML/JSON在内存中的OO结构模型,通过以下的DOM函数集,您可以较方便地解析、修改或生成XML串. 为了能理解函数及参数的作用,我们先对某些术语作一个解释、约定:
1.DOM句柄
XML/JSON是一棵树,树的每一个节点(包括树杈、树叶)在内存中都是DOM类的对象实例,而每个对象实例都有一个唯一的指针地址的,我们就把这个指针地址称作“句柄”。
2.DOM父亲、子孙
由于XML/JSON可以是任意级别的复杂树,所以每个DOM对象中,都有父亲、子孙的存储位置的。没有父亲的DOM对象就是根节点,没有儿子的DOM对象就是树叶。
3.DOM元素名、属性
按常规的资料,都叫做元素,但我们这里稍加区分:
这样,每个DOM对象都有一个元素名,同时也可以有多个属性,以及属性对应的值.
4.内存泄漏
如果您创建了DOM对象,但没有销毁它,那么势必会造成该内存块始终被占用,这就是所谓的内存泄漏。除非如下文档中有特别的声明,否则您最终必须销毁该对象。
子孙DOM对象是不需要你去销毁的,因为父对象在销毁自己的同时,它自己会去逐个销毁子孙对象的。
5.实例
如下3个例子由浅入深,演示了部分DOM函数的功能,假如这是原始的XML:
<root>
<product id='001'>MB</product>
</root>
例一.简单的转换
var xml="<root><product id='001'>MB</product></root>";
var hRoot = AF.func("dom_new", xml); //创建DOM对象
alert(AF.func("dom_export", hRoot)); //export为 XML 串
AF.func("dom_delete", hRoot); //最后必须销毁
例二.更改元素的内容
var hRoot = AF.func("dom_new", xml); //创建DOM对象
var hProd = AF.func("dom_find", hRoot + "\r\n product"); //定位到 product 元素
AF.func("dom_setProp", hProd + "\r\n id \r\n100000"); //修改属性
AF.func("dom_setProp", hProd + "\r\n #text \r\nUser"); //修改text
alert(AF.func("dom_export", hRoot));
AF.func("dom_delete", hRoot); //最后必须销毁
例三.添加节点、删除节点:
var hRoot = AF.func("dom_new", xml); //创建DOM对象
//插入一个新的对象
var hNew = AF.func("dom_new", ""); //创建一个空的DOM元素
AF.func("dom_setName", hNew + "\r\n customer"); //设定元素名
AF.func("dom_setProp", hNew + "\r\n #text \r\nUser"); //设定text
AF.func("dom_insertChild", hRoot + "\r\n -1 \r\n" + hNew);
//删除 product 节点
var hProd = AF.func("dom_find", hRoot + "\r\n product");
AF.func("dom_Delete", hProd);
//查看结果
alert(AF.func("dom_export", hRoot));
AF.func("dom_delete", hRoot); //最后必须销毁根节点
函数详解:
DOM_new 创建新的DOM对象
参数 XML/JSON大串,或者是URL(相对或绝对),也可以是空串
返回值 DOM对象的句柄,空串表示创建失败。失败原因有:不是有效的XML/JSON串,或者参数作为URL时,无法从该URL读取.
备注 您最终必须通过 DOM_Delete 函数销毁这个句柄的,否则会导致内存泄漏.
DOM_Delete 销毁某个DOM对象
参数 DOM对象的句柄
返回值 1/0 - 成功/失败,失败原因通常是参数不是有效的DOM对象句柄
备注 1.DOM对象句柄通常是根节点句柄,但也支持是某个子节点的对象句柄;
2.如果该对象是某个子节点,那么它的父节点将会把它从子孙集合中移除,换句话说,利用本函数,您可以单独删除DOM树中的某一个节点;
3.销毁时,该DOM对象的所有子孙节点DOM对象也将随之销毁;
DOM_Clone 克隆(即复制)DOM对象
参数 DOM对象句柄
返回值 新的DOM对象的句柄,空串表示参数无效
备注 1.返回的DOM对象内容上和原对象一模一样,但是它没有父节点;
2.一般情况下,该句柄也是必须要销毁的,否则也会造成内存泄漏;
DOM_IsValid 判断某个句柄是否是DOM对象
参数 句柄
返回值 1/0 - 是/否
备注 如果DOM对象被销毁了,那么该句柄就无效了
DOM_Export 取得DOM对象的完整的XML内容串(包含子孙)
参数 DOM对象句柄
返回值 XML串, 空串表示句柄无效
DOM_GetName 取得本DOM节点的名称
参数 DOM句柄
返回值 串
备注 名称是指元素名,比如 <Properties height="3" ...> 这样的DOM对象,返回的是串"Properties"
DOM_SetName 更改本DOM节点的名称
参数1 DOM句柄
参数2 名称
返回值 1/0 - 成功/失败, 失败的原因通常为: DOM句柄不正确、或名称不符合规范
DOM_GetProp 取得DOM节点中某属性的值
参数1 DOM句柄
参数2 属性名
返回值 串
备注 XML元素自身的内容用 “#text”表示(请参考示例)
示例 例如 <Properties height="3" >ABC</Properties> 这样的DOM对象:
AF.func("DOM_GetProp", handle + "\r\n height") 返回 3
AF.func("DOM_GetProp", handle + "\r\n #text") 返回 ABC
DOM_SetProp 更改本DOM节点某属性的值 (包括了增删改功能)
参数1 DOM句柄
参数2 属性名
参数3 值串
返回值 1/0 - 成功/失败。 失败的原因通常为: DOM句柄不正确、或属性名不符合规范
备注 1.XML元素自身的内容用 “#text”表示;
2.如果属性不存在,则自动增加这个属性;
3.如果值为空,表示删除这个属性;
4.请参考 DOM_GetProp 中的示例
DOM_GetPropNames 取得本DOM节点全部的属性名
参数 DOM句柄
返回值 以逗号分隔的属性名
示例 例如 <Properties height="3" width="4" /> 这样的DOM对象:
AF.func("DOM_GetPropNames", handle) 返回串 "height,width"
DOM_GetParent 取得某节点的父节点句柄
参数 DOM句柄
返回值 父亲的DOM句柄,空串表示参数句柄无效
DOM_GetChildCount 取得儿子的个数
参数 DOM句柄
返回值 数字
DOM_GetChild 取得n个儿子的句柄
参数1 DOM句柄
参数2 数字,顺序号(从0开始计数)
返回值 该儿子的DOM句柄,空串表示顺序号已经超出
DOM_IsLeaf 判断某节点是否树叶
参数 DOM句柄
返回值 1/0/空串 - 是/否/无效的DOM句柄
DOM_GetLeafArray 取得子孙中所有树叶的句柄
参数1 DOM句柄
参数2 可选,为 true/false,true - 从儿子、孙子、重孙辈...中查找; false - 仅在儿子辈中查找, 默认是 true
返回值 以逗号分隔的句柄
DOM_Find 从子孙中查找某个元素名的节点句柄
参数1 DOM句柄
参数2 要查找的元素名
参数3 可选,为 true/false,true - 从儿子、孙子、重孙辈...中查找; false - 仅在儿子辈中查找, 默认是 true
返回值 以逗号分隔的句柄
DOM_InsertChild(用法1) 插入一个儿子
参数1 DOM句柄
参数2 位置,-1表示从末尾添加
参数3 新加入的DOM句柄
返回值 DOM的句柄,即和参数3完全一样的串,空串表示失败
备注 1.如果新加入的DOM句柄是通过 DOM_New 函数生成的,那么你不必用DOM_Delete销毁它,因为它的生命周期已经被它的父亲控制了;
2.新加入的DOM句柄允许是现有的某个子孙的句柄(包括来自同一个祖先或其它祖先),相当于是该DOM对象转移位置(或者说是改变父亲)而已.
DOM_InsertChild(用法2) 插入一个儿子
参数1 DOM句柄
参数2 位置,-1表示从末尾添加
参数3 新插入的节点元素的元素名
参数4 可选,新插入的元素自己的内容(即所谓 #text)
返回值 新生儿的句柄,空串表示失败,失败原因通常为父句柄无效、元素名命名不符合规范
7.其它函数
函数详解:
CancelEvent 阻止事件继续执行
参数 事件锁句柄, 仅 Chrome ppapi 需要,其它浏览器可以忽略该参数.
返回值 (无)
备注 1.只能用在 OnEvent 事件中, 并且需要对照事件说明文档, 因为并不是所有事件都能被阻止的;
2.通常用于某些 "Before..." 事件中. 以分页为例,如果你在 BeforePager 事件中执行了本函数,下一真正步的分页处理将被取消、不再执行;
3.通常是书写在事件返回语句前,即紧挨在 return 前;
4.在Chrome ppapi 开发中,本函数仅对被声明为锁定的事件(EnableEventLock)有效; 当执行 CancelEvent 函数后, 事件锁同时被释放, 不再需要执行 EventUnLock
示例 function OnReady(id)
{
AF.func("build", "../A/12.xml");
AF.func("EnableEventLock", "DblClicked"); //声明鼠标双击事件需要加锁
}
function OnEvent(id, Event, p1, p2, p3, p4)
{
if(Event == "DblClicked") {
var handleEvent = AF.func("EventLock", Event); //锁
if( ..条件, 略...) {
AF.func("CancelEvent", handleEvent);
return;
}
AF.func("EventUnlock", handleEvent);
}
}
toJson 将XML串转换成JSon
参数1 XML串
参数2 可选,格式为 RecordSet=[?];JsonObj=[?];isWrapperName=[?];isKeepNodeName=[?], 其含义及可用值说明如下:
RecordSet - true 或 false, 默认是false. 如果是 true, 表示待转换的XML是平面结果集数据,转换后的JSON串是类似这种更简洁的格式:
{"id":"k203", "price":"2230.12", "dept":"fin01"}
如果XML是多条记录,则JSON是数组:
[
{"id":"k203", "price":"2230.12", "dept":"fin01"},
{"id":"s508", "price":"33.00", "dept":"fin02"}
]
isWrapperName - true 或 false, 表示是否以引号环绕对象名, 默认是 true. 如下是 true 时的样例:
{"id":"k203", "price":"2230.12", "dept":"fin01"}
如下是 false 时的样例:
{id:"k203", price:"2230.12", dept:"fin01"}
isKeepNodeName - true 或 false, 表示是否保持在转换过程中, 某些临时生成的诸如 jsonobject、tempiteminarray 的对象名, 默认是 true;
JsonObj - 逗号分隔的对象名, 表示指定对象名, 如果其值为空时, 输出是 "{ }", 而不是 "null";
返回值 JSON串(注:如果参数1不是XML,则直接返回该参数)
SetMultiLineEnter 在默认情况下,多行编辑(MultiLineEdit)是以Ctrl+Enter实现换行的。如果设为true,则直接回车就实现换行.
参数 true/false, 默认false
返回值 (无)
备注 该函数是全局函数,一旦执行,进程内的多行编辑都将生效
GetMultiLineEnter 取得多行编辑是否直接以回车换行
参数 (无)
返回值 1/0
Menu 在当前鼠标位置直接弹出一个自定义菜单
参数 菜单的XML/JSON/TXT串,其格式请参考Treelist的帮助文档“13.自定义菜单”.
返回值 对应id号,0表示未选择,空串表示参数有误
备注* 该函数不一定能正常运行,原因未明
示例 var s = "id=BZ-4001; text=男帽; icon=treelist/buttons.zip#301.ico; detail=夏季时装\r\n";
s += "id=K4002; text=时髦头巾; icon=treelist/buttons.zip#302.ico; detail=优惠直销";
alert( AF.func("menu", s));
PostMessage 以Post方式发送一个消息,相当于在消息队列的末尾添加,在页面的OnEvent( )事件中将能收到一个名为 "UserEvent" 的消息。
参数 格式为 p1=?;p2=?;p3=?;p4=?, 也允许忽略
返回值 (无)
示例 function OnEvent(id, Event, p1, p2, p3, p4)
{
if(Event == 'LooseFocus') {
if(p1=='0' && p2=='price')
AF.func('PostMessage', 'p1=kk');
}
else if(Event == "UserEvent" && p1=="kk") {
AF.func("SelectCell", "0 \r\n price");
}
}
PostMessageToChrome 用于 ppapi 的内嵌 IE页面, 向外部的 Chrome 容器页面发送一个消息,Chrome页面的OnEvent( )事件中将能收到一个名为 "UserEvent" 的消息。
参数 格式为 p1=?;p2=?;p3=?;p4=?, 也允许忽略
返回值 (无)
DeclareAsynch 声明异步执行下一个函数(通常是会弹出模式对话框的函数、用于解决 Firefox 浏览器线程阻塞问题)
参数 格式为 p1=?;p2=?;p3=?, 也允许忽略。如果忽略(即参数为空、不定义p1,p2,p3), 那么下一个函数执行后,将不触发 UserEvent 事件
返回值 (无)
备注 1.函数使用详解请参考 使用指南 \ 10.不同浏览器的一些差别 \ 10.4 线程阻塞问题 ;
2.注意:参数只有 p1, p2, p3, 不包括 p4, 因为 p4 是异步函数的返回值;
3.本函数仅对下一个函数生效,即寿命是一次性的;
4.本函数的作用范围是整个进程、全局有效,“下一个函数” 不管是硕正哪个组件、哪个页面,都将被安置到新线程异步执行;
Blur 强制让当前焦点窗口(如输入框)失去焦点
参数 (无)
返回值 (无)
备注 常用于非 IE 环境, 例如 Chrome 浏览器, 由于其输入框不是从 Windows 标准类继承, 所以它取得焦点后无法让硕正组件失去焦点, 只能执行本函数强制让硕正组件失去焦点
GrayWindow 使控件呈现被遮罩的半透明效果,用于实现网页模式对话框,可参考Treelist的演示页
参数1 是否遮罩, true - 遮罩,控件被Disable并呈半透明的灰色; false - 解除遮罩
参数2 可选,有二种语法:
语法1: 数字, 灰度值, 0 到 255,默认200, 数值越大越明亮.
语法2: backColor=[?];alpha=[?];isGrayImage=[?] 的串, 原理是在某个底色的基础上, 把界面半透明地绘制上去. backColor是底色, 默认值是#C8C8C8; alpha是界面的透明度, 0 到 255, 默认值是 70; isGrayImage 表示是否把界面转成灰度, 默认值是 true
返回值 (无)
示例 AF.func("GrayWindow", "true \r\n 240"); //语法1
AF.func("GrayWindow", "true \r\n backColor=#440044;alpha=80"); //语法2
AF.func("GrayWindow", "true \r\n backColor=0;alpha=255;isGrayImage=false"); //让控件处于遮罩状态, 但外观看上去未改变
AF.func("GrayWindow", ""); //解除遮罩
备注 Chrome 纯 ppapi 模式下, 遮罩时插件窗口将隐去, 很好地解决了插件遮挡页面其它元素的问题
ClearImageCache 清理某个Treelist/freeform的图片缓存,以便在下次Build或Load时能及时刷新图片
参数 Treelist或Freeform的句柄
返回值 (无)
备注 1.句柄是通过GetHandle( )函数获取的; 2.Treelist 或 Freeform 有自己的图片缓存,独立于浏览器的缓存;
SaveCache 将串存入本地缓存,缓存的内容在全局有效、且和页面无关(即所有页面均能访问到)
参数1 ID, 可以是任意串
参数2 内容串,如果是空串,则表示从缓存中移除该ID的内容
参数3 可选,格式为Persist=[?];TimeOut=[?D/H/M/S], 其中Persist用于指定保存到何处,格式如下:
1.Persist = Memory , 默认,表示将内容缓存于内存中,当浏览器进程关闭后内容将遗失.
2.Persist = File , 将内容保存在本地文件(在BC目录下的 cache.data 文件).
TimeOut表示如果超过一段时间无访问,将自动删除该缓存,格式如下:
TimeOut = ?D/?H/?M/?S - 时间间隔,n天/n小时/n分钟/n秒(D/H/M/S分别表示天数、小时、分钟、秒).
返回值 (无)
备注 1.该缓存是硕正套件自己维护的缓存,与浏览器缓存无关; 2.如果是本地文件,它位于 BC 目录下;
示例 AF.func("SaveCache", "My.Key1 \r\n MyContent1"); //保存到内存
AF.func("SaveCache", "My.Key1 \r\n MyContent1 \r\n Persist=File"); //保存到文件,永久有效
AF.func("SaveCache", "My.Key1 \r\n MyContent1 \r\n TimeOut=3M"); //保存到内存,有效期为3分钟
AF.func("SaveCache", "My.Key1"); //清除ID为 "My.Key1" 的缓存
ReadCache 读取缓存内容
参数 ID, 注:ID是大小写敏感的
返回值 内容串
备注 1.该缓存是硕正套件自己维护的缓存,与浏览器缓存无关; 2.通常和前面的 SaveCache 关联使用;
GetCacheIDs 取得所有缓存内容的ID号
参数 (无)
返回值 ID串,以逗号分隔
备注 1.该缓存是硕正套件自己维护的缓存,与浏览器缓存无关; 2.通常和前面的 SaveCache、ReadCache 关联使用;
ListenEvent 监听某些特殊事件
参数 必须为串“CacheSaved”
返回值 (无)
备注 1.用于监听前面的 SaveCache 动作, 一旦 SaveCache 函数被执行,将触发 CacheSaved 事件,不管内容是否被更新; 2.可以是跨页面、跨选项卡触发
示例 ...
AF1.func("ListenEvent", "CacheSaved"); //AF监听 CacheSave 函数
...
AF2.func("SaveCache", "My.Key1 \r\n MyContent1"); //AF2 执行了 SaveCache 函数, 将触发事件
...
function OnEvent(id, Event, p1, p2, p3, p4)
{
if(id == "AF1" && Event == "CacheSaved") alert(p1);
}
CacheDirUtility 本地缓存目录实用程序
参数 格式为 Dir=[?]; isCreateTempFile=[?]; Ext=[?]; KeepMB=[?]; DeleteEarlierFile=[?],含义如下:
Dir - 本地用于缓存的目录名,如果为空,则表示 BC 目录下的 Temp 目录 (服务器版则指向后端的临时目录);
isCreateTempFile - true/false, true 表示在目录中创建一个唯一的文件, 并返回文件名;
Ext - 该文件的后缀, 默认是"tmp";
Pre - 该文件的前缀, 默认为空;
DeleteEarlierFile - 删除该目录下 n 小时(或分)前的文件, h/m分别表示时/分, 例如 DeleteEarlierFile=3h 表示删除3个小时前的文件; 如果为空,表示不执行该功能;
KeepMB - 数字,单位是兆比, 删除该目录下最早的文件, 使文件总尺寸不超过 n 兆比; 如果为空,表示不执行该功能;
返回值 如果 isCreateTempFile 为true, 则返回全文件名
备注 "@"开头的文件是不会被删除的,也不计入KeepMB的尺寸
GetDataString 取得某个内存块中的内容
参数 内存块的句柄
返回值 内容串
备注 1.通常用于 DataReach 事件; 2.在大多数情况下, 句柄的生命周期是十分短暂的, 访问无效句柄会导致异常
SetDataString 将串写入某个内存块
参数1 内存块的句柄
参数2 要写入的串
返回值 (无)
备注 1.通常用于 DataReach 事件; 2.在大多数情况下, 句柄的生命周期是十分短暂的, 访问无效句柄会导致异常
HttpPostLocalFile 通过Post简单上传一个本地文件
参数1 Http的URL, 可以是绝对或相对URL, 如果是相对URL,是相对于页面URL的
参数2 本地全文件名
参数3 可选参数,格式为 mode=[?];compress=[?];isEcho=[?],含义为:
mode - synch/asynch, 同步/异步上传,默认是同步;
compress - 是否对数据进行zip压缩, none/zip/autozip, 不压缩/压缩/根据压缩后数据包尺寸变化自动选择,默认是none, 即不压缩;
isEcho - true/false, 是否提示上传成功或失败,默认是true;
返回值 0 - 表示有错误,例如本地文件不存在、http传输错误; 否则,在同步上传时返回服务器返回的串、异步上传时返回1
备注 1.发起的Request中, Http Body 将是该文件的二进制内容;
2.如果是异步上传,上传完成后能触发名为 “Upload”的事件;
3.本函数只能上传较小的文件,因为是一次性将文件读入内存的,所以文件尺寸受制于客户端内存的大小,上传大文件请用硕正的 upload 组件或 Freeform 中的 upload 控件;
示例 AF.func("HttpPostLocalFile", "http://localhost/hlp.aspx?name=my.mp3 \r\n d:\\my.mp3 \r\n mode=asynch");
Download 文件下载
参数1 URL,支持Http、Ftp
参数2 可选,格式为 isOpenDialog=[true/false]; isEcho=[true/false]; toDir=[?]; toFile=[?]; toString=[?]; Ext=[?]; uid=[?]; pwd=[?], 含义为:
isOpenDialog - 是否打开选择本地文件或目录的对话框,有如下可选项, 默认是true:;
true(或file) - 打开文件选择对话框;
dir - 打开目录选择对话框;
false - 不打开对话框;
备注:如果选择“dir”,那么必须指定“toFile”文件名参数,文件名可以是不含路径的纯文件名;
Ext - 在对话框中允许选择的文件后缀,若有多个后缀则以逗号分隔,仅用于 isOpenDialog=true 时;
toDir - 指定本地目录(绝对路径),如果路径不存在能自动创建,默认是空;
toFile - 指定本地文件(如果isOpenDialog=dir, 可以是不含路径的文件名,否则必须是绝对路径),如果路径不存在能自动创建,默认是空,如果设定了toFile,通常就不需要设定toDir;
isAutoResume - 是否支持自动断点续传(仅支持 http), 默认是 true;
uid - 登录的用户名;
pwd - 用户口令;
zip - Expand / ExpandAndDelete / 空串。Expand表示如果下载的文件是用Zip压缩的,则完成下载后自动解压; ExpandAndDelete表示解压后删除zip文件; 为空表示不做解压处理。默认是空串;
toString 或 isToString - true/false,默认是false。当为 true 时,表示 http(或ftp) 返回的内容肯定是字符串,并将直接返回该串,而不再将内容保存到文件。此时不需要设定isOpenDialog、toDir、toFile等文件参数了。请参见下面的示例.
toBufferObj 或 isToBufferObj - true/false,默认是false。当为 true 时,返回的内容二进制被包含在硕正的缓存对象中,函数返回该对象的地址的串。该函数不太常用,在硕正套件C/S版中有例子.
isEcho - 下载后是否浮现一个提示,失败则浮现错误信息,默认是true;
mode - synch/asynch, 同步/异步下载,默认是同步;
isShowProgress - true/false, 是否显示进度条,仅用于异步,默认是false;
cover - 当本地有同名文件时, overwrite/rename/nocover - 直接覆盖/文件自动改名/不覆盖, 仅用于isOpenDialog=false时, 默认是overwrite;
offset - 数字,单位为字节,从 offset 字节开始下载、写入 (本参数用途不大);
返回值 返回的是本地全文件名,如果是空串则表示失败、或者对话框中选择了“取消”;
如果 isToString=true,则返回的是内容串;
如果是zip解压的,则返回zip包中第一个文件在该目录的全文件名;
如果 mode=asynch(异步下载),返回的是一个纯数字的任务ID号,用于 Download 事件,如果是空串表示对话框中选择了“取消”。
备注 1.如果是异步下载,在下载结束时将触发 Download 事件,并且在下载过程中会以1秒左右的间隔不停地发送 Download 事件,报告当前的下载进度、网速,详细请参见组件的"Download"事件文档. 2.断点续传只能用于下载文件, 如果 toString = true 或 toBufferObj = true, 断点续传失效
示例 //下载一个mp3文件,下载前会打开目的文件对话框
AF.func("download", "ftp://192.168.1.2:21/mymusic.mp3");
//下载到指定文件,但仍会打开目的文件对话框
AF.func("download", "http://localhost/hlp.htm \r\n toFile=d:\\my.htm; ext=htm,html,txt");
//直接取得文本串
var xml = AF.func("download", "http://localhost/text.xml \r\n toString=true");
CancelDownload 中断文件下载,仅用于异步下载
参数1 ID号,即 Download 函数的返回值
参数2 为 DeleteFile / KeepFile。DeleteFile - 删除已下载到本地的这个不完整的文件; KeepFile - 保留这个文件。默认是DeleteFile。
返回值 如果参数2为 DeleteFile , 则返回空串;如果参数2为 KeepFile,则返回本地文件名、文件总长度、已下载的文件长度,3者之间以回车符分隔
FileUtility 本地文件操作
参数1 操作串,可以为:
isExists - 文件是否存在, 返回1/0;
GetByte 或 GetBytes - 返回文件长度(单位: 字节);
GetKB - 返回文件长度(单位: KB);
GetMB - 返回文件长度(单位: MB);
GetCTime - 返回文件创建日期;
GetMTime - 返回文件最后修改日期;
delete - 删除文件, 返回1/0;
GetFilenames / GetPathnames - 取得某个子目录下的某些文件名/含路径的全文件名;
GetMD5 - 取得某个文件的 MD5 串, 32字长, 例如 e3b167a17d48c2eeb84cb1b1b98e233d, 空串表示文件不存在或无法访问;
参数2 如果参数1是GetFilenames / GetPathnames, 本参数是路径的通配符,比如 "d:\docs\*.jpg" ;
否则, 应该是全文件名
返回值 根据参数1而定, 如果参数1是GetFilenames / GetPathnames, 返回的是以回车分隔的文件名/全文件名
示例 //返回回车分隔的文件名
var s = AF.func("FileUtility", "GetPathnames \r\n d:\\docs\\*.jpg");
FileDialog 打开文件或目录选择对话框
参数 操作串,可以为:
isOpen - 用途, true/false - 用于打开文件/用于保存文件, 默认是true;
isDir - true/fale - 目录选择对话框 / 文件选择对话框,默认是 false;
如果 isDir = true, 还可以有如下选项
Title - 自定义对话框的标题;
Dir - 初始选择、展开的目录;
Root - 目录树的根节点, 可以是 "Desktop" 或 "Driver", 默认是 "Desktop" ;
如果 isDir = false, 则可以有如下选项:
FileType - 能打开的文件类型(后缀),多种类型之间以逗号分隔, 例如串 "jpg,bmp,*", 默认是 "*";
FileName - 初始选择的文件名;
返回值 全文件名
示例 var s = AF.func("FileDialog", "isDir=true; Title=请选择目录:");
ShellExecute 使用本地操作系统的关联的应用程序, 打开本地的某个文件
参数 全文件名
返回值 1/0 - 成功/失败
备注 如下 5 种后缀的文件是无法打开的: exe、bat、com、msi、reg
示例 AF.func("ShellExecute", "d:\\photo.jpg");
GetExcelSheetName 取得本地 Excel 文件中各个工作表的名称
参数 本地 Excel 文件的全文件名
返回值 工作表名称, 多个名称之间以回车符分隔
备注 支持 xls, xlsx 文件格式
GetMac 取得网卡Mac地址
参数 (无)
返回值 串(如:"1c-6f-65-d6-b8-d1")
GetIP 取得本机IP地址
参数 (无)
返回值 串(如:"192.168.1.1")
GetComputerName 取得客户端的计算机名
参数 (无)
返回值 串
GetNumberOfProcessors 取得本机CPU逻辑核心数
参数 (无)
返回值 数字,假如您的电脑是双核四线程,则返回值是4
GetPrinters 取得本地已安装的所有打印机名
参数 (无)
返回值 以逗号分隔的打印机名,其中的第一个是默认打印机
GetPrinterPapers 取得某打印机所支持的所有打印纸号
参数 打印机名
返回值 以逗号分隔的打印纸号,其中第一个为该打印机默认的打印纸。各种打印纸号所对应的打印纸名称及尺寸请参见“附录4:打印纸对照表”
GetPrinterPapersInfo 取得某打印机所支持的所有打印纸的详细参数
参数 打印机名
返回值 返回类似如下的 json 数组, width 和 height分别表示纸张的宽度和高度, 单位是1/10毫米:
[{ "name": "A4",
"number": 9,
"width": 2100,
"height": 2970
},
{ "name": "信纸",
"number": 1,
"width": 2159,
"height": 2794
},
{ "name": "Tabloid",
"number": 3,
"width": 2794,
"height": 4318
}]
GetLastPrintInfo 取得上次硕正报表、树列表实际打印所采用的打印机名和打印份数
参数 (无)
返回值 JSON串,例如: {"Printer":"HP LaserJet P1007", "Copies": 2}, 如果为空串,表示浏览器进程开启以来尚未打印过
Twain 打开支持 Twain 接口的扫描仪, 用于执行文件扫描操作
参数 格式为 Type=[?];Dir=[?];precision=[?], 说明如下
Type - 指定扫描获取的图片文件的格式, 可以为 BMP、JPG、PNG、TIF、PDF、PDFBook, 默认是 BMP. 注: 并不是所有扫描仪都支持 JPG, PNG, 但 BMP 都支持;
PDF 和 PDFBook 和扫描仪硬件无关, 是由硕正实现的, 所谓 "PDFBook" 是指将本次扫描的多个图片输出到一个 PDF 文件中.
Dir - 指定扫描获取的文件存放目录, 默认在硕正临时目录下 (Users\UserName\BC\Temp);
Precision - 指定 jpg 文件的精度, 1 到 100, 默认是 85. 注: PDF 和 PDFBook 也是封装了 jpg 的, 所以也适用;
返回值 数字, 含义如下: 1-扫描仪打开成功, 3-Dir参数不正确或目录无法创建, 4-未发现本机连接有扫描仪, 5-系统的扫描管理功能开启失败, 6-操作系统缺少Twain的程序文件
备注 在执行完扫描后, 将名为触发 "Device" 的事件, 请参考开发文档 “事件”
GetFonts 取得已使用的全部字体资源
参数 (无)
返回值 XML串
备注 1.仅用于 Treelist、Freeform、Report;
2. 对于Report,每个工作表都有自己独立的字体资源,本函数仅针对当前工作表
示例 var s=AF.func("getFonts", "");
s = AF.func("toJson", s + "\r\n RecordSet");
alert(s);
/*返回的是类似如下这样的串:
[
{'faceName':'Verdana', 'height':'-12', 'weight':'400', 'pitchAndFamily':'34', 'quality':'1', 'outPrecision':'3', 'clipPrecision':'2'},
{'faceName':'SimSun', 'charSet':'134', 'height':'-12', 'weight':'400'}
]
*/
AddFont 添加一种字体, 如果字体已经存在,则返回该字体的顺序号(fontIndex)
参数 该字体的xml或json串
返回值 字体顺序号,返回 -1 表示失败
备注 1.仅用于 Treelist、Freeform、Report;
2. 对于Report,每个工作表都有自己独立的字体资源,本函数仅针对当前工作表
示例 var s=AF.func("addFont", "{'faceName':'宋体', 'height':'-12', 'weight':'400'}");
OpenSysFontDialog 打开操作系统的字体对话框
参数 用于在对话框初始显示的字体, xml或json串, 如果参数为空, 对话框显示为操作系统默认字体
返回值 字体的XML串,空串表示点击了 "取消"
示例 var s=AF.func("openSysFontDialog", "{'faceName':'宋体', 'height':'-12', 'weight':'400', 'Color':'red'}");
if(s != '') alert( AF.func("tojson", s + "\r\n recordSet") );
OpenSysColorDialog 打开操作系统的颜色对话框
参数 对话框的初始颜色, 可以是 "#FF0000" 或 "Red" 这种串, 参数为空则默认为黑色
返回值 字体串,空串表示点击了 "取消"
GetLanguage 取得当前语言
参数 (无)
返回值 936 - 中文简体,1252 - 英文,950 - 中文繁体
SetLanguage 切换语言
参数 936 - 中文简体,1252 - 英文,950 - 中文繁体
返回值 (无)
GetCtlName 取得组件名
参数 (无)
返回值 组件名,如treelist、freeform
IsComponentInstalled 某组件是否已经下载
参数 组件bin包名,如BCV1、LuxForm
返回值 true/false
GetHandleType 取得句柄的类型
参数 句柄
返回值 串,可能为treelist、list、freeform、worksheet、validation、dom或空串
备注 句柄是通过GetHandle( )函数获取的
GetCookie 取得当前的Cookie
参数 (无)
返回值 Cookie串
备注 是指 dynaload.js 中创建控件时赋予的 Cookie 串,或通过 SetCookie 函数指定的 Cookie 串
SetCookie 设置Cookie串,用于当前插件对象后续的 http 请求
参数 串
返回值 (无)
SetHttpHeadProp 设置Http head的属性,用于当前插件对象后续的 http 请求
参数1 属性名
参数2 内容串, 空串表示删除该属性
返回值 (无)
备注 1.属性通常是指自定义属性,例如 tokenId; 2.本函数是全局(进程)有效的,一旦设置,今后所有 http 请求都将包含此属性; 3.如果要设置多个属性,须多次调用本函数
GetChar 取得某个字符编码所对应的文字
参数 字符的ASC码,如果是中文,则为utf-16的编码
返回值 (无)
示例 var chr = AF.func("GetChar", "20013"); //返回“中”
var chr = AF.func("GetChar", "97"); //返回“a”
ScreenShot 取得当前屏幕截图
参数 可选的串,格式为return=[?]; range=[?]; type=[?];precision=[?];isgray=[?];blackwhit=[?];threshold=[?], 其含义如下:
return - base64/filename, 返回 Base64大串/返回文件名,默认是Base64;
range - browser/screen/control, 仅截取浏览器界面/截取整个屏幕/仅截取当前控件部分,默认是browser;
type - jpg/gif/bmp/png/tif, 图片格式,默认是jpg;
precision - 0到100的数值,仅用于jpg, 含义为jpg的清晰度,数字越大越清晰,默认是75;
isGray - true/false, 灰度/彩色,默认是false;
BlackWhite - true/false, 黑白/彩色,默认是false;
threshold - 1到100之间, 仅用于黑白,数字越小图像越白,默认是70;
返回值 根据参数,返回文件名或Base64串
示例 var chr = AF.func("screenshot", "return=base64;isgray=true;precision=60");
QR 生成二维码图片(bmp格式)
参数1 需要被编码的字符串
参数2 可选的串,格式为Level=[?]; maxSize=[?]; isBase64=[?];filename=[?], 其含义如下:
Level - 纠错等级,0到3的整数, 分别表示 7%、15%、25%、35%的纠错率,纠错率越高,扫描过程越不易出现差错,默认是0;
maxSize - 期望生成的图片的大小,单位是像素,通常是编码串越长,所需的尺寸也必须越大。最小值是25,默认是300;
如下2个参数决定如何返回结果(不能同时使用):
filename - 本地文件名,用于保存 bmp 格式的图片;
isBase64 - 将生成的 bmp 二进制转码成 BASE64 串,并返回该串;
返回值 根据参数返回, 如果指定了 filename,返回 1/0 - 成功/失败;如果 isBase64=true, 则返回 BASE64 串
示例 var str = AF.func("QR", "http://www.supcan.cn \r\n isBase64=true");
Sleep 阻塞当前线程(通常是主线程),让其等待若干时间
参数 毫秒数
返回值 (无)