8a1ad1c4c264f2d0dfeb793e1ab818d61e82c7ad.svn-base 17.3 KB
<?xml version='1.0' encoding='utf-8' ?>
<functions>
<category name="常用函数">
 <function name="CancelEvent">
  <usage>取消执行某些事件</usage>
  <detail>取消执行某些事件,用于某些"Before..."事件. 以分页为例,如果你在 BeforePager 事件中执行了本函数,下一真正步的分页处理将被取消.</detail>
 </function>
 <function name="toJson">
  <usage>将XML串转换成JSon</usage>
  <para>XML串</para>
  <para>可选,可以是串"Recordset",表示待转换的XML是平面结果集数据,转换后的JSON串是类似这种更简洁的格式:&lt;br&gt;
  {"id":"k203", price:"2230.12", "dept":"fin01"}&lt;br&gt;
如果XML是多条记录,则JSON是数组:&lt;br&gt;
  [&lt;br&gt;
   {"id":"k203", price:"2230.12", "dept":"fin01"},&lt;br&gt;
   {"id":"s508", price:"33.00", "dept":"fin02"}&lt;br&gt;
  ]
</para>
  <return>JSON串(注:如果参数1不是XML,则直接返回该参数)</return>
  <illu>请参见Treelist的 29.查询条件(一)、30.查询条件(二)</illu>
 </function>
 <function name="SetMultiLineEnter">
  <usage>设置多行编辑是否直接以回车换行</usage>
  <detail>在默认情况下,多行编辑(MultiLineEdit)是以Ctrl+Enter实现换行的。如果设为true,则直接回车就实现换行.</detail>
  <para>true/false, 默认false</para>
  <memo>该函数是全局函数,一旦执行,进程内的多行编辑都将生效</memo>
 </function>
 <function name="GetMultiLineEnter">
  <usage>取得多行编辑是否直接以回车换行</usage>
  <return>1/0</return>
 </function>
 <function name="Menu">
  <usage>在当前鼠标位置直接弹出一个自定义菜单</usage>
  <para>菜单的XML/JSON/TXT串,其格式请参考Treelist的帮助文档“8.自定义菜单”.</para>
  <return>对应id号,0表示未选择,空串表示参数有误</return>
  <example>var s = "id=4001; text=男帽; icon=treelist/buttons.zip#301.ico; detail=夏季时装\r\n";&lt;br&gt;
s += "id=4002; text=时髦头巾; icon=treelist/buttons.zip#302.ico; detail=优惠直销";&lt;br&gt;
alert( AF.func("menu", s));</example> </function>
</category>

<category name="遮罩函数">
	<function name="GrayWindow">
		<usage>使控件呈现被遮罩的半透明效果</usage>
		<detail>使控件呈现被遮罩的半透明效果,用于实现网页模式对话框,可参考Treelist的演示页</detail>
		<para>是否遮罩, true - 遮罩,控件被Disable并呈半透明的灰色; false - 解除遮罩</para>
		<para>可选,灰度, 0-255,默认200, 数值越大越明亮</para>
		<illu>请参见树列表的演示页: 34.遮罩效果</illu>
	</function>
</category>


<category name="缓存函数">
	<function name="ClearImageCache">
		<usage>清理某个Treelist/freeform的图片缓存</usage>
		<detail>清理某个Treelist/freeform的图片缓存,以便在下次Build或Load时能及时刷新图片</detail>
		<para>Treelist或Freeform的句柄</para>
		<memo>句柄是通过GetHandle( )函数获取的</memo>
	</function>
	<function name="SaveCache">
		<usage>将串存入本地缓存</usage>
		<detail>将串存入本地缓存,缓存的内容在&lt;font color=red&gt;全局有效、且和页面无关(即所有页面均能访问到)&lt;/font&gt;</detail>
		<para>ID, 可以是任意串</para>
		<para>内容串,如果是空串,则表示从缓存中移除该ID的内容</para>
		<para>可选,格式为Persist=[?];TimeOut=[?D/H/M/S], 其中Persist用于指定保存到何处,格式如下:&lt;br&gt;
1.Persist = &lt;b&gt;Memory&lt;/b&gt;,  默认,表示将内容缓存于内存中,当浏览器进程关闭后内容将遗失.&lt;br&gt;
2.Persist = &lt;b&gt;File&lt;/b&gt;,  将内容保存在本地文件(在BC目录下的 cache.data 文件).&lt;br&gt;
TimeOut表示如果超过一段时间无访问,将自动删除该缓存,格式如下:&lt;br&gt;
TimeOut = &lt;b&gt;?D/?H/?M/?S&lt;/b&gt; - 时间间隔,n天/n小时/n分钟/n秒(D/H/M/S分别表示天数、小时、分钟、秒).</para>
		<example>
AF.func("SaveCache", "My.Key1 \r\n MyContent1");  //保存到内存&lt;br&gt;
AF.func("SaveCache", "My.Key1 \r\n MyContent1 \r\n Persist=File");  //保存到文件,永久有效&lt;br&gt;
AF.func("SaveCache", "My.Key1 \r\n MyContent1 \r\n TimeOut=3M");  //保存到内存,有效期为3分钟&lt;br&gt;
AF.func("SaveCache", "My.Key1");  //清除ID为 "My.Key1" 的缓存&lt;br&gt;
</example>
		<illu>请参见树列表的演示页:30.查询条件(二)</illu>
	</function>
	<function name="ReadCache">
		<usage>读取缓存内容</usage>
		<para>ID, 注:ID是大小写敏感的</para>
		<return>内容串</return>
		<illu>请参见树列表的演示页:30.查询条件(二)</illu>
	</function>
	<function name="GetCacheIDs">
		<usage>取得所有缓存内容的ID号</usage>
		<return>ID串,以逗号分隔</return>
	</function>

	<function name="CacheDirUtility">
		<usage>本地缓存目录实用程序</usage>
		<para>格式为 Dir=[?]; isCreateTempFile=[?]; Ext=[?]; KeepMB=[?]; DeleteEarlierFile=[?],含义如下:&lt;br&gt;
 &lt;b&gt;Dir&lt;/b&gt; - 本地用于缓存的目录名,如果为空,则表示 BC 目录下的 Temp 目录 (服务器版则指向后端的临时目录);&lt;br&gt;
 &lt;b&gt;isCreateTempFile&lt;/b&gt; - true/false,  true 表示在目录中创建一个唯一的文件, 并返回文件名;&lt;br&gt;
   &lt;b&gt;Ext&lt;/b&gt; - 该文件的后缀, 默认是"tmp";&lt;br&gt;
 &lt;b&gt;DeleteEarlierFile&lt;/b&gt; - 删除该目录下 n 小时(或分)前的文件, h/m分别表示时/分, 例如 DeleteEarlierFile=3h 表示删除3个小时前的文件; 如果为空,表示不执行该功能;&lt;br&gt;
 &lt;b&gt;KeepMB&lt;/b&gt; - 数字,单位是兆比,  删除该目录下最早的文件, 使文件总尺寸不超过 n 兆比; 如果为空,表示不执行该功能;&lt;br&gt;
</para>
		<return>如果 isCreateTempFile 为true, 则返回全文件名</return>
		<memo>"@"开头的文件是不会被删除的,也不计入KeepMB的尺寸</memo>
	</function>
</category>
<category name="系统函数">
	<function name="GetLanguage">
		<usage>取得当前语言</usage>
		<return>936 - 中文简体,1252 - 英文,950 - 中文繁体</return>
	</function>
	<function name="SetLanguage">
		<usage>切换语言</usage>
		<para>936 - 中文简体,1252 - 英文,950 - 中文繁体</para>
		<illu>请参见报表的演示页: 12.多语言(简繁英)</illu>
	</function>
	<function name="GetCtlName">
		<usage>取得组件名</usage>
		<return>组件名,如treelist、freeform</return>
	</function>
	<function name="IsComponentInstalled">
		<usage>某组件是否已经下载</usage>
		<para>组件bin包名,如BCV1、LuxForm</para>
		<return>true/false</return>
	</function>
	<function name="GetHandleType">
		<usage>取得句柄的类型</usage>
		<para>句柄</para>
		<memo>句柄是通过GetHandle( )函数获取的</memo>
		<return>串,可能为treelist、list、freeform、worksheet、validation、dom或空串</return>
	</function>
	<function name="GetMac">
		<usage>取得网卡Mac地址</usage>
		<return>串(如:"1c-6f-65-d6-b8-d1")</return>
	</function>
	<function name="GetIP">
		<usage>取得本机IP地址</usage>
		<return>串(如:"192.168.1.1")</return>
	</function>
	<function name="GetComputerName">
		<usage>取得客户端的计算机名</usage>
		<return>串</return>
	</function>
	<function name="GetPrinters">
		<usage>取得本地已安装的所有打印机名</usage>
		<return>以逗号分隔的打印机名,其中的第一个是默认打印机</return>
	</function>
	<function name="GetPrinterPapers">
		<usage>取得某打印机所支持的所有打印纸号</usage>
		<para>打印机名</para>
		<return>以逗号分隔的打印纸号,各种打印纸号所对应的打印纸名称及尺寸请参见“附录4:打印纸对照表”</return>
	</function>
	<function name="HttpPostLocalFile">
		<usage>通过Post简单上传一个本地文件</usage>
		<para>Http的URL, 可以是绝对或相对URL, 如果是相对URL,是相对于页面URL的</para>
		<para>本地全文件名</para>
		<return>0 - 表示有错误;  否则返回服务器返回的串</return>
		<memo>发起的Request中, Http Body 将是该文件的二进制内容</memo>
	</function>
	<function name="Download">
		<usage>文件下载</usage>
		<para>URL,支持Http、Ftp</para>
		<para>可选,格式为 isOpenDialog=[true/false]; isEcho=[true/false]; toDir=[?]; toFile=[?]; toString=[?]; Ext=[?]; uid=[?]; pwd=[?], 含义为:&lt;br&gt;
 &lt;b&gt;isOpenDialog&lt;/b&gt; - 是否打开选择本地文件或目录的对话框,有如下可选项, 默认是true:;&lt;br&gt;
    &lt;b&gt;true(或file)&lt;/b&gt; - 打开文件选择对话框;&lt;br&gt;
    &lt;b&gt;dir&lt;/b&gt; - 打开目录选择对话框;&lt;br&gt;
    &lt;b&gt;false&lt;/b&gt; - 不打开对话框;&lt;br&gt;
    备注:如果选择“dir”,那么必须指定“toFile”文件名参数,文件名可以是不含路径的纯文件名;&lt;br&gt;
 &lt;b&gt;Ext&lt;/b&gt; - 在对话框中允许选择的文件后缀,若有多个后缀则以逗号分隔,仅用于 isOpenDialog=true 时;&lt;br&gt;
 &lt;b&gt;toDir&lt;/b&gt; - 指定本地目录(绝对路径),如果路径不存在能自动创建,默认是空;&lt;br&gt;
 &lt;b&gt;toFile&lt;/b&gt; - 指定本地文件(如果isOpenDialog=dir, 可以是不含路径的文件名,否则必须是绝对路径),如果路径不存在能自动创建,默认是空,如果设定了toFile,通常就不需要设定toDir;&lt;br&gt;
 &lt;b&gt;uid&lt;/b&gt; - 登录的用户名;&lt;br&gt;
 &lt;b&gt;pwd&lt;/b&gt; - 用户口令;&lt;br&gt;
 &lt;b&gt;zip&lt;/b&gt; - Expand / ExpandAndDelete / 空串。Expand表示如果下载的文件是用Zip压缩的,则完成下载后自动解压; ExpandAndDelete表示解压后删除zip文件; 为空表示不做解压处理。默认是空串;&lt;br&gt;
 &lt;b&gt;toString 或 isToString&lt;/b&gt; - true/false,默认是false。当为 true 时,表示 http(或ftp) 返回的内容肯定是字符串,并将直接返回该串,而不再将内容保存到文件。此时不需要设定isOpenDialog、toDir、toFile等文件参数了。请参见下面的示例.&lt;br&gt;
 &lt;b&gt;isEcho&lt;/b&gt; - 下载后是否浮现一个提示,失败则浮现错误信息,默认是true;&lt;br&gt;
 &lt;b&gt;mode&lt;/b&gt; - synch/asynch, 同步/异步下载,默认是同步;&lt;br&gt;
 &lt;b&gt;isShowProgress&lt;/b&gt; - true/false, 是否显示进度条,仅用于异步,默认是false;&lt;br&gt;
 &lt;b&gt;cover&lt;/b&gt; - 当本地有同名文件时, overwrite/rename/nocover - 直接覆盖/文件自动改名/不覆盖, 仅用于isOpenDialog=false时, 默认是overwrite;&lt;br&gt;
 &lt;b&gt;offset&lt;/b&gt; - 数字,单位为字节,本地文件开始写入的偏移,常用于断点续传;&lt;br&gt;
			</para>
		<return>返回的是本地全文件名,如果是空串则表示失败、或者对话框中选择了“取消”;&lt;br&gt;
如果 isToString=true,则返回的是内容串;&lt;br&gt;
如果是zip解压的,则返回zip包中第一个文件在该目录的全文件名;&lt;br&gt;
如果 mode=asynch(异步下载),返回的是一个纯数字的任务ID号,用于 Download 事件,如果是空串表示对话框中选择了“取消”。
</return>
		<example>//下载一个mp3文件,下载前会打开目的文件对话框&lt;br&gt;
AF.func("download", "ftp://192.168.1.2:21/mymusic.mp3");&lt;br&gt;
//下载到指定文件,但仍会打开目的文件对话框&lt;br&gt;
AF.func("download", "http://localhost/hlp.htm \r\n toFile=d:\\my.htm; ext=htm,html,txt");&lt;br&gt;
//直接取得文本串&lt;br&gt;
var xml = AF.func("download", "http://localhost/text.xml \r\n toString=true");&lt;br&gt;
</example>
	<memo>如果是异步下载,在下载结束时将触发 Download 事件,并且在下载过程中会以1秒左右的间隔不停地发送 Download 事件,报告当前的下载进度、网速,详细请参见组件的"Download"事件文档.</memo>
	</function>
	<function name="CancelDownload">
		<usage>中断文件下载,仅用于异步下载</usage>
		<para>ID号,即 Download 函数的返回值</para>
		<para>为 DeleteFile / KeepFile。DeleteFile - 删除已下载到本地的这个不完整的文件; KeepFile - 保留这个文件。默认是DeleteFile。</para>
		<return>如果参数2为 DeleteFile , 则返回空串;如果参数2为 KeepFile,则返回本地文件名、文件总长度、已下载的文件长度,3者之间以回车符分隔</return>
	</function>
	<function name="PostMessage">
		<usage>Post一个自定义消息</usage>
		<detail>以Post方式发送一个消息,相当于在消息队列的末尾添加,在页面的OnEvent( )事件中将能收到一个名为 "UserEvent" 的消息。</detail>
		<para>格式为 p1=?;p2=?p3=?p4=?, 也允许忽略</para>
		<example>例如:&lt;br&gt;
function OnEvent(id, Event, p1, p2, p3, p4)&lt;br&gt;
{&lt;br&gt;
 if(Event == 'LooseFocus') {&lt;br&gt;
  if(p1=='0' &amp;&amp; p2=='price')&lt;br&gt;
   AF.func('PostMessage', 'p1=kk');&lt;br&gt;
 }&lt;br&gt;
 else if(Event == "UserEvent" &amp;&amp; p1=="kk") {&lt;br&gt;
  AF.func("SelectCell", "0 \r\n price");&lt;br&gt;
 }&lt;br&gt;
}
</example>
	</function>
	<function name="FileUtility">
		<usage>本地文件操作</usage>
		<para>操作串,可以为:&lt;br&gt;
 &lt;b&gt;isExists&lt;/b&gt; - 文件是否存在, 返回1/0;&lt;br&gt;
 &lt;b&gt;GetByte&lt;/b&gt; 或 &lt;b&gt;GetBytes&lt;/b&gt; - 返回文件长度(单位: 字节);&lt;br&gt;
 &lt;b&gt;GetKB&lt;/b&gt; - 返回文件长度(单位: KB);&lt;br&gt;
 &lt;b&gt;GetMB&lt;/b&gt; - 返回文件长度(单位: MB);&lt;br&gt;
 &lt;b&gt;GetCTime&lt;/b&gt; - 返回文件创建日期;&lt;br&gt;
 &lt;b&gt;GetMTime&lt;/b&gt; - 返回文件最后修改日期;&lt;br&gt;
 &lt;b&gt;delete&lt;/b&gt; - 删除文件, 返回1/0;&lt;br&gt;
 &lt;b&gt;GetFilenames / GetPathnames&lt;/b&gt; - 取得某个子目录下的某些文件名/含路径的全文件名;&lt;br&gt;
</para>
		<para>如果参数1是GetFilenames / GetPathnames, 本参数是路径的通配符,比如 "d:\docs\*.jpg" ;&lt;br&gt;
否则, 应该是全文件名&lt;br&gt;
</para>
		<return>根据参数1而定, 如果参数1是GetFilenames / GetPathnames, 返回的是以回车分隔的文件名/全文件名</return>
		<example>//返回回车分隔的文件名&lt;br&gt;
var s = AF.func("FileUtility", "GetPathnames \r\n d:\\docs\\*.jpg");
</example>
	</function>

	<function name="OpenFileDialog">
		<usage>打开文件或目录选择对话框</usage>
		<para>操作串,可以为:&lt;br&gt;
 &lt;b&gt;isDir&lt;/b&gt; - true/fale - 目录选择对话框 / 文件选择对话框,默认是 false;&lt;br&gt;
如果 isDir = true, 还可以有如下选项&lt;br&gt;
 &lt;b&gt;Title&lt;/b&gt; - 自定义对话框的标题;&lt;br&gt;
 &lt;b&gt;Dir&lt;/b&gt; - 初始选择、展开的目录;&lt;br&gt;
 &lt;b&gt;Root&lt;/b&gt; - 目录树的根节点, 可以是 "Desktop" 或 "Driver", 默认是 "Desktop" ;&lt;br&gt;
如果 isDir = false, 则可以有如下选项:&lt;br&gt;
 &lt;b&gt;isOpen&lt;/b&gt; - 用途, true/false - 用于打开/用于保存, 默认是true;&lt;br&gt;
 &lt;b&gt;FileType&lt;/b&gt; - 能打开的文件类型(后缀),多种类型之间以逗号分隔, 例如串 "jpg,bmp,*", 默认是 "*";&lt;br&gt;
 &lt;b&gt;FileName&lt;/b&gt; - 初始选择的文件名;&lt;br&gt;
</para>
		<return>全文件名</return>
		<example>var s = AF.func("OpenFileDialog", "isDir=true; Title=请选择目录:");</example>
	</function>



	<function name="GetChar">
		<usage>取得某个字符编码所对应的文字</usage>
		<para>字符的ASC码,如果是中文,则为utf-16的宝马</para>
		<example>例如:&lt;br&gt;
var chr = AF.func("GetChar", "20013");  //返回“中”&lt;br&gt;
var chr = AF.func("GetChar", "97");  //返回“a”&lt;br&gt;
</example>
	</function>
	<function name="ScreenShot">
		<usage>取得当前屏幕截图</usage>
		<para>可选的串,格式为return=[?]; range=[?]; type=[?];precision=[?];isgray=[?];blackwhit=[?];threshold=[?], 其含义如下:&lt;br&gt;
 &lt;b&gt;return&lt;/b&gt; - base64/filename, 返回 Base64大串/返回文件名,默认是Base64;&lt;br&gt;
 &lt;b&gt;range&lt;/b&gt; - browser/screen/control,  仅截取浏览器界面/截取整个屏幕/仅截取当前控件部分,默认是browser;&lt;br&gt;
 &lt;b&gt;type&lt;/b&gt; - jpg/gif/bmp/png/tif, 图片格式,默认是jpg;&lt;br&gt;
 &lt;b&gt;precision&lt;/b&gt; - 0到100的数值,仅用于jpg, 含义为jpg的清晰度,数字越大越清晰,默认是75;&lt;br&gt;
 &lt;b&gt;isGray&lt;/b&gt; - true/false, 灰度/彩色,默认是false;&lt;br&gt;
 &lt;b&gt;BlackWhite&lt;/b&gt; - true/false, 黑白/彩色,默认是false;&lt;br&gt;
 &lt;b&gt;threshold&lt;/b&gt; - 1到100之间, 仅用于黑白,数字越小图像越白,默认是70;&lt;br&gt;
</para>
		<return>根据参数,返回文件名或Base64串</return>
		<example>var chr = AF.func("screenshot", "return=base64;isgray=true;precision=60");</example>
	</function>
	<function name="ShellExecute">
		<usage>使用本地操作系统的关联的应用程序, 打开本地的某个文件</usage>
		<para>全文件名</para>
		<return>1/0 - 成功/失败</return>
		<memo>如下 5 种后缀的文件是无法打开的: exe、bat、com、msi、reg</memo>
		<example>AF.func("ShellExecute", "d:\\photo.jpg");</example>
	</function>
</category>
</functions>