func_report.xml
69.5 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
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
<?xml version='1.0' encoding='utf-8' ?>
<functions>
<category name="基本">
<function name="Build 或 ReadSheet">
<usage>打开一张报表</usage>
<para>报表的URL(相对或绝对),或者是Report的XML串</para>
</function>
<function name="Calc 或 Fill">
<usage>执行报表的计算,包括数据源的取数填充</usage>
<para>可选,格式为 mode=[?];range=[?], 其含义分别为: <br>
<b>mode</b> - 计算模式,值可以为 synch、asynch, 分别表示同步计算、异步计算,默认是同步计算。异步模式用于改善在数据源取数时服务器端响应缓慢而导致的界面滞涩;<br>
<b>range</b> - 计算范围,值可以为:<br>
full - 表示计算全部工作表,默认;<br>
current - 仅计算当前工作表;<br>
工作表序号(从0开始计数) - 指定计算某工作表,也可以是以逗号分隔的多个工作表,比如 “3,4,0” 表示顺序计算第四、第五、第一个工作表</para>
<example>AF.func("calc", "mode=asynch;range=current");</example>
<memo>如果是异步计算,js不应该再执行针对AF的函数了,应该在“Calced”事件中处理后续事务,否则异步将失去意义(<font color=red>非常重要</font>);</memo>
<illu>请参见演示页: 10.自定义函数、以及大量的数据源相关的demo页</illu>
</function>
<function name="GetFileXML">
<usage>取得当前报表的XML串</usage>
<para>可选,格式是 isSaveCalculateResult=[?], 值可以为<br>
<b>true</b> - 连同数据源填入的数据一起保存;<br>
<b>false</b> - 清除数据源填入的数据;<br>
<b>default</b> - 按照报表模版中默认的选项(在报表属性中)</para>
<return>XML串</return>
<memo>1.Supcan Report是以XML保存的,而不是二进制;<br>2.该函数取得报表的XML后,通常需要再通过Ajax发送给服务器,用以保存报表;</memo>
<example>AF.func("GetFileXML", "");<br>
AF.func("GetFileXML", "isSaveCalculateResult=true");
</example>
<illu>请参见演示页: 11.动态创建</illu>
</function>
<function name="GetFileURL">
<usage>取得上次打开(Build)的报表的文件名, 包括URL</usage>
<return>文件名或URL,如果上次是通过一个XML大串Build的,那么返回串“@XML”</return>
</function>
<function name="SubscribeEvent">
<usage>预订事件</usage>
<para>需要预订的事件有:CurSelChanged、Clicked、DblClicked、EditChanged、Editing、CellPropChanged,其含义分别是:当前单元格切换、鼠标点击单元格、鼠标双击单元格、单元格或文本框的内容输入已更新、单元格或文本框的输入框已打开并且内容有修改、工具箱中单元格的某些属性被修改</para>
<example>AF.func("SubscribeEvent", "CurSelChanged, Clicked");</example>
<memo>BeforeCellPropChanged不需要单独预订,它将跟随CellPropChanged事件</memo>
<illu>请参见演示页: 24.高级功能</illu>
</function>
<function name="CallFunc">
<usage>调用工具条上的功能</usage>
<para>功能号</para>
<para>取决于功能号</para>
<return>取决于功能号, 通常为: 1 - 成功, 0 - 失败</return>
<memo>功能号参见"工具条功能号"章节</memo>
<illu>请参见演示页: 1.体验硕正报表、10.自定义函数、19.中心数据源、34.左右分页打印</illu>
</function>
</category>
<category name="数据源">
<function name="SetSource (用途1)">
<usage>设置中心数据源编目的URL</usage>
<para>中心数据源编目的URL(相对或绝对)</para>
<example>AF.func("setSource", "../center/dscenter.aspx");<br>
AF.func("Build", "reports/myreport1.xml");</example>
<memo>1.中心数据源的编目URL是一次设置、全局(进程)有效的;<br>
2.建议在第一次打开报表前执行;<br>
3.一旦设置了URL,报表数据源对话框中就不需要用户自己输入URL了:<img src="report3.png"><br>
4.建议该URL返回的XML/JSON数据支持<a href="pub.htm#Tag604" target=_blank>SoapLike</a>异常包</memo>
<illu>请参见演示页: 19.中心数据源</illu>
</function>
<function name="SetSource (用途2)">
<usage>设置某临时数据源的URL</usage>
<para>数据源ID</para>
<para>URL(相对或绝对); 对于XML/JSON数据源,也允许是直接的XML大串</para>
<para>可选,格式为 Para2=[?], 其含义为:<br>
<b>Para2</b> - 可以为data/URL, 表示声明上面的“参数2”是纯数据串还是一个URL,仅用于TXT格式的数据,因为TXT格式的数据有时候很难自动判断到底是数据还是URL。如果不声明,系统优先判断为URL .<br>
</para>
<example>AF.func("Build", "reports/myreport1.xml");><br>
AF.func("setSource", "ds1 \r\n dscenter/serv1.aspx");</example>
<memo>1.必须先打开报表,再执行本函数,否则无效,这一点和中心数据源刚好相反;<br>
2.建议该URL返回的XML/JSON数据支持<a href="pub.htm#Tag604" target=_blank>SoapLike</a>异常包</memo>
<illu>请参见临时数据源的所有演示页</illu>
</function>
<function name="SetSource (用途3)">
<usage>强制更改某中心数据源的dataURL</usage>
<para>数据源ID</para>
<para>URL(相对或绝对)</para>
<example>AF.func("setSource", "ds1 \r\n dscenter/serv1.aspx");</example>
</function>
<function name="GetSource">
<usage>取得数据源的URL</usage>
<para>数据源ID</para>
<memo>
1.如果报表中只有一个数据源,参数(ID)可以忽略;<br>
2.如果该数据源是中心数据源,那么将返回它的dataURL;</memo>
<return>URL串</return>
<example>var url = AF.func("GetSource", "ds1");</example>
</function>
<function name="GetSources">
<usage>取得所有数据源的ID</usage>
<return>串,多个ID间以回车分隔. 例如“ds1,ds2,ds3”</return>
</function>
<function name="GetSourceInfo">
<usage>取得某数据源的某些属性</usage>
<para>数据源ID<br>注: 如果是复合XML数据源的子节点,应该命名为诸如 "ds1\node1" 这样的串(注意:在js中,应该写成"ds1\\node1")</para>
<para>属性名,可以是: <br>
<b>CenterID</b> - 中心数据源编目中的ID,仅用于中心数据源; <br>
<b>WSFunction</b> - Web Service的方法(Method)名,仅用于Web Service类型的临时数据源;<br>
<b>FieldID</b> - 取得各数据项(列)的ID,以回车分隔;<br>
<b>FieldText</b> - 取得各数据项(列)的标题文字,以回车分隔;<br>
<b>AllFieldID</b> - 取得全部 (包括不显示的) 数据项(列)的ID,以回车分隔;<br>
<b>AllFieldText</b> - 取得全部 (包括不显示的) 数据项(列)的标题文字,以回车分隔;<br>
<b>para</b> - 可变参数名,以回车分隔;<br>
<b>paraText</b> - 可变参数的含义,以回车分隔;<br>
</para>
<return>串</return>
</function>
<function name="SetParas (语法1)">
<usage>设置某数据源的参数的值</usage>
<para>数据源ID</para>
<para>参数2、参数3...参数n,根据该数据源具体的定义</para>
<example>AF.func("SetParas", "ds1 \r\n" + var1 +"\r\n"+ var2);</example>
</function>
<function name="SetParas (语法2)">
<usage>设置某数据源的参数的值</usage>
<para>数据源ID</para>
<para>XML/JSON串、或类似"prop1=value1; prop2=value2; ..."的属性串</para>
<example>AF.func("SetParas", "ds1 \r\n year=2012; month=2");</example>
</function>
<function name="SetParasEx">
<usage>强制设定数据源的附加参数</usage>
<para>参数串,例如"OrgId=2001&Dept=33"</para>
<memo>1.全局有效;对中心数据源和临时数据源都有效;<br>
2.这些参数将附加在数据源取数URL的后面,也就是说URL将被重新拼装;<br>
3.如果原URL中已经包含同名的参数,将以该函数设置的为准;<br>
</memo>
</function>
<function name="GetParaNames">
<usage>取得某数据源的参数名</usage>
<para>数据源ID</para>
<return>参数名,若有多个参数,则以回车分隔</return>
</function>
<function name="SetDSColInfo">
<usage>设置或添加某临时数据源的某个数据列信息</usage>
<para>数据源ID<br>注: 如果是复合XML数据源的子节点,应该命名为诸如 "ds1\node1" 这样的串(注意:在js中,应该写成"ds1\\node1")</para>
<para>列名</para>
<para>列标题名</para>
<para>数据类型</para>
</function>
<function name="DeleteDSCol">
<usage>删除某临时数据源的某个数据列</usage>
<para>数据源ID<br>注: 如果是复合XML数据源的子节点,应该命名为诸如 "ds1\node1" 这样的串(注意:在js中,应该写成"ds1\\node1")</para>
<para>列名</para>
</function>
<function name="NewDS">
<usage>新建中心数据源</usage>
<para>数据源ID</para>
<para>中心数据源的ID号</para>
</function>
<function name="SynchCenterDS">
<usage>强制中心数据源和后端同步</usage>
<detail>强制中心数据源和后端同步,用于清理中心数据源的自定义信息,例如:列是否显示、列显示顺序、排序、超链接等.</detail>
</function>
<function name="GetWorkSheetNameOfDs">
<usage>取得某数据源能够被用于哪些工作表</usage>
<detail>取得某数据源能够被用于哪些工作表,用于在数据源对话框中限制了数据源和工作表对应关系的情况</detail>
<return>工作表名, 若有多个工作表则以逗号分隔</return>
</function>
<function name="GetDsOfWorkSheet">
<usage>取得工作表能使用哪些数据源</usage>
<detail>取得工作表能使用哪些数据源,用于在数据源对话框中限制了数据源和工作表对应关系的情况</detail>
<para>可选,工作表名或工作表顺序号,从0开始计数。如果不指定工作表,则默认为当前工作表</para>
<return>数据源的ID, 若有多个数据源则以逗号分隔</return>
</function>
<function name="GetColsOdDs">
<usage>取得某数据源对应到表格中的各个列</usage>
<detail>取得某数据源对应到表格中的各个列, 即取得 =datarow( ) 函数横向填充的各个列的位置</detail>
<para>数据源ID</para>
<return>以逗号分隔的各个列的序号 (序号从0开始计数)</return>
</function>
<function name="GetDSXML">
<usage>取得某数据源的XML描述串</usage>
<para>数据源ID</para>
<return>XML串</return>
</function>
<function name="SetDSXML">
<usage>根据数据源的XML描述串,动态更改或添加数据源</usage>
<para>XML描述串</para>
<return>1/0 - 成功/失败</return>
<memo>1.如果该数据源不存在,则会自动添加;<br>
2.该函数常用于动态更改数据源的内容,比如动态添加数据列. 由于XML结构比较复杂,建议借助全局函数中的 "DOM_函数" 来处理;<br>
</memo>
</function>
<function name="GetUsedDS">
<usage>取得工作表的计算公式中使用了哪些数据源</usage>
<para>可选,工作表名或工作表顺序号,从0开始计数; -1表示所有工作表;如果不指定工作表,则默认为当前工作表</para>
<return>数据源的ID, 若有多个数据源则以逗号分隔</return>
</function>
<function name="ParseUsedDS">
<usage>取得工作表的计算公式中使用了哪些数据源,包括参数</usage>
<para>可选,工作表名或工作表顺序号,从0开始计数; -1表示所有工作表;如果不指定工作表,则默认为当前工作表</para>
<return>串,格式规定如下:<br>
1.数据源的ID和参数, 相互之间以Tab(即\t)分隔,参数是原参数,即有可能是带引号的;<br>
2.若有多种不同数据源及参数组合,则相互以回车符(\r\n)分隔;</return>
</function>
</category>
<category name="行列">
<function name="GetRows">
<usage>取得总行数</usage>
<return>数字</return>
</function>
<function name="GetCols">
<usage>取得总列数</usage>
<return>数字</return>
</function>
<function name="InsertRows">
<usage>插入行</usage>
<para>插入处行号(从0开始计数,-1表示从末尾添加)</para>
<para>可选, 插入行数,默认1</para>
<para>可选, true/false(或1/0、yes/no),分别表示前插/后插,默认前插</para>
<return>1-成功,空串-失败</return>
</function>
<function name="InsertCols">
<usage>插入列</usage>
<para>插入处列号(从0开始计数,-1表示从末尾添加),或列名(如A、B、C..)</para>
<para>可选, 插入列数,默认1</para>
<para>可选, true/false(或1/0、yes/no),分别表示前插/后插,默认前插</para>
<return>1-成功,空串-失败</return>
</function>
<function name="DeleteRows">
<usage>删除行</usage>
<para>开始删除的行号(从0开始计数)</para>
<para>行数,-1表示删除后面所有行</para>
<return>1-成功,空串-失败</return>
</function>
<function name="DeleteCols">
<usage>删除列</usage>
<para>开始删除的列号(从0开始计数),或列名(如A、B、C..)</para>
<para>列数,-1表示删除后面所有列</para>
<return>1-成功,空串-失败</return>
</function>
<function name="IsRowHide">
<usage>某行是否被隐藏</usage>
<para>行号(从0开始计数)</para>
<return>1/0 - 是/否</return>
</function>
<function name="HideRow">
<usage>隐藏行</usage>
<para>行号(从0开始计数)</para>
<para>可选,数量,默认1</para>
<para>可选,true/false - 隐藏/解除隐藏,默认true</para>
</function>
<function name="IsColHide">
<usage>某列是否被隐藏</usage>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<return>1/0 - 是/否</return>
</function>
<function name="HideCol">
<usage>隐藏列</usage>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<para>可选,数量,默认1</para>
<para>可选,true/false - 隐藏/解除隐藏,默认true</para>
</function>
<function name="GetRowHeight">
<usage>取得某行高</usage>
<para>行号(从0开始计数)</para>
<return>数字,单位:像素数</return>
</function>
<function name="SetRowHeight">
<usage>设置某行高</usage>
<para>行号(从0开始计数)</para>
<para>数字,单位:像素数,范围:0-2000</para>
</function>
<function name="GetColWidth">
<usage>取得某列宽</usage>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<return>数字,单位:像素数</return>
</function>
<function name="SetColWidth">
<usage>设置某列宽</usage>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<para>数字,单位:像素数,范围:0-2000</para>
</function>
<function name="GetRowProp">
<usage>取某行的其它属性</usage>
<para>行号(从0开始计数)</para>
<para>
<b>ds</b> - 该行是否数据源动态插入的行; <br>
<b>print</b> - 该行是否打印; <br>
<b>pageBreak</b> - 在该行处是否强制分页;<br>
<b>pageNumber</b> - 强制分页的页码;</para>
<return>对于pageNumber属性,返回页码数字;其他返回 1/0 - 是/否, 空串表示失败</return>
<memo>数据源动态插入的行(行号在左标尺以深蓝色显示),在模版保存是会自动被删除</memo>
</function>
<function name="SetRowProp">
<usage>设置某行的某些属性</usage>
<para>行号(从0开始计数)</para>
<para>
<b>ds</b> - 该行是否数据源动态插入的行; <br>
<b>print</b> - 该行是否打印; <br>
<b>pageBreak</b> - 在该行处是否强制分页;<br>
<b>pageNumber</b> - 强制分页的页码;
</para>
<para>对于pageNumber属性,是页码数字;请他: true / false - 是 / 否</para>
<return>1/0 - 成功/失败</return>
<memo>不建议强制设置 ds 属性</memo>
</function>
</category>
<category name="单元格命名相关函数">
<function name="GetCellName">
<usage>根据行列号得到单元名</usage>
<para>行号(从0开始计数)</para>
<para>列号(从0开始计数)</para>
<return>串 - 单元格名,如"D9"、"AA2</return>
<example>AF.func("GetCellName", "4 \r\n 0"); 返回 A5</example>
</function>
<function name="GetCellRow">
<usage>根据单元名得到行号</usage>
<para>单元名</para>
<return>行号</return>
<example>AF.func("GetCellRow", "A5"); 返回 4</example>
</function>
<function name="GetCellCol">
<usage>根据单元名得到列号</usage>
<para>单元名</para>
<return>列号</return>
<example>AF.func("GetCellCol", "A5"); 返回 0</example>
</function>
</category>
<category name="单元格">
<function name="SelectCell(用途1)">
<usage>选取焦点单元、或嵌入对象(如文本框)</usage>
<para>行号(从0开始计数)</para>
<para>列号(从0开始计数)</para>
<para>可选, 至行号, -1表示到末行</para>
<para>可选, 至列号, -1表示到末列</para>
<para>可选, 可以为input, 表示打开输入框,直接进入编辑状态</para>
<illu>请参见演示页: 1.体验硕正报表、36.套打(一)</illu>
<return>true/false - 成功/失败</return>
<memo>参数也不一定要完全按照上述规定,语法其实是比较灵活的,请参见下面的示例:</memo>
<example>AF.func("SelectCell", "A5"); //选取A5单元格<br>
AF.func("SelectCell", "A5 \r\n B8"); //选取从A5单元格到B8单元格之间的区域<br>
AF.func("SelectCell", "5 \r\n C"); //C 是列名, 表示第三列<br>
AF.func("SelectCell", "B5 \r\n -1 \r\n -1"); //选取从B5单元格到报表右下角整个区域<br>
AF.func("SelectCell", "Addr \r\n DKP"); //选取从别名为"Addr"的单元格到别名为"DKP"之间的区域
AF.func("SelectCell", "Addr \r\n input"); //选取别名为"Addr"的单元格或文本框,然后直接打开输入
</example>
</function>
<function name="GetCurrentCell">
<usage>取得当前焦点单元格</usage>
<para>可选,顺序号(从0开始计数),默认是0. 如果当前焦点是一块区域,可以用顺序号参数逐个取得单元格名,循环顺序是逐行逐列</para>
<return>串,单元格名,如 "D4"、"E4"; 如果当前选中的是内嵌对象(如文本框),则返回它的别名</return>
</function>
<function name="GetCurrentCells">
<usage>取得当前焦点单元格</usage>
<return>串,包含左上、右下的2个单元格名,如 "D4:E5"、"E4:E4", 注:"E4:E4"是一个单元格; 如果当前选中的是内嵌对象(如文本框),则返回以逗号分隔的别名</return>
</function>
<function name="EnsureVisible">
<usage>自动滚动到让某单元格可见</usage>
<para>行号(从0开始计数)</para>
<para>列号(从0开始计数)</para>
<return>true/false - 成功/失败</return>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名</memo>
</function>
<function name="GetCellData">
<usage>取得某单元的内容或计算结果</usage>
<detail>取得某单元的内容,或者计算公式的值</detail>
<para>行号(从0开始计数)</para>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<return>串</return>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名、或文本框的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
<example>var s1 = AF.func("getCellData", "3 \r\n 9");<br>
var s2 = AF.func("getCellData", "B7");<br>
var s3 = AF.func("getCellData", "B7@Sheet2"); //指定取第二个工作表<br>
var s4 = AF.func("getCellData", "MyTh"); //"MyTh"是别名<br>
</example>
</function>
<function name="SetCellData">
<usage>设置某单元内容、或公式</usage>
<detail>设置某单元的内容、或计算公式(计算公式以等号开头)</detail>
<para>行号(从0开始计数)</para>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<para>串</para>
<memo>.也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名、或文本框的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格);<br><br>
<font color=red>严重警告:</font>参数2和参数3之间不得留有多余空格,否则结果将不是你所期望的,例如:<br> AF.func("SetCellData", "C5 \r\n "+ vCity); //执行结果是左侧有多余空格</memo>
</function>
<function name="GetCellDataEx">
<usage>取得某单元的内容或计算结果(Checkbox优先)</usage>
<para>同 GetCellData</para>
<return>串</return>
<memo>和 GetCellData 函数唯一的差别是:如果单元格是CheckBox,那么返回的是 0 或 1,否则和GetCellData一样</memo>
</function>
<function name="SetCellDataEx">
<usage>设置某单元内容、或公式(CheckBox优先)</usage>
<para>同 SetCellData</para>
<memo>和 SetCellData 函数唯一的差别是:如果单元格是CheckBox、并且最后一个参数是 0 或 1,那么就设置这个CheckBox而不是修改文字.</memo>
</function>
<function name="GetCellText">
<usage>取得某单元的显示内容</usage>
<para>行号(从0开始计数)</para>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<return>串</return>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名、或文本框的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
<example>var s1 = AF.func("getCellText", "3 \r\n 9");<br>
var s2 = AF.func("getCellText", "B7");<br>
var s3 = AF.func("getCellText", "B7@Sheet2"); //指定取第二个工作表<br>
var s4 = AF.func("getCellText", "MyTh"); //"MyTh"是别名<br>
</example>
</function>
<function name="GetCellFormula">
<usage>取得某单元的计算公式</usage>
<para>行号(从0开始计数)</para>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<return>串, 空串表示非计算公式</return>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名、或文本框的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
</function>
<function name="GetCellProp(用途1)">
<usage>取得某单元格的属性</usage>
<para>行号(从0开始计数)</para>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<para>属性名,可以是自定义属性,也可以和XML文件中的一致,大约有20种,如TextColor, BgColor, formula(输入的公式), datatype, decimal, isRound(是否四舍五入), isThousandSeparat(千位符), isProtected(保护), align, vAlign, fontIndex, leftBorder, topBorder, leftBorderColr, topBorderColor, isCheckbox, isChecked,
checkboxGroup, Alias(别名), HRef(超链接), Tip, Attr(指标属性)、crosstabRowDir(交叉表的行值)、crosstabColDir(交叉表的列值)、Arrow(左侧标记色)等。</para>
<return>内容串(透明的背景色用“T”表示)</return>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名、或文本框的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
</function>
<function name="SetCellProp(用途1)">
<usage>设置某单元格的属性</usage>
<para>行号(从0开始计数)</para>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<para>属性名, 和GetCellProp( )同</para>
<para>值串(透明的背景色请用“T”表示)</para>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名、或文本框的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
<example>AF.func("SetCellProp", "C6 \r\n BgColor \r\n T");<br>AF.func("SetCellProp", "C6 \r\n TextColor \r\n Red");<br>AF.func("SetCellProp", "C6 \r\n CustormerID \r\n 33801"); //自定义属性</example>
</function>
<function name="FindCell">
<usage>根据表达式查找单元格</usage>
<para>表达式串,表达式中可以含变量:data(表示输入的内容或计算结果)、formula(输入的公式)、alias(别名),其它变量表示自定义属性.</para>
<return>以逗号分隔的单元名,如"D3"、"K2,K4"</return>
<example>AF.func("FindCell", "left(formula,1)='='"); //取得所有输入了公式的单元格<br>
AF.func("FindCell", "left(alias, 3)='mpc')); //取得别名以“mpc”开头的单元格<br>
AF.func("FindCell", "price=33"); //自定义属性"price"为33的单元格</example>
</function>
<function name="CloneArea">
<usage>克隆区域</usage>
<detail>克隆某个区域到一个新的区域</detail>
<para>左上单元格行号(从0开始计数)</para>
<para>左上单元格列号(从0开始计数),或列名(如 A、K、AC)</para>
<para>右下单元格行号(从0开始计数)</para>
<para>右下列号(从0开始计数),或列名(如 A、K、AC)</para>
<para>格式为 : row=[?];col=[?], row、col至少要定义一个,含义为:<br>
row - 克隆到从该行开始的新区域,如果行不够,则自动向下扩展;<br>
col - 克隆到从该列开始的新区域,如果列不够,则自动向右扩展;<br>
</para>
<return>新区域的左上角、右下角单元格名,以冒号(:)分隔。如果是空串,则表示失败,失败原因通常是参数有错误、区域有交集</return>
<memo>1.也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;<br>
2.新、原区域不得有交集;
</memo>
<example>如下函数是同一个意思:<br>AF.func("CloneArea", "C6:F7\r\nrow=30");<br>AF.func("CloneArea", "C6 \r\n F7 \r\nrow=30");<br>AF.func("CloneArea", "5 \r\n 2 \r\n 6 \r\n 5 \r\nrow=30");</example>
</function>
</category>
<category name="单元格合并">
<function name="GetCellStatus">
<usage>取得某单元格的状态</usage>
<para>行号(从0开始计数)</para>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<return>A - 普通单元格; <br> H - 被合并; <br> M - 被合并,但位于合并区的左上角,是有效的主单元格; <br> 空串 - 该单元格不存在</return>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
</function>
<function name="GetMainCell">
<usage>取得某单元格所在的合并区域中的主单元格(即左上角单元格)</usage>
<para>行号(从0开始计数)</para>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<return>单元格名。如果本单元格没有被合并,则返回本单元格名</return>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
</function>
<function name="GetMergedCells">
<usage>取得某单元格所在的合并区域</usage>
<para>行号(从0开始计数)</para>
<para>列号(从0开始计数),或列名(如 A、K、AC)</para>
<return>以“:”分隔的左上角和右下角的单元名。如果本单元格没有被合并,则返回本单元格名</return>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
</function>
<function name="Merge">
<usage>合并单元格</usage>
<para>左上单元格行号(从0开始计数)</para>
<para>左上单元格列号(从0开始计数),或列名(如 A、K、AC)</para>
<para>右下单元格行号(从0开始计数)</para>
<para>右下列号(从0开始计数),或列名(如 A、K、AC)</para>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
<example>如下函数是同一个意思:<br>AF.func("Merge", "C6:F7");<br>AF.func("Merge", "C6 \r\n F7");<br>AF.func("Merge", "5 \r\n 2 \r\n 6 \r\n 5");</example>
</function>
<function name="DeMerge(用法1)">
<usage>解除指定区域的合并</usage>
<para>左上单元格行号(从0开始计数)</para>
<para>左上单元格列号(从0开始计数),或列名(如 A、K、AC)</para>
<para>右下单元格行号(从0开始计数)</para>
<para>右下列号(从0开始计数),或列名(如 A、K、AC)</para>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
<example>如下函数是同一个意思:<br>AF.func("deMerge", "C6:F7");<br>AF.func("deMerge", "C6 \r\n F7");<br>AF.func("deMerge", "5 \r\n 2 \r\n 6 \r\n 5");</example>
</function>
<function name="DeMerge(用法2)">
<usage>解除某个单元格所在区域的合并</usage>
<para>单元格行号(从0开始计数)</para>
<para>单元格列号(从0开始计数),或列名(如 A、K、AC)</para>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名; 也可以在后面跟随宏@sheet(如 B7@sheet2 表示第二个工作表的B7单元格)</memo>
<example>AF.func("deMerge", "C6");</example>
</function>
<function name="MergeSame(用途1)">
<usage>合并某行给定范围内相同内容的单元格</usage>
<para>格式为:row=[?];col1=[?];col2=[?];isIgnoreNull=[?],含义为:<br>
<b>row</b> - 某行的行号<br>
<b>col1</b> - 开始列号或类似A,B,C的列名,默认是0<br>
<b>col2</b> - 结束列号或类似A,B,C的列名,默认是次末列<br>
<b>isIgnoreNull</b> - 内容为空是否就不合并了,true/false,默认是true<br>
<b>isDemergeFirst</b> - 合并前是否先解除覆盖了该范围的以前的合并,true/false,默认是true<br>
<b>isKeepMergeAsPossible</b> - 如果新的合并区横贯了以前的合并区,是否把以前的合并区拆分为二段,true/false,默认是false, 只有在isDemergeFirst=false时才能生效<br>
</para>
</function>
<function name="MergeSame(用途2)">
<usage>合并某列给定范围内相同内容的单元格</usage>
<para>格式为:col=[?];row1=[?];row2=[?];isIgnoreNull=[?];isDemergeFirst=[?],含义为:<br>
<b>col</b> - 列号或类似A,B,C的列名<br>
<b>row1</b> - 开始行的行号,默认是0<br>
<b>row2</b> - 结束行的行号,默认是次末行<br>
<b>isIgnoreNull</b> - 内容为空是否就不合并了,true/false,默认是true<br>
<b>isDemergeFirst</b> - 合并前是否先解除覆盖了该范围的以前的合并,true/false,默认是true<br>
<b>isKeepMergeAsPossible</b> - 如果新的合并区横贯了以前的合并区,是否把以前的合并区拆分为二段,true/false,默认是false, 只有在isDemergeFirst=false时才能生效<br>
</para>
</function>
<function name="SplitCol">
<usage>将某列分拆成多列,并自动合并同类项</usage>
<detail>将某列分拆成多列,并自动合并同类项,分拆、合并的算法和树列表的 VColSep 算法完全一致</detail>
<para>格式为:col=[?];row1=[?];row2=[?];VColSep=[?],含义为:<br>
<b>col</b> - 列号或类似A,B,C的列名<br>
<b>row1</b> - 开始行的行号,默认是0<br>
<b>row2</b> - 结束行的行号,默认是次末行<br>
<b>VColSep</b> - 分隔符,含义和树列表的 VColSep 一致 <br>
</para>
</function>
<function name="GetValidCells">
<usage>取得某个区域内有效的单元格</usage>
<detail>取得某个区域内有效的单元格, 所谓“有效”是指不包括被合并的单元格</detail>
<para>左上单元格行号(从0开始计数)</para>
<para>左上单元格列号(从0开始计数),或列名(如 A、K、AC)</para>
<para>右下单元格行号(从0开始计数)</para>
<para>右下列号(从0开始计数),或列名(如 A、K、AC)</para>
<return>以逗号分隔的单元格名</return>
<memo>也可以将行、列参数合并成一个参数:单元名,如B7、K11; 或者是单元格的别名;</memo>
<example>如下函数是同一个意思:<br>var s = AF.func("GetValidCells", "C6:F7");<br>var s = AF.func("GetValidCells", "C6 \r\n F7");<br>var s = AF.func("GetValidCells", "5 \r\n 2 \r\n 6 \r\n 5");</example>
</function>
</category>
<category name="内嵌对象(文本框/图片/统计图/线条/树列表)">
<function name="GetGraphics">
<usage>取得所有内嵌对象的别名</usage>
<para>可选,类型筛选,可以是如下类型的组合(逗号分隔):Chart、Line、TextBox、Picture、Treelist, 分别表示统计图、线条、文本框、图片、树列表</para>
<return>别名串,多个别名之间以逗号分隔</return>
</function>
<function name="GetCellProp(用途2)">
<usage>取得某内嵌对象的属性</usage>
<para>内嵌对象的别名</para>
<para>属性名,不同的内嵌对象类型是有差别的,请参考XML文件,内嵌对象的属性有:<br>
<b>公共属性</b>:<br>
type - 内嵌对象类型,返回值为Chart、Line、Textbox、Picture;<br>
isPrint - 打印 isProtected - 保护 rect - 矩形区的坐标<br>
isLocked - 锁定行列位置 unDragAbleAtRuntime - 运行时不可拖拽<br>
<b>文本框的属性</b>:<br>
text - 文字或计算结果 formula - 计算公式 fontIndex - 字体索引 <br>
bgColor - 背景色 textColor - 文字色 align/valign - 文字对齐 <br>
dataType - 数据类型 isRound - 四舍五入 decimal - 小数位数 <br>
isThousandSeparat - 千位符 maskid - 显示掩码 rect - 矩形坐标<br>
charSpace - 字间距 lineDistance - 行间距 isUnderLine - 边框仅画底边<br>
borderThick - 边框粗 borderColor - 边框色 borderStyle - 边框风格<br>
RoundX/RoundY - 圆角直径 isNoZoom - 尺寸和打印比例无关<br>
<b>图片的属性</b>:<br>
isTransparent - 是否透明 blobid/picture - 图片 rect - 矩形坐标<br>
borderThick - 边框粗 borderColor - 边框色 borderStyle - 边框风格<br>
RoundX/RoundY - 圆角直径 align/valign - 图片对齐 isNoZoom - 尺寸和打印比例无关<br>
<b>统计图的属性</b>:<br>
ChartType、items、textContent...等近20项,请参考统计图组件的<a href="chart.htm?62#Tag801" target=_blank>创建参数<a/>.<br>
<b>自定义属性</b>:<br>
不在上述范围内的属性就都算是自定义属性.<br>
</para>
<return>内容串</return>
<memo>上述矩形坐标 rect 的格式为逗号分隔的4个值: x1,y1,x2,y2</memo>
</function>
<function name="SetCellProp(用途2)">
<usage>设置某内嵌对象的属性</usage>
<para>内嵌对象的别名</para>
<para>属性名, 同上面的GetCellProp( )函数的属性</para>
<para>值串</para>
</function>
<function name="DeleteGraphics">
<usage>删除某些内嵌对象</usage>
<para>别名,如果要同时删除多个,请用逗号分隔</para>
<memo>动态插入新的内嵌对象请用CallFunc函数</memo>
</function>
</category>
<category name="工作表">
<function name="GetWorksheets">
<usage>取得工作表的个数</usage>
<return>数字</return>
</function>
<function name="GetCurrentWorksheet">
<usage>取得当前工作表序号</usage>
<return>序号(从0开始计数)</return>
</function>
<function name="SetCurrentWorksheet">
<usage>切换当前工作表</usage>
<para>序号(从0开始计数),或工作表名称</para>
<return>1/0 - 成功/失败</return>
</function>
<function name="GetWorksheetName">
<usage>取得工作表的名称</usage>
<para>序号(从0开始计数)</para>
<return>字符串</return>
</function>
<function name="SetWorksheetName">
<usage>修改工作表的名称</usage>
<para>序号(从0开始计数),或工作表名称</para>
<para>新的名称</para>
<return>1/0 - 成功/失败</return>
</function>
<function name="DeleteWorksheet">
<usage>删除工作表</usage>
<para>序号(从0开始计数),或工作表名称</para>
<return>1/0 - 成功/失败</return>
</function>
<function name="AppendWorksheet">
<usage>添加工作表:从外部报表导入</usage>
<para>外部报表文件的URL, 注:除了硕正报表文件,也可以是Excel2007的 xlsx 格式文件</para>
<para>可选,可挑选如下4种格式之一:<br>
<b>空串</b> - 即无此参数,表示导入该外部报表的所有工作表;<br>
<b>?</b> - 如果外部报表有多个工作表,则打开对话框选择;<br>
如<b>sheetnum=0,3,4</b>的串 - 导入顺序号为0、3、4的工作表;<br>
如<b>sheetname=利润表,资产负债表</b>的串 - 导入工作表名为“利润表”,“资产负债表”的工作表;<br>
</para>
<return>1/0 - 成功/失败</return>
<example>AF.func("addWorksheet", "../model1.xml \r\n ?");<br>
AF.func("appendWorksheet", "../model1.xml \r\n sheetname=工作簿3, 工作簿22");
</example>
</function>
<function name="AddWorksheet">
<usage>添加工作表:新建空的工作表</usage>
<para>格式为:name=[?]; rows=[?];cols=[?]; rowheight=[?]; colwidth=[?], 含义如下:<br>
name - 工作表名;<br>
rows/cols - 总行数/列数,默认是100/20;<br>
rowheight/colwidth - 行高/列宽, 默认是24/140<br>
</para>
<return>1/0 - 成功/失败</return>
<example>AF.func("addWorksheet", "name=薪资;rows=5;cols=10");</example>
</function>
<function name="GetWorksheetNameOfDS">
<usage>取得某数据源指定用于某些工作表的名称</usage>
<para>数据源ID</para>
<return>逗号分隔的工作表名</return>
<memo>指定数据源用于某些工作表的功能,在数据源首个对话框中</memo>
</function>
<function name="SetProp(用途1)">
<usage>设置工作表的某些属性</usage>
<para>格式为 "item1=value1;item2=value2;..." 的属性串,属性含义及可用值如下:<br>
<b>isRefOriPrecision</b> - true/false, 单元格之间的引用计算是否以原始精度为准;<br>
<b>isShowZero</b> - true/false, 计算结果为零时,是否显示0.00; <br>
<b>isUsingEditMask</b> - true/false, 是否启用单元格的数据类型校验; <br>
<b>isForGraphicObjectsOnly</b> - true/false, 是否以画文本框、线条等为主,不需要表格线; <br>
<b>isRowHeightAutoExtendAble</b> - true/false, 是否允许自动调整行高; <br>
<b>isRowHeightAutoExtendAfterRefreshed</b> - true/false, 从数据源加载数据后,是否立即自动调整行高; <br>
<b>LineDistance</b> - 像素数, 行距; <br>
<b>AutoBreakLine</b> - 0至3的数字, 文字超宽处理,0:自动换行、缩小字体,换行优先; 1:不处理; 2: 自动缩小字体、换行,缩小字体优先; 3: 自动换行,但不缩小字体;<br>
<b>BackColor</b> - 背景色; <br>
<b>BackPicture 或 BackImage</b> - 背景图, 为一 URL, 空串表示清除背景图; <br>
<b>isTile</b> - true/false, 背景图的布局,分别表示铺满/单幅; <br>
<br>
此外,也可以通过本函数更改某些独立于当前工作表(即对所有工作表都生效)的属性:<br>
<b>Ruler</b> - 动态显示或隐藏标尺,值为Horz/Vert,分别表示水平/垂直标尺,也可以是空串,或逗号分隔的组合;<br>
<b>toolbarVisible</b> - 动态显示/隐藏工具条,值为true/false;<br>
<b>PagesTabPercent</b> - 底部滑动条的左侧Tab区长度占总宽度的百分比,0到100;<br>
<b>isAutoCalculateWhenOpen</b> - 报表打开时是否立即自动计算,值为true/false;<br>
<b>isSaveCalculateResult</b> - 报表保存时,是否连同数据源填入的数据一起保存,值为true/false;<br>
<b>isSheetDragAble</b> - true/false, 底部的工作表页签是否允许被鼠标拖拽交换位置;<br>
上述有些属性是“创建参数”.
</para>
</function>
<function name="GetProp(用途1)">
<usage>取得工作表的某些属性</usage>
<para>属性名,参见函数SetProp( ). <br>
此外,参数 <b>Crosstab</b> 表示取得交叉表的XML串.
</para>
<return>属性的值</return>
</function>
<function name="GetProp(用途2)">
<usage>取得工作表的交叉表、分类汇总配置XML</usage>
<para>固定的串,为 crosstab 或 summary, 分别表示交叉表、分类汇总表</para>
<return>XML串</return>
<memo>XML串较复杂,需要您对报表的XML文件中的 Crosstabs、Summaries 节点进行分析</memo>
</function>
<function name="SetProp(用途2)">
<usage>设置工作表的交叉表、分类汇总配置XML</usage>
<para>固定的串,为 crosstab 或 summary, 分别表示交叉表、分类汇总表</para>
<para>XML串</para>
<memo>XML串较复杂,需要您对报表的XML文件中的 Crosstabs、Summaries 节点进行分析</memo>
</function>
</category>
<category name="打印">
<function name="Print">
<usage>打印</usage>
<para>1-允许弹出系统打印对话框, 0-不弹出对话框直接打印</para>
<return>1/0 - 成功/失败</return>
</function>
<function name="BeginBatchPrint">
<usage>开始批打印</usage>
<para>可选,格式为 StartPageNum=[?]; isMultiPrintTask=[?]; isShareBlankPart=[?]; isPreview=[?]; PreviewDPI=[?], 其含义如下:<br>
<b>StartPageNum</b> 或 <b>StartPageNumber</b>- 批中起始页码(任务中的总页码), 默认是1;<br>
<b>isMultiPrintTask</b> - 是否按奇偶页拆分成2个打印任务打印, 默认是false;<br>
<b>isShareBlankPart</b> - 如果是名片式打印(即每张纸能均分成多块的打印),是否共享前一张纸的空白部分,以节省打印纸,默认是false;<br>
<b>isPreview</b> - 是否用于预览,默认是false;<br>
<b>PreviewDPI</b> - 预览时指定使用 DPI(每英寸像素数) 精度,0表示以当前打印设备的DPI,默认是0. 为了防止当前打印设备DPI太高导致预览速度过于慢甚至预览时出现白屏,建议设成300左右;<br>
</para>
<memo>1.批打印常用于<b>同一个模板、多批数据</b>的集中打印;<br>
2.从调用该函数开始,后面调用Print( )函数打印的都归并在单个任务中,直至调用EndBatchPrint( )才将这个任务送往打印机,所以打印速度较快;<br>
3.如果分奇偶页打印,打印任务自动分拆成2个:奇页任务和偶页任务,调用EndBatchPrint( )后,将先打印奇页,软件会弹出对话框“正在打印奇数页,按'是'将开始打印偶数页...”,待用户换好纸张即打印偶页;<br>
4.如果isPreview=true, 则参数 isMultiPrintTask 无效;<br>
5.如果isPreview=true, 当调用EndBatchPrint( )结束后,将会弹出预览界面。此外,尽管在预览界面中也能打印,但打印精度和速度都不佳,因为此时是作为纯图片打印的 ;<br>
6.如果您希望在报表中能打印出在批中的页码,请在报表的表达式中使用 pageBatch( )计算函数;</memo>
<example>AF.func("Build", "reports/aax.xml"); //打开模板<br>
AF.func("BeginBatchPrint", "isShareBlankPart=true"); //开始批打印<br>
for( ... ) { //通常是循环<br>
AF.func("SetSource", "ds1 \r\n abc.aspx?mon=" + mon); //设置查询取数条件<br>
AF.func("Calc", ""); //填充数据<br>
AF.func("Print", "0"); //打印, 通常在循环的第一遍时将参数置为“1”(选择打印机)<br>
}<br>
AF.func("EndBatchPrint", ""); //终止批打印:把打印任务送往打印机
</example>
</function>
<function name="EndBatchPrint">
<usage>结束批打印,将打印任务发送给打印机</usage>
</function>
<function name="GetProp(用途3)">
<usage>取得工作表的打印配置属性</usage>
<para>固定的串,为 Print 或 Printer</para>
<return>XML串</return>
<memo>1.打印属性比较复杂,需要您对报表的XML文件中的 PrintPage 节点进行分析;<br>
2.返回的XML串内容不多,因为默认的设置就不出现在XML中了;<br>
3.PaperNumber是打印纸号,请参考本文档“附录4.打印纸对照表”</memo>
</function>
<function name="SetProp(用途3)">
<usage>设置工作表的打印配置属性</usage>
<para>固定的串,为 Print 或 Printer</para>
<para>XML串</para>
<memo>更改打印参数,需要借助全局函数中的DOM函数集</memo>
<example>//如下例子是把打印纸的左边界修改为10毫米:<br>
var xml=AF.func("GetProp", "Print");<br>
var hDOM = AF.func("dom_new", xml); //创建DOM对象<br>
var hMargin = AF.func("dom_find", hDOM + "\r\n margin"); //查找节点<br>
AF.func("dom_SetProp", hMargin + "\r\n left \r\n 10"); //设置<br>
xml = AF.func("dom_export", hDOM); //输出xml<br>
AF.func("SetProp", "Print \r\n" + xml); //完成<br>
AF.func("dom_delete", hDOM); //销毁对象<br>
</example>
</function>
</category>
<category name="汇总上报模式">
<function name="SetItemLibraryURL">
<usage>设定指标库的URL</usage>
<detail>设定指标库的URL,用于上报模式的设计时(运行时通常不需要执行)</detail>
<para>URL, 或XML串,其格式请参见Report文档</para>
<illu>请参见演示页: 40.指标库</illu>
</function>
<function name="SetItemAttr">
<usage>动态修改指标的属性的值</usage>
<para>诸如 "attr1=value1; attr2=value2; attr3=value3"这样的名-值对.</para>
<para>可选,别名(即指标名),表示范围仅限于该类指标; 如果为空,表示对所有单元格、凡是含这些属性的值统一设置.</para>
<return>被修改的单元格个数</return>
</function>
<function name="GetUploadXML">
<usage>用于报表的汇总上报模式(WorkMode=UploadRuntime),取得当前填入内容的XML串</usage>
<para>可选,用于当报表有多个TabOrder方案时,是否仅上报当前方案, 默认true</para>
<return>XML串, 如果返回 "0",表示报表中的内嵌Treelist对象未通过验证</return>
<memo>仅用于创建参数为WorkMode=UploadRuntime时</memo>
<illu>请参见演示页: 39.填写与申报阶段</illu>
</function>
<function name="SetUploadXML">
<usage>加载已上报的数据,用于报表的显示</usage>
<para>URL, 或XML串,其格式须和GetUploadXML( )返回的XML一致 (但不需要 Cell="?" 内容)</para>
<para>可选,格式为 autoCalc=asynch/synch/none, 表示执行完加载后立即自动执行一遍计算,asynch表示异步计算; synch是同步计算; none表示不需要计算, 默认是asynch</para>
<example>AF.func("setUploadXML", "../getxml.do?id=332 \r\n autoCalc=none");</example>
</function>
<function name="GetUploadIndex">
<usage>取得当前采用了多个TabOrder方案中的哪一个,用于上报运行时</usage>
<return>顺序号,从0开始计数</return>
</function>
<function name="SetUploadIndex">
<usage>指定采用多个TabOrder方案中的某一个,用于上报运行时</usage>
<para>顺序号,从0开始计数</para>
</function>
<function name="GetUploadNames">
<usage>取得所有TabOrder方案的名称</usage>
<return>以回车分隔的串。如果只有单个方案,返回串有可能是空串</return>
</function>
<function name="GetUploadCells">
<usage>取得有TabOrder的单元名</usage>
<para>可选,方案的顺序号, 空串或-1表示当前方案,默认是空串</para>
<return>以逗号分隔的单元名(如果有文本框,则为文本框的别名)串</return>
</function>
<function name="SelectCell(用途2)">
<usage>用于上报运行时,直接打开第一个可输入的单元格的输入框</usage>
<illu>请参见演示页: 39.填写与申报阶段</illu>
</function>
</category>
<category name="简易提交(一)">
<function name="ResetChanged">
<usage>合并修改内容,为以后调用 GetChangedCells( ) 作准备.</usage>
</function>
<function name="GetChangedCells">
<usage>取得所有被修改过的单元格.</usage>
<return>以逗号分隔的单元名</return>
<memo>必须在之前执行过 ResetChanged( ) 函数才能生效.</memo>
</function>
</category>
<category name="简易提交(二)">
<function name="CollectXML">
<usage>获取某些单元格的公式、内容</usage>
<para>需要获取的单元格的条件,条件为背景色或别名,如"BackColor=#00ff00"、"alias=ABC*", 别名中的星号(*)的含义是通配符.<br>也可以同时书写这2个条件,以分号分隔,二者将是“或”的关系.</para>
<return>XML串</return>
</function>
</category>
<category name="简易提交(数据源部分)">
<function name="GetChangedXML">
<usage>取得数据源填充区内容的XML串</usage>
<para>可选, 可以有如下的选项,相互以分号分隔:<br>
<b>ds</b> - 数据源ID, 表示取得该数据源的 "=datarow( )" 函数所在单元格的数据源填充区内容;<br>
<b>cell</b> - 单元格名,或别名,表示该单元格肯定包含 "=datarow( )" 的函数,并取得数据源填充区内容;<br>
<b>DateFormat</b> - 日期的格式,默认是'%Y.%m.%d',可参见<a href="pub.htm#now" target=_blank>公共内容中now( )函数</a>的参数;<br>
<b>DateTimeFormat</b> - 日期时间的格式,默认是'%Y.%m.%d %H:%M:%S',可参见<a href="pub.htm#now" target=_blank>公共内容中now( )函数;</a>的参数<br>
<b>includeCol / excludeCol</b> - 仅包含某些列/不包含某些列,二者可选其一,表示列的<b>范围</b>. 列名之间以逗号分隔。默认是空串,表示提交所有列;<br>
备注:这个“列名”是指数据源中的列名.<br>
<b>自定义属性</b> - 附加在XML根节点处的属性串<br>
</para>
<return>XML大串 - 成功;<br>空串 - 未发现数据源;<br></return>
<memo>
1.取数范围是以含"=datarow( )"函数单元格作为左上角的数据源填充区;<br>
2.ds 和 cell 只要指定一个就行,如果报表中只有一处"=datarow( )",则可以省略这2个参数;<br>
3.在让用户修改数据源内容前,通常需要调用 AF.func("callfunc", "541 \r\n 0") 函数,以保证公式不被改动 ;<br>
</memo>
<example>//取得当前工作表中唯一的数据源填充区内容<br>
AF.func("GetChangedXML", "");<br>
//取得当前工作表中 'ds1' 数据源填充区内容<br>
AF.func("GetChangedXML", "ds=ds1");<br>
//同上,但XML串含附加信息<br>
AF.func("GetChangedXML", "ds=ds1; org=1001;Uid=330102");<br>
</example>
</function>
</category>
<category name="权限相关">
<function name="Swkrntpomzqa">
<usage>限制某些交互功能</usage>
<detail>限制某些交互功能 (也可写作 SetLimit )</detail>
<para>可包含如下、以逗号分隔的串:<br> 1 -公式修改权<br> 2 -非公式的修改权 <br> 4 -格式修改权(如字体、行高列宽、对齐、隐藏等) <br>
8 -行列增删权, 也可拆分成:<br>
256 -行增删权<br>
512 -列增删权<br>
16-被保护的单元的内容修改权<br> 32-平衡校验修改权<br>
64-数据源修改权,也可拆分成:<br>
64a -新建数据源权<br>
64d -删除数据源权<br>
64m -修改数据源权<br>
128-工作表的增删权<br></para>
<illu>请参见演示页: 6.自动计算</illu>
<memo>1.在上报模式的运行时(workMode=UploadRunTime),不完全遵照这个限制;<br>
2.权限仅限制交互操作,不限制API调用;</memo>
<example>AF.func("Swkrntpomzqa", "2, 4, 256, 64");</example>
</function>
<function name="addEditAbleOnly">
<usage>添加可编辑的单元格范围</usage>
<detail>添加可编辑的单元格范围,除了这些单元格,其它单元格都不得修改</detail>
<para>可包含如下格式的串: level=[?]; [cell=?]; [cellArea=?]; [fixedCell=?]; [fixedCellArea=?]; [alias=?]; [aliasArea=?]; [bgColor=?]; [droplist]; [checkbox], 含义即语法如下: <br>
level - top/normal, "top" 表示独立增加权限,且级别最高,不受其它权限函数影响, 默认是normal;<br>
cell - 单元格名(有多个则以逗号分隔),如"A5, B4, D4";<br>
fixedCell - 同上,但位置是固定的,不受行列增删影响;<br>
cellArea - 以":"分隔的2个单元格名,表示左上角到右下角的矩形区域,如“B2:D5”;<br>
fixedCellArea - 同上,但位置是固定的,不受行列增删影响;<br>
alias - 别名(有多个则以逗号分隔),可以含 * 的通配符;<br>
aliasArea - 以":"分隔的2个别名,表示左上角到右下角的矩形区域,如“Tag12:Tag33”;<br>
bgColor - 某种背景色的单元格(多个背景色之间以逗号分隔), 如“red, blud, #334400”,T 表示无背景色(透明);<br>
droplist - 凡是下拉的单元格;<br>
checkbox - 凡是Checkbox的单元格;<br>
arrow - 左侧标记色,多个颜色之间以逗号分隔;<br>
</para>
<example>AF.func("addEditAbleOnly", "cellArea=B3:B5, D3:D5; alias=KK*"); //仅如下范围的单元格可以编辑: B3:B5之间的单元格、 D3:D5之间的单元格、或别名以"KK"开头的单元格<br><br>
AF.func("addEditAbleOnly", "droplist; checkbox; bgColor=black"); //除了下拉的、Checkbox的、或黑色背景的单元格可编辑,其它单元格都不可编辑</example>
<memo>当 level = normal 时: <br>
1.独立于 Swkrntpomzqa( ),但和 Swkrntpomzqa( ) 同时生效,语义上有冲突时Swkrntpomzqa( )优先;<br>
2.和 AddUnEditAbleOnly( )函数是互斥的,即调用AddUnEditAbleOnly( )函数后以前的设置将失效.<br>
3.只能执行一遍, 如果再次执行,以前的 level=normal 的设置将失效.<br>
当 level = top 时: <br>
1.等级高于 Swkrntpomzqa( );<br>
2.允许执行多遍,设置的权限都将被保持,和其它 AddEditAbleOnly( ) / AddUnEditAbleOnly( )函数不互斥,等级仍然保持最高.<br>
</memo>
</function>
<function name="addUnEditAbleOnly">
<usage>添加不可编辑的单元格范围</usage>
<detail>添加不可编辑的单元格范围,除了这些单元格不可修改,其它单元格都是可以修改的</detail>
<para>同AddEditAbleOnly函数</para>
<memo>同AddEditAbleOnly函数</memo>
</function>
</category>
<category name="外部统计图<br>(完全由API控制)">
<function name="Chart_DeleteAllSeries">
<usage>清除所有系列</usage>
<para>统计图别名</para>
</function>
<function name="Chart_GetSeriesCount">
<usage>取得系列数</usage>
<para>统计图别名</para>
<return>数字</return>
</function>
<function name="Chart_GetSeriesName">
<usage>取得某系列的名称</usage>
<para>统计图别名</para>
<para>顺序号,从0开始计数</para>
<return>串,空串表示已经到达末尾</return>
</function>
<function name="Chart_SetSeriesName">
<usage>系列的增删改操作</usage>
<para>统计图别名</para>
<para>顺序号,从0开始计数</para>
<para>系列名. 空串表示删除这个系列;如果不存在则添加;如果已经存在则修改系列名</para>
</function>
<function name="Chart_GetItemNames">
<usage>取得所有数据项的名称</usage>
<para>统计图别名</para>
<return>以逗号分隔的数据项名</return>
</function>
<function name="Chart_GetItemName">
<usage>取得某数据项的名称</usage>
<para>统计图别名</para>
<para>顺序号,从0开始计数</para>
<return>数据项名</return>
</function>
<function name="Chart_SetItemNames">
<usage>设置全部数据项的名称</usage>
<para>统计图别名</para>
<para>以逗号分隔的数据项名</para>
<para>可选,true/false - 重构统计图/不重构,默认是true</para>
</function>
<function name="Chart_SetItemName">
<usage>设置某个数据项的名称</usage>
<para>统计图别名</para>
<para>顺序号,从0开始计数</para>
<para>数据项名</para>
<para>可选,true/false - 重构统计图/不重构,默认是true</para>
</function>
<function name="Chart_GetValues">
<usage>取得某系列的全部数值</usage>
<para>统计图别名</para>
<para>系列名,或系列的顺序号. 如果只有一个系列,那么可以是空串或任意串</para>
<return>以逗号分隔的值</return>
</function>
<function name="Chart_GetValue">
<usage>取得某系列的某个数值</usage>
<para>统计图别名</para>
<para>系列名,或系列的顺序号. 如果只有一个系列,那么可以是空串或任意串</para>
<para>数据项的顺序号,或数据项名</para>
<return>值</return>
</function>
<function name="Chart_SetValues">
<usage>设置某系列的全部数值</usage>
<para>统计图别名</para>
<para>系列名,或系列的顺序号. 如果只有一个系列,那么可以是空串或任意串</para>
<para>以逗号分隔的值, 值可以是数值、单元名、别名</para>
<para>可选,true/false - 重构统计图/不重构,默认是true</para>
</function>
<function name="Chart_SetValue">
<usage>设置某系列的某个数值</usage>
<para>统计图别名</para>
<para>系列名,或系列的顺序号. 如果只有一个系列,那么可以是空串或任意串</para>
<para>数据项的顺序号,或数据项名</para>
<para>值, 值可以是数值、单元名、别名</para>
<para>可选,true/false - 重构统计图/不重构, 默认是true</para>
</function>
</category>
<category name="下拉字典">
<function name="Droplists_Get">
<usage>取得所有下拉字典</usage>
<para>name 或 id, 表示返回字典名 或 字典的id号</para>
<return>以逗号分隔的串</return>
</function>
<function name="Droplists_GetHandle">
<usage>取得某个下拉字典的句柄</usage>
<para>字典名 或 字典的id号</para>
<return>句柄串,空串表示该字典不存在</return>
<memo>取得看句柄后,可以使用全局函数中的 “下拉List管理函数” 访问字典数据</memo>
</function>
<function name="Droplists_FindCells">
<usage>取得当前工作表中使用了某个下拉字典的所有单元格</usage>
<para>字典名 或 字典的id号</para>
<return>以逗号分隔的单元格名</return>
</function>
<function name="Droplists_Delete">
<usage>删除某个下拉字典</usage>
<para>字典名 或 字典的id号</para>
<para>可选,true-绝对删除, false - 如果有单元格使用了该字典就不删除, 默认是true</para>
<return>1/0 - 成功/失败</return>
</function>
<function name="Droplists_Add">
<usage>动态添加下拉字典</usage>
<para>语法串</para>
<return>新增字典的id号, 0表示失败,失败原因可能为name重复</return>
<example>AF.func("Droplists_Add", "name=kk1;dataURL=../getDict.aspx");<br>
AF.func("Droplists_Add", "name=kk2;dataURL=<items><item key=1>男</item><item key=2>女</item></items>");<br>
AF.func("Droplists_Add", "name=kk3;treelistURL=customer.xml;DataCol=id;DisplayCol=name");
</example>
</function>
</category>
<category name="显示掩码">
<function name="Masks_Get">
<usage>取得所有显示掩码的id</usage>
<return>掩码的id,相互以逗号分隔</return>
</function>
<function name="Mask_Get">
<usage>取得某个显示掩码的表达式</usage>
<para>ID号</para>
<return>表达式</return>
</function>
<function name="Mask_Delete">
<usage>删除某个显示掩码</usage>
<para>ID号</para>
<return>1/0 - 成功/失败</return>
</function>
<function name="Mask_Add">
<usage>添加一个显示掩码</usage>
<para>数据类型,可以是 string, int, double, date, datetime</para>
<para>表达式</para>
<memo>如果该掩码表达式已经存在,则返回原ID号</memo>
<return>ID号</return>
<example>
var id = AF.func("Mask_Add", "string \r\n =formatNum(data, '¥#,##0.00')");<br>
var id = AF.func("Mask_Add", "string \r\n =picture()"); //添加图片显示掩码<br>
var id = AF.func("Mask_Add", "string \r\n =barcode(33,0,0,0)"); //添加二维码显示掩码<br>
</example>
</function>
<function name="Mask_FindCells">
<usage>取得当前工作表中使用了某个显示掩码的单元格</usage>
<para>ID号</para>
<return>以逗号分隔的单元格名、或文本框的别名</return>
</function>
</category>
<category name="工具条和菜单">
<function name="SetToolbarItemImage">
<usage>动态更改工具条中某按钮的图标</usage>
<para>功能号</para>
<para>图标文件的URL,如果是相对路径,则相对于当前页面</para>
<return>1 / 0 - 成功 / 失败</return>
</function>
<function name="SetToolbarItemTip">
<usage>动态更改工具条中某按钮的Tip (鼠标滑过时的文字)</usage>
<para>功能号</para>
<para>文字串</para>
<return>1 / 0 - 成功 / 失败</return>
</function>
<function name="GetToolbarItemStatus">
<usage>取得自定义工具条中某按钮/菜单项的状态</usage>
<para>功能号,必须是自定义的功能号(大于等于3000)</para>
<para>可用状态,为 Enable、Visible、Check</para>
<return>1 / 0</return>
<memo>enable决定按钮或菜单是否灰色显示(disable);<br>visible决定是否让该按钮/菜单项出现;<br>check比较特殊,如果是按钮,必须是style="checkbutton"类型的,决定按钮的凹陷状态;如果是菜单,则会在菜单左侧打一个勾</memo>
</function>
<function name="SetToolbarItemStatus">
<usage>动态更改自定义工具条中某按钮/菜单项的状态</usage>
<para>功能号,必须是自定义的功能号(大于等于3000)</para>
<para>可用状态,为 Enable、Visible、Check</para>
<para>true / false</para>
<return>1 / 0 - 成功 / 失败</return>
<memo>enable决定按钮或菜单是否灰色显示(disable);<br>visible决定是否让该按钮/菜单项出现;<br>check比较特殊,如果是按钮,必须是style="checkbutton"类型的,决定按钮的凹陷状态;如果是菜单,则会在菜单左侧打一个勾</memo>
</function>
<function name="AddMenu">
<usage>增加自定义的弹出菜单项</usage>
<para>串、XML串,或URL,内容的格式规范请参考“5.自定义菜单”</para>
<para>可选,格式为LocateAt=[top/bottom], 表示自定义菜单在弹出时位于顶部还是底部,默认是bottom</para>
<memo>只能在OnEvent(id, "MenuBeforePopup", ...)事件中执行。</memo>
<illu>参见演示页: 9.自定义右键菜单</illu>
</function>
<function name="AddHotKey">
<usage>增设快捷键</usage>
<detail>增设快捷键。快捷键将触发HotKey事件</detail>
<para>第一个快捷键,可以是F1至F12、字母、数字、或键的AscII码,也可再加Ctrl、Shift、Alt的组合,以'+'分隔.</para>
<para>可选,第二个快捷键,以此类推.</para>
<example>AF.func("AddHotKey", "F12 \r\n Ctrl+F4 \r\n Ctrl+Shift+S \r\n Alt+5 \r\n Ctrl+32");<br>
分别表示了5个快捷键:F12、Ctrl+F4、Ctrl+Shift+S、Alt+5、Ctrl+空格(空格的AscII码是32)
</example>
<memo>并不是所有键都能用作快捷的,受制于浏览器,您需要逐个测试</memo>
</function>
</category>
<category name="不太常用">
<function name="AddUserFunctions">
<usage>添加自定义函数的声明</usage>
<para>XML文档,或XML大串</para>
</function>
<function name="SetBatchFunctionURL">
<usage>指定批处理自定义函数的URL地址</usage>
<para>URL,绝对或相对</para>
<para>可选,每一批中最多函数个数,默认100</para>
<para>可选,附加参数,为任意格式的字符串</para>
</function>
<function name="GetMemo">
<usage>取得某自由存储区的存储串</usage>
<para>工作表顺序号(从0开始计数),如果为空串,则表示是和工作表无关的的独立存储区</para>
<para>存储区的ID,为任意串,但不得含逗号</para>
<return>串</return>
<memo>自由存储区的内容是保存在报表的XML中的</memo>
</function>
<function name="SetMemo">
<usage>设置某自由存储区的存储串</usage>
<para>工作表顺序号(从0开始计数),如果为空串,则表示是和工作表无关的的独立存储区</para>
<para>存储区的ID,为任意串,但不得含逗号</para>
<para>要储存的任意串,空串表示删除该存储区</para>
<memo>自由存储区的内容是保存在报表的XML中的</memo>
</function>
<function name="GetMemos">
<usage>取得自由存储区的所有ID</usage>
<para>工作表顺序号(从0开始计数),如果为空串,则表示是和工作表无关的的独立存储区</para>
<return>逗号分隔的存储区ID号</return>
<memo>自由存储区的内容是保存在报表的XML中的</memo>
</function>
<function name="GetRedrawAble">
<usage>是否能够重画</usage>
<return>1 / 0 - 能 / 不能</return>
</function>
<function name="SetRedrawAble">
<usage>设置让报表能够重画或不能重画</usage>
<detail>设置让报表能够重画或不能重画。为了提高性能,在需要连续对报表作改动性操作(比如改数据、改属性)前关闭重画,操作完成后再开启重画.</detail>
<para>true/false - 能 / 不能</para>
</function>
<function name="GetHandle">
<usage>取得工作表、或Validation、或树列表、或内部非模式对话框的句柄</usage>
<para>可以为串:<br>
<b>Validation</b> - 取得Validation句柄, 用于全局函数动态存取Validation;<br>
<b>innerDialog</b> - 取得内部非模式对话框的freeform的句柄;<br>
<b>树列表的别名</b> - 取得某内嵌树列表(Treelist)的句柄;<br>
<b>工作表的序号(纯数字, 从0开始计数)</b> - 取得某工作表的句柄;<br>
<b>工作表名</b> - 取得某工作表的句柄;<br>
</para>
<return>句柄串</return>
</function>
<function name="DisplayAsChart">
<usage>将报表切换成仅显示统计图</usage>
<para>统计图的别名,如果有多个别名,以逗号分隔;也可以是带星号(*)的通配符, 表示符合条件的别名; 也可以是空串,表示所有统计图(没有别名的统计图将被临时分配一个别名).</para>
<para>freeform的URL或XML大串,该freeform必须包含一个ImageFlow对象</para>
<memo>1.如果无参数,表示报表切换成原样(显示报表);<br>
2.报表包括工具条在内的整个区域全部切换成显示统计图;<br>
3.点击统计图的某个数据项区域,将会触发同样的report的统计图事件;<br>
4.alias别名和所处的工作表(WorkSheet)无关;<br>
5.freeform即“自由表头”,请参考相关资料;<br></memo>
<illu>请参见演示页: 33.统计图ImageFlow</illu>
</function>
<function name="GetCurrentChart">
<usage>取得当前统计图(以显示统计图时)</usage>
<memo>仅用于在调用了DisplayAsChart函数后、以统计图显示时</memo>
<return>当前统计图别名。 如果报表中含有多工作表,则是类似 "mychart@sheet1"、"chart2@sheet2" 这种格式</return>
</function>
<function name="SetAutoCalc">
<usage>设置让自动计算功能失效的最大单元格数量</usage>
<detail>在键盘输入过程中、复制粘帖过程中,通常能自动触发计算,但如果报表太大(即单元格太多)的话,自动计算会影响性能、操作的流畅程度,为此需要设定一个阀值,一旦单元格总数超过这个数目,就自动关闭这个自动计算功能。默认值是10000(1万).</detail>
<para>数值,0相当于就是彻底关闭自动计算</para>
<memo>自动计算选项是一个全局开关,对整个进程都生效的</memo>
</function>
<function name="GetAutoCalc">
<usage>取得自动计算选项</usage>
<detail>取得自动计算选项,请参见 SetAutoCalc 函数</detail>
<return>数值</return>
</function>
<function name="GetActiveWindow">
<usage>取得当前主区域的窗口句柄</usage>
<memo>不太常用,常用于和第三方软件底层交互</memo>
<return>句柄串.</return>
</function>
</category>
</functions>