Book Contents In Detail
Part 1: Overview Of The Visio Development Environment 15
Chapter 1: Introduction 17
- Programmable Diagramming: Enter Visio 18
- The Development Challenges 18
- Who This Book Is For 19
- What This Book Covers 19
- What This Book Does Not Cover 20
- Caveat: This Book Is Probably Wrong! 20
- Companion Website 20
- Visio Version Information 21
- Acknowledgements 21
Chapter 2: Overview of Visio Territory 23
- The User's View 23
- The Developer's View 24
- Generic Solution Structure 24
- At the Heart 24
- Automation 24
- Add-On Code Modules 25
- Connections To Data 27
- Example Scenarios 28
- First Look At Visio Structure 28
- "Model + View + Controller" Structure 29
- Document Types and Roles 30
- Where The ShapeSheet Environment Fits In 31
- ShapeSheet Heavily Used In Automation Too 32
- The Automation Environment 32
- Visio Model vs. Solution Model 33
- From Here 33
Chapter 3: A Plan For Coping 35
- Planning Your Course Of Study 35
- Toolkit 36
- Developing Visio Solutions Book ("DVS") 37
- Multiple Monitors 37
- Get Comfortable With VBA 37
- Developer Tools 37
- Other Resources 38
- Books 38
- Newsgroups 38
- Websites 38
- Preliminary Skillset 38
- Preliminary User-level Visio Activities 38
- Some ShapeSheet Activities 40
- Preliminary Developer-Level Activities 40
- From Here 40
Part 2: Visio Structural Breakdowns 41
Chapter 4: Visio Object Model 43
- Object Model Notes 43
- Objects with Cells 45
- Collections Versus Individual Objects 45
- User Controls Shown Abbreviated 45
- Layer Objects 45
- Relationship To DVS and Poster Object Models 45
- From Here 45
Chapter 5: ShapeSheet Structure Introduction 47
- Orientation 47
- ShapeSheet-Environment Covers "Content" Branch of Object
Model 47
- Complete Automation Understanding Must Include Cells
! 48
- ShapeSheet Organized as Sections, Rows and Columns 48
- "All ShapeSheets Behave the Same" 49
- How the ShapeSheet Applies to Diagram Shapes 49
- Objects Which Contain Cells Via Dummy Shapes 50
- Objects Which Contain Cells Directly 50
- Zooming In Further 51
- ShapeSheet Sections and Rows 51
- Different Section Structures 51
- Sections and Rows 52
- ShapeSheet Formulas 54
- From Here 54
Chapter 6: ShapeSheet: Detailed Section-Row-Cell Structure 55
- Reading The Tables 55
- Constants 56
- Finding The Section Of Interest 56
Chapter 7: ShapeSheet Functions 75
Chapter 8: Visio Objects and Their Properties and Methods 83
- Object/Property/Method Tables 84
- Object Summary Table 84
- COM-Related Columns 84
- Event DispInterfaces 85
Part 3: Visio Functional Areas In Depth 149
Chapter 9: Visio Files: Drawings, Stencils, Templates 151
- Top Concepts 151
- Organizing Our Overview 152
- File Relationships 153
- Drawing File Point-of-View 153
- Drawing File With Stencil 154
- Template file 155
- Summary of Roles of Document Components 156
- Silly Visio File Tricks 156
- File Architecture Implications 157
- Developing Masters and Styles 157
- Where To Put VBA Code? 157
- From Here 160
Chapter 10: Shapes 161
-
- Comfort First 161
- Shapes and Masters 162
- "Hello World" via Automation and VBA 162
- Single Shape Type, Distinguishing Attributes 162
- Shape Features Overview 163
- Identity and Name 164
- Coordinate Space and Alignment Box 166
- Coordinate Space 167
- One-Dimensional Shapes (Connectors) 168
- Alignment Box 168
- Selectively Enabling/Disabling Various Geometry-Controlling Features
169
- Geometry and Geometry Attributes 170
- Geometry Row Types. 170
- Geometry Attributes 171
- Geometry-Related Formatting 171
- Adjusting Feature Positions: Controls 171
- Text 172
- Text Position 172
- Text Appearance 172
- Useful Text Idioms 172
- Fields: ShapeSheet Values to Text 173
- Text To ShapeSheet: SHAPETEXT( ) 174
- Text To ShapeSheet Value: EVALTEXT() 174
- Setting the Text from the ShapeSheet 175
- Selectively Enabling/Disabling Text Behaviors 175
- From Here 175
- Shapes With Member "Sub-Shapes" (Group Shapes) 175
- Connectors, 1-D Shapes 175
- Glue, Connections and Connection Points 175
- Solution-Specific "Data" 176
- Styles and Masters 176
- Layers 176
- Right-Click Context Menu: Actions 176
- Events 176
- Foreign Objects 176
- Hyperlinks 176
Chapter 11: Masters and Shapes 179
- "Master" versus "Shape Instance" 179
- Master-To-Shape and Shape-To-Master 180
- Starting From New Master 180
- Starting From Drawing Page 180
- Stencil File versus Document Stencil 181
- Instances Are Always Created From Local Stencil
182
- Master Matching Alternatives 182
- Development Implications 182
- Other Wrinkles 183
- From Here 183
Chapter 12: Some ShapeSheet Practicalities 185
- ShapeSheet Cell Reference Syntax 185
- Finding Out Cell Names 186
- Universal and Local Row and Cell Names 186
- Which Names Are Which? 187
- ShapeSheet Calculation Dependencies 188
- Cells Set Multiple Ways 188
- Monitoring Recalc Loops 189
- Keys To Solution 190
- Trickier Example 190
- To REALLY Break A Loop 190
- Twin Peaks Example 191
- Flaky Recalculation Problems 192
- The DEPENDSON( ) Function 193
- Guard( ) Function Revisited 195
- ShapeSheet Cell Types and Units 195
- Internal Numeric Value versus Output Appearance 195
- "Magic" X, Y Extraction 196
- Assumed Units 196
- From Here 196
Chapter 13: Composite Shapes Using Groups 197
- Group Structure 197
- Group As Holder Only 197
- Group As Shape With Sub-Shapes 198
- Member Coordinate Space 199
- Group Behavior Variants 201
- Resize Behavior 201
- Add On Drop, a Very Promising Feature 201
- Controlling The Alignment Box 202
- Controlling Formatting 202
- A Composite Shape Example 203
- Structure 203
- Behavior 204
- ShapeSheet 204
- Editing The Structure With VBA Functions 206
- Embellishments 209
- Protection/Enablement Issues 210
- Composite Shapes: Ready To Deploy? 210
- Form-Style Text Behavior 211
- Navigation 211
- Text Clipping 212
- From Here 212
Chapter 14: Connectors, Routing and Layout 213
- Plan of Attack 214
- Connectors Using Ordinary ShapeSheet Features 214
- 1-D Coordinate Space 214
- Straight Connector 215
- Curve Connector 216
- Right Angle Connector 216
- Shortcomings 217
- Universal Connector 217
- Further Caveats 220
- Summary of Simple Connectors Implementation 220
- Dynamic Layout Services 221
- Individual Dynamic Layout Services 221
- Basic DLS Participation Eligibility: ObjType 222
- Dynamic Layout Services Details 223
- Routing 223
- Line Jumps 224
- Plowing 226
- Layout 226
- Dynamic "Walking" Glue 227
- Page-level DLS Disable: DynamicsOff 228
- Dynamic Connectors 228
- Dynamic Connector Geometry 228
- Implications For Geometry Dependents 229
- Text Pin 229
- Connection Points 230
- Control Points 230
- Enable/Disable Dynamic Connector Functionality 231
- Some Dynamic Connector Developer Issues 231
- Alternative Solutions to Fancy Routing 235
- Comparison of Connector Strategies 238
- From Here 239
Chapter 15: Glue and Connects 241
- Orientation 241
- What Glues to What 243
- Glue In Action 244
- Initialization 244
- How Gluer Depends on Gluee 244
- Control Point to Connection Point 244
- Connector Endpoint to Connection Point 246
- Connector to "Shape": Dynamic or "Walking" Glue
246
- Various Parts to Guide Lines 246
- Visio 2000's Gendered, Directional Connection Points 247
- Factors Affecting User Operation of Glue 250
- Glue Enable/Disable Wrinkles 250
- Lock/Guard Glue Formulas 251
- Connections To/From Group Member Shapes 251
- Some Glue Issues 251
- Dynamic Glue (_WALKGLUE) Issues 252
- Connects Objects: Reporting On Connections 252
- Connects Just Reports on Cells 253
- Some Connections Report As Two Connect Objects 253
- Other Notes 253
- Temporary Connection Points 253
- From Here 254
Chapter 16: Formatting Via Masters and Styles 255
- Mastering Master Concepts 256
- Copying versus Inheritance 256
- The Initial Master-Instance Relationship 257
- Verifying Inheritance/Local Behavior 257
- Creating and Removing Local Override Formulas 258
- Severing Master-Shape Inheritance 258
- Master Identity and Names 258
- Styles-The Basics 259
- Style "Attribute Sets": Three Sets of Cells 259
- Style-to-Style Inheritance 260
- Master and Style Inheritance, Together At Last 261
- Three "Sub-Style" Attribute-Sets Versus Overall
"Style" 262
- Applying a Style 262
- Applying a Style Switches Inheritance For Entire Attribute-Set 263
- Applying a Local Formula or Value to a Cell 263
- Does "Apply Style" Beat Guard() and LockFormat? 263
- Reverting a Section or Cell to Inheritance 264
- Un-Applying a Style (Revert to Inheritance from Master) 264
- Style Collisions 264
- Style Philosophy and Application 265
- Styles as Named Sets of Attribute-Values 265
- Styles for Conveying Semantics 265
- The Evil "Color Scheme" Add-On 265
- Rethinking the Motivation 266
- Style Miscellany 267
- Seemingly Superfluous Sections? 267
- Some Development Implications 267
- Incomplete Inheritance Control and Visibility 267
- The Need for Tools 268
- From Here 268
- Line Ends and Patterns 268
Chapter 17: Line and Fill Patterns and Line Ends 269
- Relationship Between Pattern Masters and Instances 269
- Line Pattern and Line End Miscellany 271
- Creating Unscaled Line-Ends 271
- Line End Sizing Ratios 272
- Line Pattern and Line End Positioning 273
- Other Wrinkles 274
- From Here 274
Chapter 18: Layers 275
- Orientation 275
- Layer Structure And Behavior 276
- A Page's Layers Versus Layers Object 276
- A Shape's Layer Membership 276
- Adding/Deleting Layers 276
- Assigning Shapes to Layers 276
- Using Layers 277
- Layers For Shape Data Attributes and Querying 277
- Querying Made Feasible 278
- Layer Control Tricks 279
- From Here 279
Chapter 19: The "User Interface" Functionality 281
- Orientation 281
- The UI Object Model 282
- UIObject Peculiarities 282
- Extent of the UI Data 284
- MenuSets, Menus, MenuItems 284
- AccelTables, AccleItems 285
- ToolbarSets, Toolbars, ToolbarItems 285
- Statusbars, StatusbarItems 285
- General UI Strategy 285
- Constructing a Custom UI 285
- Persisting and Instating a Custom UI 287
- Wrinkles 288
- Potentially Confusing UIObject Names 288
- Document.CustomToolbars Gets Set Unexpectedly 288
- Disappearing Toolbar Items 289
- From Here 289
- Tables Referred To in This Chapter 289
Chapter 20: Events 295
- Overview 295
- Several Different Event Mechanisms 295
- Where To Put The Code? 296
- Event Persistence 297
- ShapeSheet-Triggered Event Handling 297
- CALLTHIS 297
- RUNADDON 298
- RUNADDONWARGS 300
- Dedicated Event Cells 300
- Automation Events Overview 301
- Document Events 304
- WithEvents Event Handling 304
- WithEvents Overview 304
- Code for WithEvents: Simple Case 305
- Code for WithEvents: More Realistic Case, Using Class Module 306
- Further Issues 310
- Events Via EventList.Add and AddAdvise 310
- EventList.Add 311
- EventList.AddAdvise 313
- A Class To Implement IVisEventProc 314
- An Event Sink Object Manager Module 315
- Persistence 316
- AddAdvise Compared To WithEvents 316
- EventList Interacts With WithEvents 317
- Miscellaneous Issues 317
- NoEventsPending versus VisioIsIdle 317
- BeforeXXX Events 318
- VB/VBA Issue With Signed Two-Byte EventCode Values 319
- Event Support That Visio Lacks 319
- From Here 319
Chapter 21: Loose Ends 321
- Undo 321
- Internationalization: Universal versus Local Names 322
- Document Protection 323
- Paths and Curves 323
- Registry 324
- Version Info 324
- Conclusions 326
Appendix: 1: Using the PDF Version of This Book 327
Index 329
Article Created: 2000-06-09 Last edit: Last edit: 00-10-30 Graham Wideman
Go to: DiagramAntics.com