8a1ad1c4c264f2d0dfeb793e1ab818d61e82c7ad.svn-base
17.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
<?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串是类似这种更简洁的格式:<br>
{"id":"k203", price:"2230.12", "dept":"fin01"}<br>
如果XML是多条记录,则JSON是数组:<br>
[<br>
{"id":"k203", price:"2230.12", "dept":"fin01"},<br>
{"id":"s508", price:"33.00", "dept":"fin02"}<br>
]
</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";<br>
s += "id=4002; text=时髦头巾; icon=treelist/buttons.zip#302.ico; detail=优惠直销";<br>
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>将串存入本地缓存,缓存的内容在<font color=red>全局有效、且和页面无关(即所有页面均能访问到)</font></detail>
<para>ID, 可以是任意串</para>
<para>内容串,如果是空串,则表示从缓存中移除该ID的内容</para>
<para>可选,格式为Persist=[?];TimeOut=[?D/H/M/S], 其中Persist用于指定保存到何处,格式如下:<br>
1.Persist = <b>Memory</b>, 默认,表示将内容缓存于内存中,当浏览器进程关闭后内容将遗失.<br>
2.Persist = <b>File</b>, 将内容保存在本地文件(在BC目录下的 cache.data 文件).<br>
TimeOut表示如果超过一段时间无访问,将自动删除该缓存,格式如下:<br>
TimeOut = <b>?D/?H/?M/?S</b> - 时间间隔,n天/n小时/n分钟/n秒(D/H/M/S分别表示天数、小时、分钟、秒).</para>
<example>
AF.func("SaveCache", "My.Key1 \r\n MyContent1"); //保存到内存<br>
AF.func("SaveCache", "My.Key1 \r\n MyContent1 \r\n Persist=File"); //保存到文件,永久有效<br>
AF.func("SaveCache", "My.Key1 \r\n MyContent1 \r\n TimeOut=3M"); //保存到内存,有效期为3分钟<br>
AF.func("SaveCache", "My.Key1"); //清除ID为 "My.Key1" 的缓存<br>
</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=[?],含义如下:<br>
<b>Dir</b> - 本地用于缓存的目录名,如果为空,则表示 BC 目录下的 Temp 目录 (服务器版则指向后端的临时目录);<br>
<b>isCreateTempFile</b> - true/false, true 表示在目录中创建一个唯一的文件, 并返回文件名;<br>
<b>Ext</b> - 该文件的后缀, 默认是"tmp";<br>
<b>DeleteEarlierFile</b> - 删除该目录下 n 小时(或分)前的文件, h/m分别表示时/分, 例如 DeleteEarlierFile=3h 表示删除3个小时前的文件; 如果为空,表示不执行该功能;<br>
<b>KeepMB</b> - 数字,单位是兆比, 删除该目录下最早的文件, 使文件总尺寸不超过 n 兆比; 如果为空,表示不执行该功能;<br>
</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=[?], 含义为:<br>
<b>isOpenDialog</b> - 是否打开选择本地文件或目录的对话框,有如下可选项, 默认是true:;<br>
<b>true(或file)</b> - 打开文件选择对话框;<br>
<b>dir</b> - 打开目录选择对话框;<br>
<b>false</b> - 不打开对话框;<br>
备注:如果选择“dir”,那么必须指定“toFile”文件名参数,文件名可以是不含路径的纯文件名;<br>
<b>Ext</b> - 在对话框中允许选择的文件后缀,若有多个后缀则以逗号分隔,仅用于 isOpenDialog=true 时;<br>
<b>toDir</b> - 指定本地目录(绝对路径),如果路径不存在能自动创建,默认是空;<br>
<b>toFile</b> - 指定本地文件(如果isOpenDialog=dir, 可以是不含路径的文件名,否则必须是绝对路径),如果路径不存在能自动创建,默认是空,如果设定了toFile,通常就不需要设定toDir;<br>
<b>uid</b> - 登录的用户名;<br>
<b>pwd</b> - 用户口令;<br>
<b>zip</b> - Expand / ExpandAndDelete / 空串。Expand表示如果下载的文件是用Zip压缩的,则完成下载后自动解压; ExpandAndDelete表示解压后删除zip文件; 为空表示不做解压处理。默认是空串;<br>
<b>toString 或 isToString</b> - true/false,默认是false。当为 true 时,表示 http(或ftp) 返回的内容肯定是字符串,并将直接返回该串,而不再将内容保存到文件。此时不需要设定isOpenDialog、toDir、toFile等文件参数了。请参见下面的示例.<br>
<b>isEcho</b> - 下载后是否浮现一个提示,失败则浮现错误信息,默认是true;<br>
<b>mode</b> - synch/asynch, 同步/异步下载,默认是同步;<br>
<b>isShowProgress</b> - true/false, 是否显示进度条,仅用于异步,默认是false;<br>
<b>cover</b> - 当本地有同名文件时, overwrite/rename/nocover - 直接覆盖/文件自动改名/不覆盖, 仅用于isOpenDialog=false时, 默认是overwrite;<br>
<b>offset</b> - 数字,单位为字节,本地文件开始写入的偏移,常用于断点续传;<br>
</para>
<return>返回的是本地全文件名,如果是空串则表示失败、或者对话框中选择了“取消”;<br>
如果 isToString=true,则返回的是内容串;<br>
如果是zip解压的,则返回zip包中第一个文件在该目录的全文件名;<br>
如果 mode=asynch(异步下载),返回的是一个纯数字的任务ID号,用于 Download 事件,如果是空串表示对话框中选择了“取消”。
</return>
<example>//下载一个mp3文件,下载前会打开目的文件对话框<br>
AF.func("download", "ftp://192.168.1.2:21/mymusic.mp3");<br>
//下载到指定文件,但仍会打开目的文件对话框<br>
AF.func("download", "http://localhost/hlp.htm \r\n toFile=d:\\my.htm; ext=htm,html,txt");<br>
//直接取得文本串<br>
var xml = AF.func("download", "http://localhost/text.xml \r\n toString=true");<br>
</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>例如:<br>
function OnEvent(id, Event, p1, p2, p3, p4)<br>
{<br>
if(Event == 'LooseFocus') {<br>
if(p1=='0' && p2=='price')<br>
AF.func('PostMessage', 'p1=kk');<br>
}<br>
else if(Event == "UserEvent" && p1=="kk") {<br>
AF.func("SelectCell", "0 \r\n price");<br>
}<br>
}
</example>
</function>
<function name="FileUtility">
<usage>本地文件操作</usage>
<para>操作串,可以为:<br>
<b>isExists</b> - 文件是否存在, 返回1/0;<br>
<b>GetByte</b> 或 <b>GetBytes</b> - 返回文件长度(单位: 字节);<br>
<b>GetKB</b> - 返回文件长度(单位: KB);<br>
<b>GetMB</b> - 返回文件长度(单位: MB);<br>
<b>GetCTime</b> - 返回文件创建日期;<br>
<b>GetMTime</b> - 返回文件最后修改日期;<br>
<b>delete</b> - 删除文件, 返回1/0;<br>
<b>GetFilenames / GetPathnames</b> - 取得某个子目录下的某些文件名/含路径的全文件名;<br>
</para>
<para>如果参数1是GetFilenames / GetPathnames, 本参数是路径的通配符,比如 "d:\docs\*.jpg" ;<br>
否则, 应该是全文件名<br>
</para>
<return>根据参数1而定, 如果参数1是GetFilenames / GetPathnames, 返回的是以回车分隔的文件名/全文件名</return>
<example>//返回回车分隔的文件名<br>
var s = AF.func("FileUtility", "GetPathnames \r\n d:\\docs\\*.jpg");
</example>
</function>
<function name="OpenFileDialog">
<usage>打开文件或目录选择对话框</usage>
<para>操作串,可以为:<br>
<b>isDir</b> - true/fale - 目录选择对话框 / 文件选择对话框,默认是 false;<br>
如果 isDir = true, 还可以有如下选项<br>
<b>Title</b> - 自定义对话框的标题;<br>
<b>Dir</b> - 初始选择、展开的目录;<br>
<b>Root</b> - 目录树的根节点, 可以是 "Desktop" 或 "Driver", 默认是 "Desktop" ;<br>
如果 isDir = false, 则可以有如下选项:<br>
<b>isOpen</b> - 用途, true/false - 用于打开/用于保存, 默认是true;<br>
<b>FileType</b> - 能打开的文件类型(后缀),多种类型之间以逗号分隔, 例如串 "jpg,bmp,*", 默认是 "*";<br>
<b>FileName</b> - 初始选择的文件名;<br>
</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>例如:<br>
var chr = AF.func("GetChar", "20013"); //返回“中”<br>
var chr = AF.func("GetChar", "97"); //返回“a”<br>
</example>
</function>
<function name="ScreenShot">
<usage>取得当前屏幕截图</usage>
<para>可选的串,格式为return=[?]; range=[?]; type=[?];precision=[?];isgray=[?];blackwhit=[?];threshold=[?], 其含义如下:<br>
<b>return</b> - base64/filename, 返回 Base64大串/返回文件名,默认是Base64;<br>
<b>range</b> - browser/screen/control, 仅截取浏览器界面/截取整个屏幕/仅截取当前控件部分,默认是browser;<br>
<b>type</b> - jpg/gif/bmp/png/tif, 图片格式,默认是jpg;<br>
<b>precision</b> - 0到100的数值,仅用于jpg, 含义为jpg的清晰度,数字越大越清晰,默认是75;<br>
<b>isGray</b> - true/false, 灰度/彩色,默认是false;<br>
<b>BlackWhite</b> - true/false, 黑白/彩色,默认是false;<br>
<b>threshold</b> - 1到100之间, 仅用于黑白,数字越小图像越白,默认是70;<br>
</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>