This fine book is available now at our bookstore....
Visio 2000 Developer's Survival Guide
by Graham Wideman; co-published with diagramantics.com
344 pages; quality trade paperback (softcover); catalogue #00-0071; ISBN 1-55212-407-X; US$49.95, C$76.85, EUR50.00, £34.70
How to build robust, maintainable solutions with Visio's ShapeSheet and Automation development environments
Read more!
about the book about the author Table of Contents catalogue info
![]()
About the Book
If you want to build robust, maintainable solutions with Visio's ShapeSheet and Automation development environments, you need to understand Visio's structure and behavior. Not just superficially, but in depth. The key challenges are these:
A Comprehensive and Deep Understanding: The Visio environment gives a great head-start to your diagram-intensive solution project. However, a programmable diagramming environment is significantly more involved than, say, the automation models of Excel or Word. It's deceptively easy to get started in Visio, and you can advance a considerable distance with Visio's supplied Developing Visio Solutions book (essential!) and the Developer Help. But before long you'll need to build an extensive and detailed understanding of Visio's numerous functional areas, and that's very hard to assemble one nibble at a time from Help.The "Subtractive Programming Problem": Even once you've gained some capability with Visio, the other issue you will face is the "subtractive programming" problem. Great that you are able to base your solution on several features of Visio, but how do you disable all the features in Visio's huge array the you don't want exposed to your users? For that you need a knowledge of Visio far beyond just the functional areas directly relevant to your project. And you'll want to cover that territory quickly.
The point of departure for this book is an overview of the Visio environment, and the structures that Visio-based solutions might take. Next, the entire Visio structure is laid out in organized and comprehensive diagrams and tables, so you can absorb it at full speed. Then each major area of Visio structure comes under scrutiny to discover how its behavior can be tamed and harnessed by developers.
See also: Visio 2002 Developer's Survival Pack
Visio 2003 Developer's Survival Pack
About the Author
Graham Wideman has over 25 years of experience in electrical engineering, software development, information systems, business analysis and conceptual modeling. In each of these disciplines he mastered the formal diagrams, yet in addition always found the need to generate drawings automatically, and to extend each diagrammatic convention in formal or informal ways to convey richer sets of detail or summary-level concepts.
Partly to that end, he has been building solutions and tools with diagramming libraries and environments for ten years, and with Visio for over five years. Wideman is also affiliated with the SemNet group centered as San Diego State University. Over the last 15 years this group has produced basic tools for diagramming general semantic networks and formally studying the teaching and learning benefits in making concepts and relationships explicit.
During his experience with Visio, he has increasingly participated in online forums and in beta programs (after one beta, he was thanked for submitting more and better quality bug reports than all other testers combined). He can be found on the Visio newsgroups at msnews.microsoft.com. Once starting on this book project, this past activity helped foster some invaluable input from some of Visio's developer team members. Recently Wideman was recognized with a Microsoft Valued Professional (MVP) award for Visio.
Visit Graham Wideman's Diagramantics Web site
Table of Contents
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
- Some Subtleties 166
- 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
- Comments 237
- 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
- Bottom Line 267
- 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
- Parameters 270
- 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
- Acrobat Reader Tips 328
Index 329
Catalogue Information
![]()
About Trafford Publishing:
Our books are manufactured one-at-a-time to fill individual orders -- part of an innovative process we invented, called "on-demand publishing." Authors and organizations from 120 countries are using Trafford for their publishing needs.
If you (or your company) wish to list a title for sale to the public, contact the nearest office or select "publishing offices" from our bookstore pages for details.
Canada • USA • UK • Republic of Ireland
Contact UsURL http://www.trafford.com © 1995-2005 Trafford Publishing, a division of Trafford Holdings Ltd.
Trafford's Privacy Policy: Client information will never be provided to anyone outside of Trafford and its subsidiaries except where required by law.