资源描述
狐表(FoxTable)从入门到精通图文教程
报表·附录
贺 辉 编著
广东省湛江市佳信科技有限公司荣誉出品
狐表(FoxTable)帮助文件 广东省湛江市佳信科技有限公司荣誉出品
目 录
目 录 1
4. 专业报表 12
4.1 关于专业报表 12
4.2 报表基础 12
4.2.1 一行文本 12
4.2.2 样式设置 13
4.2.3 排列方式 22
4.2.4 默认尺寸 23
4.2.5 位置与尺寸 24
4.2.6 打印图片 27
4.2.7 复杂图文 30
4.2.8 换页控制 32
4.2.9 容器(RenderArea) 33
4.2.10 页面设置 37
4.2.11 分栏打印 39
4.2.12 强制换页 42
4.2.13 页眉页脚 44
4.2.14 水印 45
4.2.15 自动生成目录 47
4.2.16 指定打印机 48
4.2.17 禁止自动旋转 48
4.2.18 无需记忆任何东西 48
4.3 表格基础 51
4.3.1 创建表格 51
4.3.2 网格线 52
4.3.3 默认尺寸 53
4.3.4 设定尺寸 54
4.3.5 指定行数和列数 55
4.3.6 指定行高和列宽 56
4.3.7 插入行和列 58
4.3.8 单元格内距 58
4.3.9 行列样式 59
4.3.10 单元格样式 60
4.3.11 打印图片 61
4.3.12 快速设置打印对象 62
4.3.13 统一设置属性 63
4.3.14 一个例外 63
4.3.15 给表格加上标题 64
4.3.16 合并单元格 65
4.3.17 再谈合并单元格 66
4.3.18 丢失的表头 68
4.3.19 行组与表头 68
4.3.20 复杂的表头 70
4.3.21 列组 71
4.3.22 表尾 73
4.3.23 用表格设计标签 73
4.3.24 单元格的容器 74
4.3.25 表格与页眉页脚 75
4.4 其他对象 76
4.4.1 线条 76
4.4.2 条形码 80
4.4.3 弧形 81
4.4.4 椭圆形 82
4.4.5 饼形 83
4.4.6 四边形 83
4.4.7 空对象 84
4.4.8 RenderGraphics 85
4.5 实战演练 86
4.5.1 打印表 86
4.5.2 打印单据 104
4.6 更专业的条形码功能 118
4.7 增加图表功能 118
4.8 保存报表 119
4.9 数据绑定 119
4.9.1 绑定基础 119
4.9.2 分组报表 124
5. 发布项目 138
5.1 关于发布 138
5.2 发布项目 138
5.3 制作安装程序 140
5.4 集成 .NET Framework 2.0 145
5.5 自动消失的Foxtable痕迹 147
6. 附录 148
6.1 系统命令大全 148
6.2 中英文颜色对照表 154
6.3 纸张编号与类型表 158
6.4 Keys枚举 162
6.5 VBScript参考 169
6.6 Excel与VBA 175
7. Addenda 211
7.1 Chars 211
7.2 DayOfWeek 212
7.3 Length 212
7.4 Trim 213
7.5 TrimEnd 214
7.6 TrimStart 214
7.7 StartsWith 214
7.8 EndsWith 214
7.9 IndexOf 215
7.10 LastIndexOf 216
7.11 ToUpper 216
7.12 ToLower 216
7.13 SubString 217
7.14 Replace 217
7.15 Remove 218
7.16 PadLeft 219
7.17 PadRight 219
7.18 Split 219
7.19 Insert 220
7.20 Date 220
7.21 Year 220
7.22 Month 221
7.23 Day 221
7.24 DayOfYear 221
7.25 Hour 221
7.26 Minute 222
7.27 Second 222
7.28 Now 222
7.29 Today 222
7.30 AddYears 223
7.31 AddMonths 223
7.32 AddDays 223
7.33 AddHours 223
7.34 AddMinutes 224
7.35 AddSeconds 224
7.36 IsLeapYear 224
7.37 DaysInMonth 225
7.38 Abs 225
7.39 Acos 226
7.40 Asin 226
7.41 Atan 226
7.42 Atan2 226
7.43 Ceiling 226
7.44 Cos 227
7.45 Cosh 227
7.46 Exp 227
7.47 Floor 227
7.48 Log 228
7.49 Log10 228
7.50 Max 228
7.51 Min 228
7.52 Round 229
7.53 Sin 229
7.54 Sinh 229
7.55 Sqrt 229
7.56 Tan 230
7.57 Tanh 230
7.58 Days 230
7.59 Hours 230
7.60 Minutes 230
7.61 Seconds 231
7.62 Milliseconds 231
7.63 TotalDays 231
7.64 TotalHours 231
7.65 TotalMinutes 231
7.66 TotalSeconds 232
7.67 TotalMilliseconds 232
7.68 Add 232
7.69 Subtract 233
7.70 E 233
7.71 PI 233
7.72 DDB 233
7.73 FV 234
7.74 IPmt 234
7.75 NPer 234
7.76 Pmt 235
7.77 PPmt 235
7.78 PV 235
7.79 Rate 236
7.80 SLN 236
7.81 SYD 236
7.82 IRR 237
7.83 MIRR 237
7.84 NPV 238
7.85 CUMoney 239
7.86 CUDate 239
7.87 CUNumber 239
7.88 GetDigit 240
7.89 ReadBirthDay 240
7.90 ReadSex 241
7.91 EUNumber 241
7.92 EUMoney 242
7.93 CreateDirectory 242
7.94 DeleteDirectory 243
7.95 DirectoryExists 243
7.96 RenameDirectory 243
7.97 MoveDirectory 243
7.98 FileExists 244
7.99 DeleteFile 244
7.100 MoveFile 245
7.101 RenameFile 245
7.102 GetFiles 245
7.103 CopyFile 245
7.104 CopyDirectory 246
7.105 ReadAllText 246
7.106 WriteAllText 247
7.107 EncryptText 248
7.108 DecryptText 249
7.109 MD5Encrypt 249
7.110 MouseButton 250
7.111 ModifierKey 250
7.112 ProjectFile 251
7.113 ProjectPath 251
7.114 格式化数字 251
7.115 格式化日期和时间 254
7.116 Name 257
7.117 Caption 258
7.118 AllowDragColumn 258
7.119 AllowFreezeColumn 258
7.120 AllowResizeColumn 258
7.121 AllowResizeRow 259
7.122 AllowResizeSingleRow 259
7.123 AllowAddNew 259
7.124 AllowEdit 259
7.125 AutoAddNew 260
7.126 AllowDelete 260
7.127 AllowLockRow 260
7.128 AllowUnlockRow 260
7.129 EnterKeyActionDown 261
7.130 TabKeyActionDown 261
7.131 HasChanges 261
7.132 Type 261
7.133 ResumeRedraw 261
7.134 Name 262
7.135 AllowEdit 262
7.136 Unique 262
7.137 MaxLength 262
7.138 IsNumeric 263
7.139 IsString 263
7.140 IsDate 263
7.141 IsBoolean 263
7.142 Expression 263
7.143 IsNull 264
7.144 Locked 264
7.145 RowState 264
7.146 Delete 265
7.147 Load 265
7.148 GetChildRows 265
7.149 GetParentRow 266
7.150 GetParentRows 266
7.151 Name 266
7.152 Visible 266
7.153 DataTable 267
7.154 Value 267
7.155 Text 269
7.156 Current 270
7.157 Position 270
7.158 Filter 272
7.159 ApplyFilter 272
7.160 StateFilter 273
7.161 Sort 273
7.162 ApplySort 273
7.163 IsRelation 274
7.164 IsParent 274
7.165 IsChild 274
7.166 Focused 275
7.167 CanUndo 275
7.168 CanRedo 275
7.169 AllowEdit 275
7.170 AllowAddNew 276
7.171 AutoAddNew 276
7.172 AllowDelete 276
7.173 AllowLockRow 276
7.174 AllowUnLockRow 277
7.175 AllowDragColumn 277
7.176 AllowFreezeColumn 277
7.177 AllowResizeColumn 277
7.178 AllowResizeSingleRow 278
7.179 EnterKeyActionDown 278
7.180 TabKeyActionDown 278
7.181 Font 278
7.182 ForeColor 278
7.183 Undo 279
7.184 Redo 279
7.185 ClearEditInfos 279
7.186 Focus 279
7.187 DirectPrint 279
7.188 PrintSetting 280
7.189 StartEditing 280
7.190 FinishEditing 280
7.191 Width 280
7.192 PrintWidth 281
7.193 Name 281
7.194 Index 281
7.195 Caption 281
7.196 DataCol 281
7.197 Visible 282
7.198 AllowEdit 282
7.199 ComboList 282
7.200 单列数据字典 283
7.201 多列数据字典 284
7.202 数据表字典 285
7.203 ImageMap 287
7.204 ImageAndText 288
7.205 OpenWindow 288
7.206 CloseWindow 288
7.207 Move 288
7.208 DataRow 289
7.209 IsNull 289
7.210 IsGroup 289
7.211 Locked 290
7.212 Level 290
7.213 Delete 290
7.214 Clone 291
7.215 ChangeEdit 291
7.216 KeyPressEdit 292
7.217 KeyDownEdit 292
7.218 KeyUpEdit 293
7.219 BeforeSaveDataRow 293
7.220 BeforeAddDataRow 294
7.221 BeforeDeleteDataRow 295
7.222 DataRowDeleting 296
7.223 DataRowDeleted 296
7.224 PositionChanged 296
7.225 CellRange类型 297
7.226 BeforeSelChange 297
7.227 AfterSelChange 298
7.228 BeforeSelRangeChange 299
7.229 AfterSelRangeChange 300
7.230 BeforeDragColumn 300
7.231 AfterDragColumn 301
7.232 BeforeFreezeColumn 301
7.233 AfterFreezeColumn 301
7.234 BeforeResizeColumn 301
7.235 AfterResizeColumn 302
7.236 BeforeResizeRow 302
7.237 AfterResizeRow 302
7.238 AfterLoadTableSetting 303
7.239 BeforeShowContextMenu 303
7.240 InTax 305
7.241 Opened 306
7.242 Controls 306
7.243 TableName 306
7.244 Open 307
7.245 Show 307
7.246 Close 307
7.247 Visible 308
7.248 GetPy 308
7.249 GetParentPath 308
7.250 BuildHeader 309
7.251 DefaultValue 309
7.252 TimerEnabled 309
7.253 TimerInterval 309
7.254 VisualStyle 309
7.255 ActiveControl 310
7.256 ApplicationPath 310
7.257 AllowResizeRow 310
7.258 GetName 310
7.259 GetDirectories 310
7.260 Contains 311
7.261 Join 311
7.262 Caption 312
7.263 RaiseDataColChanged 312
7.264 FTPClient 313
7.265 CRCCheckFile 313
7.266 CRCCheckString 314
7.267 EncryptFile 314
7.268 DecryptFile 315
7.269 GlobalVariableChanged 315
7.270 DoubleClick 315
7.271 AllowClipBoard 316
7.272 AllowInitialize 316
7.273 Reject 316
7.274 Index 316
7.275 SetHeaderRowHeight 317
7.276 SetHeaderCellForeColor 317
7.277 SetHeaderCellFont 317
7.278 AutoSizeHeaderRow 318
7.279 AutoSizeRows 318
7.280 AutoSizeCol 318
7.281 AutoSizeCols 319
7.282 AutoSizeRow 319
7.283 StopRedraw 319
7.284 ResumeRedraw 320
7.285 CLDate 320
7.286 AddUserStyle 320
7.287 CCDate 321
7.288 CCNumber 321
7.289 TopPosition 322
7.290 BottomPosition 323
7.291 InstalledPrinters 323
7.292 SetDateTimeFormat 323
7.293 StrToWide 324
7.294 StrToNarrow 324
7.295 ListMode 324
7.296 ShowCheckBox 325
7.297 GetCheckedRows 325
7.298 ClearCheckedRows 326
7.299 Checked 326
7.300 BeforeCheckRow 326
7.301 AfterCheckRow 327
7.302 KeyDown 327
7.303 KeyUp 328
7.304 ExtendType 328
7.305 SetFormat 328
7.306 ImeMode 329
7.307 DefaultRowHeight 329
7.308 RowHeaderVisible 329
7.309 AllowClickSort 329
7.310 Fill 330
7.311 DataSource 330
7.312 TableType 331
7.313 IsCopy 332
7.314 UsetBuildInEditor 332
7.315 AllowDirectType 332
7.316 AllowTypeAssistant 333
7.317 TextAlign 333
7.318 TextAlignFixed 333
7.319 Compare 333
7.320 StrToTraditional 334
7.321 StrToSimplified 334
7.322 StrReverse 335
7.323 DataMap 335
7.324 Move 335
7.325 AfterMoveRow 335
7.326 Image 336
7.327 ImageLayout 336
7.328 ExtendSize 336
7.329 AutoScroll 337
7.330 FocusRect 337
7.331 直接向Excel报表插入图片 337
7.332 BeforeDrawRow 338
7.333 ResumeRedraw 339
7.334 HeaderRows 339
7.335 MultiRowHeader 339
7.336 OpenLoadTree 339
7.337 Remote 340
7.338 DefaultFolder 341
7.339 Decimals 341
7.340 FileFilter 341
7.341 BeforeLoad 342
7.342 AfterLoad 342
7.343 BeforeFilter 344
7.344 AfterFilter 344
7.345 BeforeSort 344
7.346 AfterSort 345
7.347 SetHeaderCellBackColor 345
7.348 UseVisualStyle 346
7.349 Remove 346
7.350 CodeDictonary 346
7.351 OpenTo 347
7.352 CloseRecordGrid 347
7.353 BeforeAttachFile 347
7.354 EditCopy 347
7.355 EditCut 348
7.356 EditPaste 348
7.357 EditDelete 348
7.358 DisableXButton 348
7.359 BeforeMoveRow 348
7.360 Save 349
7.361 Save 349
7.362 SetBounds 349
7.363 ScrollPosition 349
7.364 AfterScroll 350
7.365 StrToTitleCase 350
7.366 AcceptChanges 350
7.367 Accept 351
7.368 PhysicalValue 352
7.369 OriginalValue 352
7.370 ExtendLastCol 353
7.371 Click 354
7.372 OriginalIsNull 354
7.373 Parent 354
7.374 Children 354
7.375 SavePDF 355
7.376 GetColVisibleWidth 355
7.377 SourceFolder 355
7.378 AcceptButton 356
7.379 CancelButton 356
7.380 CUNum 356
7.381 CLNum 357
7.382 ValidPIN 357
7.383 AllowCopyHeader 357
7.384 BeforeOpenFile 357
7.385 BeforeAddFile 359
7.386 打印表的属性设置 360
7.387 Reject 362
7.388 DefaultColWidth 362
7.389 BeforeShowErrorMessage 362
7.390 MouseEnterCell 362
7.391 MouseLeaveCell 363
7.392 ShowToolTip 363
7.393 SetError 363
7.394 GetError 364
7.395 ClearErrors 364
361
4. 专业报表
4.1 关于专业报表
到目前为止Foxtable提供了三种报表输出方法:
1、Excel报表
2、文章套打
3、窗口打印
Excel报表功能非常强大,几乎可以实现传统报表的所有功能,甚至一些传统报表无法解决的问题,Excel报表都很可以轻松实现,更重要的是,Excel报表的使用很简单,人人都可以掌握,设计效率也远高于传统报表;可以说Excel报表是Foxtable的主力报表输出工具。
文章套打可以快速生成一篇文章,不过功能有限,主要用于一些特殊的场合。
窗口打印可以媲美专业的票据打印工具,其直观的可视化设计、精确的对象定位,及特有的数据绑定,使得其特别适合于票据的输出,例如支票套打。
即将介绍的是专业报表,既然是专业报表,肯定不是给普通用户使用的,普通用户请跳过专业报表的全部内容。
Excel报表和窗口打印已经足够满足我们日常的需要,请您好好掌握,除非你有特别的需要,否则没必要去研究专业报表。
专业报表是一个功能非常强大的报表开发工具,如果能够掌握的话,我们设计出的报表,可以达到很多专业报表开发软件的水准。
正因为“专业”,所以内容繁多,而且完全依靠用户编码完成,初学者需要长时间的学习和大量的练习,才能最终做到灵活应用。
如果你决心要掌握专业报表,那么我告诉你:别怕,除了数据绑定,专业报表大部分内容的逻辑都不复杂,学习难度不大,只是繁琐而以,只要你有时间和耐心,就一定能够掌握,而且对于专业报表来说,数据绑定也并非一个必须掌握的内容。
请先打开CaseStudy目录下的示例文件“专业报表.table”,才能正常编译执行本课程的所有示例代码。
4.2 报表基础
4.2.1 一行文本
将以下代码复制到命令窗口执行:
Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderText '定义一个文本对象
rt.Text = "Hello Foxtable" '设置文本对象的内容
doc.Body.Children.Add(rt) '将文本对象加入到报表
doc.Preview() '预览
报表的类型为PrintDoc,报表设计就是定义一个PrintDoc对象,然后向其中加入各种打印对象。
Foxtable提供了几十种打印对象,例如上图的RenderText是用于打印文本的,所有的打印对象都位于prt空间中,所以定义的时候需要加上前缀prt,例如:
Dim rt As New prt.RenderText '定义一个文本对象
示例代码的打印结果:
4.2.2 样式设置
4.2.2.1 样式设置
样式用来设置打印对象的外观,通过对象的Style属性,即可对样式进行设置。
在命令窗口执行下面的代码,注意加粗的两行:
Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderText '定义一个文本对象
rt.Text = "Hello Foxtable" '设置文本对象的内容
rt.Style.TextColor = Color.Red '字符颜色设为红色
rt.Style.TextAngle = -45 '顺时钟旋转45度
doc.Body.Children.Add(rt) '将文本对象加入到报表
doc.Preview() '预览
这是打印结果:
Style属性包括很多子属性,下表是其中最常用的,接下来我们会结合实际,逐个介绍这些属性的应用。
属性名
说明
BackColor
背景颜色
Borders
设置边框
CharSpacing
设置字符间距
Font
字体
TextAlignHorz
设置文本的水平对齐方式
TextAlignVert
设置文本的垂直对齐方式
TextAngle
设置文本旋转角度,负值为顺时钟,正值为逆时针。
TextColor
设置文本颜色
TextIndent
设置首行缩进幅度
WordWrap
文本长度超出对象宽度时,是否自动换行。
LineSpacing
设置行距,以百分比表示,例如100为单倍行距,150为1.5倍行距
Padding
设置对象内容距离对象边界的距离
Spacing
设置对象和相邻对象的间隔距离
4.2.2.2 对象边框
Style有一个子属性Borders,用于设置边框类型,Borders本身也包括四个子属性:
All: 统一设置边框
Top: 上边框
Bottom: 下边框
Left: :左边框
Right: 右边框
边框是一个LineDef类型,创建一个Linedef的语法是:
New prt.Linedef()
New prt.Linedef(Color)
New prt.Linedef(Width, Color)
New prt.Linedef(Width, Color, DashStyle)
Color: 边框颜色。
Width: 边框宽度,单位为毫米。
DashStyle:DashStyle型枚举,包括以下可选值:
Dash 由线段构成的直线。
DashDot 由线段和点间隔构成的直线。
DashDotDot 由线段和连续两个点间隔构成的直线
Dot 由点构成的直线。
Solid 实线,这是默认值。
示例一
在命令窗口执行下面的代码,注意加粗的两行:
Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderText '定义一个文本对象
rt.Text = "Hello Foxtable" '设置文本对象的内容
rt.Width = 40 '对象宽度为40毫米
rt.Style.Borders.All = New prt.Linedef
rt.Style.Spacing.Bottom = 3 '和下一个对象保持3毫米的距离
doc.Body.Children.Add(rt) '将文本对象加入到报表
'插入另一个文本框
rt = New prt.RenderText '再次新建一个文本框
rt.Text = "Hello Foxtable" '设置文本对象的内容
rt.Width = 40 '对象宽度为40毫米
rt.Style.Borders.All = New prt.Linedef(1, Color.Green)
doc.Body.Children.Add(rt) '将文本对象加入到报表
doc.Preview() '预览
执行结果:
示例二
可以单独设置某一个方向的边框,例如:
Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderText '定义一个文本对象
rt.Text = "Hello Foxtable" '设置文本对象的内容
rt.Width = 25 '宽度为25毫米
rt.Style.Borders.Bottom = New prt.Linedef '设置底边框
doc.Body.Children.Add(rt) '将文本对象加入到报表
doc.Preview() '预览
执行结果:
示例三
可以设置边框的类型,例如:
Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderText '定义一个文本对象
rt.Text = "Hello Foxtable" '设置文本对象的内容
rt.Width = 25 '宽度为25毫米
rt.Style.Borders.Bottom = New prt.Linedef(0.5, Color.Red, DashStyle.Dot) '设置底边框
doc.Body.Children.Add(rt) '将文本对象加入到报表
doc.Preview() '预览
执行结果:
4.2.2.3 文本对齐
Style有一个TextAlignHorz子属性,用于设置文本的水平对齐方式,
该属性是AlignHorzEnum型枚举,包括以下可选值:
Center: 居中
Left: 靠左
Right: 靠右
Style有一个TextAlignVert子属性,用于设置文本的垂直对齐方式。
该属性是AlignVertEnum型枚举,包括以下可选值:
Bottom:靠下
Center:居中
Top: 靠上
示例
Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderText '定义一个文本对象
rt.Text = "Hello Foxtable" '设置文本对象的内容
rt.Width = 40 '宽度为40毫米
rt.Height = 40 '宽度为40毫米
rt.Style.Borders.All = New prt.Linedef(1, Color.Red) '设置边框
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
rt.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
doc.Body.Children.Add(rt) '将文本对象加入到报表
doc.Preview() '预览
执行结果:
4.2.2.4 设置行距
Style的LineSpacing子属性用于设置行距,以百分比表示,例如100为单倍行距,150为1.5倍行距。
示例
Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderText '定义一个文本对象
Dim s As String
s = "新华网绵阳5月16日电(记者孙承斌)16日上午,在四川抗震救灾的"
s = s & "危急时刻,中共中央总书记、国家主席、中央军委主席胡锦涛乘飞机赶往四川"
s = s & "省地震灾区,慰问灾区干部群众,看望奋战在抗震救灾第一线的部队官兵、公"
s = s & "安民警和医护人员,指导抗震救灾工作。"
rt.Text = s '设置文本对象的内容
rt.Style.LineSpacing = 200 '设置双倍行距
doc.Body.Children.Add(rt) '将文本对象加入到报表
doc.Preview() '预览
执行结果:
4.2.2.5 字符间距
doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderText '定义一个文本对象
rt.Text = "Hello Foxtable" '设置文本对象的内容
rt.Style.CharSpacing = 2 '字符间距为2毫米
doc.Body.Children.Add(rt) '将文本对象加入到报表
doc.Preview()
4.2.2.6 首行缩进
Style有一个子属性TextIndent,用于设置首行缩进幅度,单位为毫米。
示例
Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderText '定义一个文本对象
Dim s As String
s = "新华网绵阳5月16日电(记者孙承斌)16日上午,在四川抗震救灾的"
s = s & "危急时刻,中共中央总书记、国家主席、中央军委主席胡锦涛乘飞机赶往四川"
s = s & "省地震灾区,慰问灾区干部群众,看望奋战在抗震救灾第一线的部队官兵、公"
s = s & "安民警和医护人员,指导抗震救灾工作。"
rt.Text
展开阅读全文