前言 1
第一部分 Visio开发环境 3
第一章 《开发Microsoft Visio解决方案》简介 3
1.1 关于Visio解决方案 4
1.1.1 使用Visio图形建模 4
1.1.2 Visio解决方案实例:现场销售自动化 7
1.2 使用Visio图形创建解决方案 9
1.2.1 将对象组合成绘图 9
1.2.2 用图形表示组件 10
1.3 使用SmartShape技术开发图形 12
1.4 在Visio解决方案中使用Automation 13
1.4.1 Automation和Visio对象 14
1.4.2 示例:监测事件和计算合计值 14
1.5 计划Visio解决方案 17
1.5.1 计划开发过程 17
1.5.3 计划模板 19
1.5.2 计划图形和样板 19
1.5.4 自动实现图形和模板 20
1.5.5 集成Visio解决方案和数据库 21
1.5.6 实现Automation的不同方法 22
1.6 从Visual Basic移植到VBA 24
第二部分 开发Visio图形 29
第二章 创建Visio图形 29
2.1 Visio图形剖析 29
2.1.1 封闭图形和开放图形 30
2.1.2 一维图形和二维图形 31
2.1.3 图形控制柄 32
2.1.4 组合中的图形 33
2.2 绘制新的图形 34
2.2.1 使用绘图工具创建图形 35
2.2.2 绘制封闭图形 36
2.2.5 通过合并图形来创建新的图形 37
2.2.3 通过重复元素绘制图形 37
2.2.4 创建组合 37
2.3 从其他程序导入图形 39
2.3.1 导入图形图像 40
2.3.2 编辑导入的元文件和位图 40
2.3.3 将导入的元文件转换成图形 41
2.4 利用现有的Visio图形 42
2.4.1 修订现有的图形 42
2.4.2 修订现有的组合 43
2.4.3 图形版权 45
第三章 Visio主图形、样板、模板和文档 47
3.1 创建主图形和样板 47
3.1.1 创建样板 49
3.1.2 在样板中创建主图形 50
3.1.3 在样板中编辑主图形 51
3.2 创建模板 52
3.2.1 创建模板 53
3.2.2 关于页面、背景和层 55
3.3 打开和保存Visio文档 56
3.3.1 Visio文档的组成部分 56
3.3.2 打开Visio文件 57
3.3.3 为解决方案选择适当的文件类型 58
第四章 Visio公式 59
4.1 ShapeSheet窗口 59
4.1.1 显示ShapeSheet窗口 60
4.1.2 显示ShapeSheet窗口的不同区域 62
4.1.3 在ShapeSheet窗口中查看图形 65
4.2 Visio公式的元素 67
4.2.1 在ShapeSheet窗口中输入和编辑公式 68
4.2.2 Visio公式中的函数和运算符 69
4.2.3 ShapeSheet单元格引用 70
4.2.4 公式中的单元格引用的规则 72
4.3 Visio公式的度量单位 74
4.3.1 多维单位 75
4.3.2 指定度量单位 76
4.4 设计Visio公式 77
4.4.1 图形继承公式的方式 77
4.4.2 用户定义的单元格和Scratch公式 78
4.4.3 保护公式 79
4,4.4 控制公式的重新计算 80
4.5 使用Automation补充Visio公式 81
第五章 使用公式控制图形的几何形状 83
5.1 图形的几何形状 83
5.1.1 在坐标系中描述图形 84
5.1.2 使用公式表示图形的几何形状 85
5.1.3 表示图形在页面上的位置 86
5.2.1 一个基于高度的公式示例 89
5.2 控制图形的缩放方式 89
5.2.2 优化箭头示例 91
5.3 控制图形翻转和旋转的方式 92
5.3.1 翻转对图形的影响 92
5.3.2 旋转对图形的影响 93
5.3.3 设计翻转和旋转的图形 94
5.3.4 防止图形翻转和旋转 95
5.4.1 使用圆角样式 96
5.4 控制图形中的曲线 96
5.4.2 理解弧 97
5.4.3 转换直线线段和弧线段 100
5.4.4 有用的弧公式 101
5.5 优化图形的几何形状 102
5.6 使用锁定限制图形行为 103
第六章 组合和合并图形 105
6.1 组合与合并图形 105
6.2.1 组合图形和取消组合图形 106
6.2 创建和控制组合 106
6.2.2 修改组合 107
6.2.3 组合图形对其公式的影响 108
6.3 控制组合的行为 108
6.3.1 控制组合的选定方式 109
6.3.2 定义组合图形的调整大小行为 110
6.3.3 仅在一个方向调整图形的大小 111
6.3.4 创建立体盒子的示例 112
6.4 防止编排组合中的图形的格式 115
6.5 创建和控制合并图形 116
6.5.1 合并图形 116
6.5.2 填充合并图形 117
6.5.3 隐藏图形的几何形状 118
第七章 增强图形行为 119
7.1 使用控制柄增强图形的灵活性 119
7.1.2 定义控制柄 120
7.1.1 为图形添加Controls区域 120
7.1.3 设置控制柄的锚点 123
7.1.4 设置控制柄的行为 123
7.2 快捷菜单命令 124
7.2.1 定义快捷菜单命令 125
7.2.2 控制菜单中快捷菜单命令的外观 126
7.2.3 为快捷菜单中的命令添加复选标记 127
7.2.4 灰显菜单中的快捷菜单命令 128
7.2.5 隐藏和显示快捷菜单中的命令 128
7.2.6 使用快捷菜单更改图形几何形状的示例 129
7.3 自定义属性 131
7.3.1 使用自定义属性 131
7.3.2 定义自定义属性 133
7.3.3 将自定义属性链接到数据库 136
7.4.1 使用Events区域中的单元格 137
7.4 事件公式 137
7.4.3 执行动作的函数 138
7.4.2 使用DEPENDSON函数模拟事件 138
第八章 使用一维图形、连线和粘附 141
8.1 一维图形和二维图形的差别 141
8.1.1 转化一维图形和二维图形 142
8.1.2 一维图形示例 143
8.2 创建有指向的连线和其他一维连线 144
8.2.1 创建有指向的连线 145
8.2.2 创建其他一维图形 146
8.3 控制图形的连接方式 151
8.3.1 定义连线的粘附行为 151
8.3.2 指定可以粘附的对象 153
8.3.3 理解连接点 153
8.3.4 为图形添加连接点 156
8.3.6 设置动态连线的图形 157
8.3.5 命名连接点 157
第九章 设计文本行为 161
9.1 关于图形和主图形中的文本 161
9.1.1 在ShapeSheet窗口中查看文本属性 162
9.1.2 控制文本块的位置 163
9.1.3 控制组合中的文本 165
9.2 调整包含文本的图形的大小 166
9.2.1 控制文本块的大小 166
9.2.2 以文本量作为图形大小的基础 168
9.2.3 以文本值作为图形大小的基础 169
9.2.4 随着调整图形的大小更改字号 169
9.2.5 编写公式来调整文本的大小 169
9.3 控制文本旋转 170
9.3.1 编写控制文本旋转的公式 171
9.3.2 GRAVITY公式 171
9.3.3 水平文本的反向旋转公式 172
9.3.4 限制文本块的大小 173
9.4 使用文本公式 176
9.4.1 显示和格式化公式的结果 176
9.4.2 编排字符串和文本输出结果的格式 178
9.4.3 保护文本公式 179
9.4.4 测试文本块的公式 180
第十章 管理样式、格式和颜色 183
10.1 在绘图页面中使用样式 183
10.1.1 理解样式 184
10.1.2 设置绘图的默认样式 185
10.1.3 创建新的样式 186
10.1.4 编辑样式 187
10.2 将样式应用于图形的指导 187
10.2.1 重新格式化绘图页面中的图形 188
10.2.3 重新格式化主图形的所有实例 189
10.2.2 重新格式化独立样板中的主图形 189
10.3 使用样板和模板中的样式 190
10.3.1 保持文件间样式的一致性 191
10.3.2 使用样式的命名约定 191
10.3.3 定义样式的指导 192
10.4 保护本地图形格式 192
10.4.1 通过用户界面保持本地图形格式 193
10.4.2 通过ShapeSheet数据表保持本地图形格式 193
10.5 管理样式、图形和文件中的颜色 193
10.5.1 编辑调色板 194
10.5.2 标准化文档间的调色板 195
10.5.3 使用公式定义自定义颜色 195
10.5.4 为自定义颜色添加透明度 196
10.6 自定义图案 197
10.6.1 创建自定义图案 197
10.6.2 开发自定义的填充图案 199
10.6.3 开发自定义的线条图案 201
10.6.4 开发自定义的线条端点 204
第十一章 安排绘图中的图形 207
11.1 将图形和主图形分配到层中 207
11.1.1 有效地使用层 208
11.1.2 将图形和组合分配到层中 209
11.2 设计栅格 210
11.2.1 为模板的绘图页面设置栅格 211
11.2.2 创建使用栅格的主图形 211
11.2.3 使用公式保存栅格信息 213
11.3 将图形与辅助线和辅助点对齐 213
11.3.1 使用辅助线或辅助点的指导 214
11.3.2 操纵辅助线和辅助点 215
11.3.4 组合辅助线和图形 216
11.4 使用对齐框将图形捕捉到栅格 216
11.3.3 经过旋转的页面中的辅助线 216
11.4.1 调整图形对齐框的大小 217
11.4.2 更新对齐框 219
11.4.3 更改一维图形的对齐框 219
11.5 设计用于自动布局的图形 220
11.5.1 设置页面的布局选项 220
11.5.2 设置图形和连线的行为 221
第十二章 经过缩放的图形和经过度量的绘图 223
12.1 选择适当的绘图比例 223
12.1.1 理解绘图比例和页面比例 224
12.1.2 选择绘图比例时的注意事项 224
12.2 选择主图形的比例 225
12.2.1 确定主图形适当的比例 226
12.2.2 设置主图形的比例 227
12.3 创建不被缩放的图形 228
13.1 设计用于分发的自定义图形 231
第十三章 封装样板和模板 231
13.1.1 图形设计过程的指导 232
13.1.2 图形、样板和模板分发的注意事项 232
13.2 测试主图形 233
13.2.1 检查主图形的一致性 233
13.2.2 在主图形的绘图窗口中检查主图形 234
13.2.3 测试具有不同页面比例的图形 235
13.3 为自定义的解决方案添加帮助 236
13.3.1 将“帮助”与主图形联系起来 236
13.3.2 测试图形的“帮助” 238
13.3.3 添加集成到Microsoft Visio“帮助”系统中的HTML Help 238
13.4 完成和测试样板 238
13.4.1 创建主图形的快捷方式 239
13.4.2 清理样板中的主图形 240
13.4.3 清理样板文件 241
13.4.4 测试样板 242
13.5 完成和测试模板 243
13.5.1 清理模板 243
13.5.2 测试模板 244
13.6 安装样板和模板 246
13.6.1 移动模板文件 247
13.6.2 保护样板和模板 247
第三部分 使用Automation扩展Visio 251
第十四章 Automation和Visio对象模型 251
14.1 Automation概述 251
14.2 Visio对象模型 252
14.3 获得和释放Visio对象 254
14.3.1 声明对象变量 254
14.3.2 通过属性访问Visio对象 255
14.3.3 引用集合中的对象 256
14.3.4 重复执行集合 257
14.3.6 使用复合的对象引用 258
14.3.5 释放对象 258
14.4 使用属性和方法 259
14.3.7 限制对象变量的范围和生存期 259
14.4.1 声明返回值和参数的变量 260
14.4.2 获得和设置属性 260
14.4.3 使用对象的默认属性 261
14.4.4 使用方法 261
第十五章 使用VBA编写Visio程序 263
15.1 使用Visual Basic Editor 263
15.1.1 启动Visual Basic Editor 264
15.1.2 定位项目 265
15.1.3 保存项目 265
15.1.4 启用或禁用VBA项目的创建功能 266
15.2 创建VBA项目 267
15.2.1 将模块和类模块插入到项目中 268
15.2.2 将用户窗体插入到项目中 269
15.3 使用Visio类型库 271
15.2.3 将文件导入到项目中和从项目中导出文件 271
15.3.1 使用Object Browser 272
15.3.2 设置类型库的引用 273
15.3.3 使用Visio对象类型 273
15.4 使用全局对象和ThisDocument对象 275
15.4.1 使用Visio全局对象 275
15.4.2 使用ThisDocument对象 276
15.5 通过Visio运行VBA代码 277
15.6 处理错误 280
15.6.1 在正确的上下文中运行程序 280
15.6.2 验证对象和返回值是否存在 281
15.6.3 检查错误值 281
15.7 管理VBA项目 282
15.7.1 删除项目文件 282
15.7.2 保护解决方案的VBA代码 282
15.7.3 使用数字证书生成值得信任的解决方案 283
15.7.4 使用Add-In Manager 286
第十六章 使用Visio文档、页面和图形对象 289
16.1 使用Document对象 289
16.1.1 获得Document对象 290
16.1.2 获得有关文档的信息 291
16.1.3 使用文档中的样式 292
16.1.4 为文档创建样式 293
16.1.5 打印和保存文档 293
16.1.6 显示文档的页面 294
16.2 使用Page对象 295
16.2.1 获得Page对象 295
16.2.2 获得有关页面的信息 296
16.2.3 将页面添加到绘图中 296
16.3 使用Shape对象 297
16.3.1 获得Shape对象 297
16.3.2 获得有关图形的信息 299
16.3.3 创建和更改图形 300
16.3.4 为图形添加文本 302
16.3.5 获得图形的文本 303
16.3.6 为图形标识和应用样式 303
16.3.7 保护本地格式 304
16.3.8 通过程序创建组合 304
16.3.9 创建主图形 305
16.4 示例:创建一个简单的绘图 306
第十七章 自动执行公式 309
17.1 使用单元格中的公式 309
17.1.1 获得Cell对象 310
17.1.2 使用Formula属性更改单元格的公式 312
17.1.3 获得公式的结果 313
17.1.4 用结果替换公式 314
17.1.6 使用公式移动图形的示例 315
17.1.5 覆盖受保护的公式 315
17.2 使用区域和行 316
17.2.1 添加区域和行 316
17.2.2 为图形添加Geometry区域的示例 317
17.2.3 删除区域和行 320
17.2.4 更改线段的类型 320
17.2.5 在区域和行的集合中反复执行的示例 321
17.3 使用继承的数据 322
第十八章 使用Automation进行绘制 325
18.1 自动使用主图形进行绘制 325
18.1.1 获得样板 326
18.1.2 获得主图形 326
18.1.3 将主图形拖放到页面中 327
18.2 将图形放置到绘图中 328
18.2.1 使用Automation设置图形的示例 328
18.2.2 相对于其他图形来放置图形 330
18.3 使用选定的图形 334
18.3.1 获得在窗口中选定的图形 335
18.3.2 添加或删除选定的图形 336
18.3.3 在窗口中选定和取消选定图形 336
18.3.4 对选定的图形执行操作 337
18.3.5 确定选定的范围 337
18.4 背景页 338
18.4.1 创建和指定背景页 338
18.4.2 反复执行Pages集合的示例 338
18.4.3 设置页面和背景的示例 339
18.4.4 更改页面设置 339
18.5 层 340
18.5.1 在页面或主图形中标识层 341
18.5.2 标识图形将要被分配到的层 341
18.5.5 更改层的设置 342
18.5.4 将层添加到页面或主图形中和从页面或主图形中删除层 342
18.5.3 将图形分配到层和从层中删除图形 342
第十九章 在Visio解决方案中自动进行连接 345
19.1 使用Connect对象 345
19.2 获得连接绘图的信息 348
19.2.1 确定连接的图形 348
19.2.2 确定连接的图形部分 348
19.2.3 获得连接中的单元格 350
19.2.4 分析连接的绘图的指导 350
19.3 在页面的连接中反复执行的示例 351
19.4 通过程序创建连接的绘图 353
19.4.1 如何进行图形部分之间的粘附 354
19.4.2 使用Cell对象进行粘附 356
19.4.3 将一个图形粘附到另一个图形 356
19.5 连接流程图中的图形的示例 357
20.1 使用Automation集成数据和图形 361
第二十章 集成数据和Visio解决方案 361
20.1.1 添加自定义属性和用户定义的行 362
20.1.2 生成和使用唯一的ID 362
20.2 存储和检索数据的Visio属性 364
20.3 在解决方案中存储和检索XML数据 364
20.3.1 将XML数据存储到文档中和从文档中检索XML数据 365
20.3.2 将XML数据存储到单元格中和从单元格中检索XML数据 366
20.4 编写从Visio绘图提取数据的代码 367
20.4.1 从绘图中提取数据的示例 368
20.4.2 检查从绘图中提取数据的代码 370
20.5 编写从数据创建Visio绘图的代码 371
20.5.1 从数据创建绘图的示例 372
20.5.2 检查从数据创建绘图的代码 374
20.6 集成Visio解决方案和数据库 375
第二十一章 处理Visio事件 377
21.1 事件概述 378
21.2 编写事件背后的代码 379
21.2.1 处理由ThisDocument触发的事件 380
21.2.2 使用WithEvents关键字声明对象变量 382
21.2.3 定义接收事件的类 383
21.2.4 响应事件的类模块的示例 385
21.3 Visio事件对象 386
21.3.1 定义事件对象 386
21.3.2 筛选事件对象 388
21.3.3 获得有关Event对象的信息 391
21.3.4 创建运行附加项的Event对象 391
21.3.5 运行附加项的Event对象的持续性 392
21.3.6 创建发送通知的Event对象 392
21.3.7 VisEventProc过程的示例 396
21.3.8 发送通知的Event对象的示例 397
21.3.9 发送通知的Event对象的生存期 398
第二十二章 自定义Visio用户界面 399
22.1 使用CommandBar对象自定义Visio用户界面 400
22.1.1 使用命令栏对象模型 400
22.1.2 创建命令栏 401
22.1.3 获得有关命令栏的信息 405
22.1.4 删除命令栏 405
22.1.5 使用命令栏控件 406
22.1.6 编写命令栏代码的示例 409
22.1.7 防止用户修改自定义的命令栏 413
22.1.8 防止用户修改所有的Visio命令栏 413
22.2 使用Visio UIObject对象自定义Visio用户界面 413
22.2.1 关于菜单对象 415
22.2.2 关于快捷键对象 417
22.2.3 关于工具栏对象 417
22.2.4 计划对用户界面进行的更改 418
22.2.5 更改用户界面 421
22.3 使用自定义用户界面文件 432
22.3.1 关于Custom.vsu 432
22.3.2 保存自定义用户界面文件 432
22.3.3 加载自定义用户界面文件 433
22.3.4 恢复内置的Visio用户界面 433
第二十三章 在Visio解决方案中使用COM加载项 435
23.1 在Visio中访问COM加载项 435
23.1.1 查看可用的COM加载项的列表 436
23.1.2 使用COMAddIns属性获得有关COM加载项的信息 437
23.2 为Visio创建COM加载项 437
23.2.1 使用加载项设计器 438
23.2.2 指定加载行为 442
23.2.3 在加载项设计器中编写代码 443
23.2.4 将COM加载项挂接到命令栏控件中 445
23.2.5 编写COM加载项的代码的示例 447
23.2.6 制作DLL和注册COM加载项 449
23.2.7 发布COM加载项 450
第二十四章 在Visio解决方案中使用ActiveX控件 453
24.1 将ActiveX控件添加到Visio解决方案中 453
24.1.1 在设计模式下工作 453
24.1.2 在绘图中插入控件 454
24.1.3 设置控件的Tab键顺序 456
24.1.4 在控件中使用Visio环境属性 457
24.1.5 在不包含它的控件的情况下显示绘图 457
24.1.6 防止更改控件 457
24.2 处理控件的事件 458
24.3 在运行时使用控件 458
24.3.1 关于控件名称 458
24.3.2 获得OLEObjects集合中的控件 459
24.4 在Visio解决方案中发布ActiveX控件 460
24.5 与图形进行交互操作的ActiveX控件的示例 460
第二十五章 在程序中使用Visio Undo管理器 465
25.1.1 撤消和重做概述 466
25.1 Visio Undo管理器 466
25.1.2 Visio Undo管理器使用加载项的方式 467
25.2 在加载项中创建撤消范围 468
25.2.1 创建撤消范围 468
25.2.2 关联事件和撤消范围 469
25.3 创建撤消单元 469
25.3.1 创建撤消单元 470
25.3.2 在Visio Undo管理器中添加撤消单元 471
25.4 创建维护非Visio数据的撤消单元的示例 471
第二十六章 封装Visio Automation解决方案 475
26.1 安装Visio解决方案 475
26.1.1 指定Visio文件的路径和文件夹 476
26.1.2 Visio搜索文件路径的方式 477
26.2 控制程序运行的时间 478
26.3.1 发布Microsoft VBA程序 483
26.3 发布程序 483
26.3.2 Microsoft VBA解决方案中的绘图文件的大小 484
26.3.3 在解决方案中使用通用名称 484
26.3.4 重要的许可信息 485
第二十七章 使用Visual Basic编写Visio程序 487
27.1 获得Visio实例 487
27.1.1 创建Application对象 487
27.1.2 获得Application对象 488
27.1.3 释放Application对象 488
27.1.4 在Visual Basic程序中使用Application对象的示例 489
27.1.5 使用实例的窗口句柄 491
27.1.6 与其他程序进行交互操作 491
27.2 创建Visio文档 492
27.3 在Visual Basic中处理错误 493
27.4.1 从Macros子菜单运行程序 494
27.4 解释Visio发送给程序的命令字符串 494
27.4.2 当计算公式时运行程序 495
27.4.3 使用参数运行程序 496
27.4.4 从Startup文件夹运行程序 496
27.4.5 解析命令字符串 497
27.5 在Visual Basic项目中使用Visio类型库 497
第二十八章 使用C++编写Visio程序 499
28.1 Visio展示对象的方式 500
28.2 Visio中的C++支持 501
28.2.1 使用包装函数类 502
28.2.2 包装函数背后的接口 503
28.2.3 获得Visio的Application对象 505
28.2.4 Visio方法返回的值 506
28.2.5 传递给Visio方法的参数 507
28.3.1 实现接收器对象 509
28.3 在C++程序中处理Visio事件 509
28.3.2 使用CVisioAddonSink 510
28.4 Visio库 512
28.4.1 Visio库的优点 512
28.4.2 Visio库的基本结构 513
28.4.3 声明和注册附加项 514
28.4.4 运行附加项 516
第四部分 附录 521
附录A 对象的属性、方法和事件 521
附录B ShapeSheet区域、行和单元格索引 547
B.1 图形的区域、行和单元格索引 548
B.2 样式的区域、行和单元格索引 554
B.3 页面的区域、行和单元格索引 555
B.4 文档的区域、行和单元格索引 557
B.5 制表位单元格和行类型 557
词汇表 559