|
|
Visio® 2003 Developer's Survival Pack |
|
|
|
| Section | Page |
|
Table of Contents |
3 |
|
Part 1: Overview Of The Visio Development Environment |
21 |
|
Chapter 1: Introduction |
23 |
|
Programmable Diagramming: Enter Visio |
24 |
|
The Development Challenges |
24 |
|
Who This Book Is For |
25 |
|
What This Book Covers |
26 |
|
What This Book Does Not Cover |
26 |
|
Caveat: This Book Is Probably Wrong! |
26 |
|
Companion Website for Tools, Samples, Updates |
27 |
|
Visio Version Information |
27 |
|
Acknowledgements |
28 |
|
Chapter 2: Overview of Visio Territory |
29 |
|
The User's View |
29 |
|
The Developer's View |
30 |
|
Generic Solution Structure |
31 |
|
At the Heart |
31 |
|
Automation |
32 |
|
Added Functionality |
32 |
|
Connections To Data |
34 |
|
Example Scenarios |
35 |
|
First Look At Visio Structure |
36 |
|
"Model + View + Controller" Structure |
37 |
|
Document Types and Roles |
37 |
|
Where The ShapeSheet Environment Fits In |
38 |
|
ShapeSheet Heavily Used In Automation Too |
39 |
|
The Automation Environment |
39 |
|
Visio Model vs. Solution Model |
40 |
|
From Here |
40 |
|
Chapter 3: A Plan For Coping |
41 |
|
Planning Your Course Of Study |
41 |
|
1. This Book Builds On Other Essential Sources |
41 |
|
2. Use the Automation Object Model as Mental Scaffolding |
43 |
|
3. Reading Strategies |
43 |
|
Preparation |
44 |
|
Multiple Monitors |
44 |
|
Get Comfortable With VBA |
44 |
|
Companion Website For This Book |
44 |
|
Visio 2003 Developer's Survival Pack Browser Tools |
45 |
|
Document-Page-Window Browser |
45 |
|
Drag-And-Drop Spy |
45 |
|
Geometry Helper |
45 |
|
ShapeSheet Developer Helper |
45 |
|
Screwdriver for Directional Connection Points |
45 |
|
Animation Addon |
45 |
|
Events Browser |
45 |
|
UIObjects Browser |
45 |
|
CommandBars Browser |
45 |
|
Inheritance Browser |
46 |
|
XML Browser |
46 |
|
Bulk VS?-to-XML Converter |
46 |
|
Visio.bin Browser |
46 |
|
Download and Installation |
46 |
|
Visio 2003 Developer's Survival Pack Utilities |
46 |
|
VB-to-VSL Adapter Component |
46 |
|
Registration Tools |
46 |
|
Other References and Support |
46 |
|
Books |
46 |
|
Newsgroups |
47 |
|
Websites |
47 |
|
More Visio Tools |
47 |
|
Preliminary Visio and VBA Skillset |
47 |
|
Preliminary User-level Visio Activities |
48 |
|
Some ShapeSheet Activities |
49 |
|
Preliminary Developer-Level Activities |
49 |
|
From Here |
50 |
|
Part 2: Visio Structural Breakdowns |
51 |
|
Chapter 4: Visio Object Model |
53 |
|
Object Model Developments in Visio 2003 |
53 |
|
Expanded Object Model |
55 |
|
Objects with Cells |
55 |
|
Collections Versus Individual Objects |
55 |
|
User Interface Objects Shown Abbreviated |
55 |
|
Layer Objects |
55 |
|
Relationship To DVS and Poster Object Models |
55 |
|
Browsable Object-Property-Method Tables |
56 |
|
Tools for Object Model Browsing |
56 |
|
Visimation Xpose |
56 |
|
VBA Object Browser |
57 |
|
VBA Locals Window |
57 |
|
XML Browser |
58 |
|
Additional Tools |
58 |
|
From Here |
58 |
|
Chapter 5: ShapeSheet Structure and Functions Introduction |
59 |
|
Orientation |
59 |
|
Complete Automation Understanding Must Include Cells! |
59 |
|
ShapeSheet-Environment Covers "Content" Branch of Object Model |
60 |
|
ShapeSheet Organized as Sections, Rows and Columns |
60 |
|
ShapeSheet Section-Row-Cell Reference Tables |
62 |
|
ShapeSheet Orientation Continued |
62 |
|
"All ShapeSheets Behave the Same" |
62 |
|
How the ShapeSheet Applies to Diagram Shapes |
62 |
|
Objects Which Contain Cells Via Dummy Shapes |
63 |
|
Objects Which Contain Cells Directly |
63 |
|
ShapeSheet Sections and Rows |
64 |
|
Varying Section-Row Structures |
64 |
|
Sections and Rows vs. Objects |
66 |
|
ShapeSheet Formulas and Functions |
66 |
|
From Here |
68 |
|
Part 3: Visio Functional Areas In Depth |
69 |
|
Chapter 6: Visio Files: Drawings, Stencils, Templates |
71 |
|
Top Concepts |
71 |
|
Organizing Our Overview |
72 |
|
Use XML Browser |
73 |
|
File Relationships |
73 |
|
Drawing File Point-of-View |
73 |
|
Drawing File With Stencil |
74 |
|
Template file |
75 |
|
Summary of Roles of Document Components |
77 |
|
Silly Visio File Tricks |
77 |
|
File Architecture Implications |
77 |
|
Developing Masters and Styles |
77 |
|
Where To Put VBA Code? |
78 |
|
How Visio Groups Solution Components |
78 |
|
Directory-Based Component Grouping |
78 |
|
MSI-Based Component Grouping |
79 |
|
MSI 5 Cent Tour |
80 |
|
Alternate Names: How Visio Finds Templates and Stencils |
81 |
|
Conclusions |
81 |
|
From Here |
82 |
|
Chapter 7: Shapes |
83 |
|
Comfort First |
83 |
|
Shapes and Masters |
83 |
|
"Hello World" via Automation and VBA |
84 |
|
Single Shape Type, Distinguishing Attributes |
84 |
|
Shape Features Overview |
84 |
|
Identity and Name |
86 |
|
Some Subtleties |
88 |
|
Coordinate Space and Alignment Box |
89 |
|
Coordinate Space |
89 |
|
One-Dimensional Shapes (Connectors) |
90 |
|
Alignment Box |
91 |
|
Selectively Enabling/Disabling Various Geometry-Controlling Features |
92 |
|
Geometry and Geometry Attributes |
92 |
|
Geometry Row Types |
92 |
|
Geometry Attributes |
93 |
|
Geometry-Related Formatting |
94 |
|
Adjusting Feature Positions: Controls |
94 |
|
Text |
94 |
|
Studying Visio's Supplied Stencils and Templates |
95 |
|
From Here |
95 |
|
Geometry In Detail |
95 |
|
Text in Detail |
95 |
|
Shapes With Member "Sub-Shapes" (Group Shapes) |
95 |
|
Connectors, 1-D Shapes |
95 |
|
Glue, Connections and Connection Points |
95 |
|
Solution-Specific "Data" |
96 |
|
Styles and Masters |
96 |
|
Layers |
96 |
|
Right-Click Context Menu: Actions |
96 |
|
Events |
96 |
|
Foreign Objects |
96 |
|
Hyperlinks |
96 |
|
Chapter 8: Shape Geometry |
97 |
|
Overview of Visio Geometry |
97 |
|
Visio Geometry Types |
99 |
|
Playing with Shape Geometry |
100 |
|
Automation: Don't Overlook DrawXxx Methods |
100 |
|
ArcTo, Ellipse and EllipticalArcTo |
100 |
|
ArcTo Row |
100 |
|
Ellipse Row |
101 |
|
EllipticalArcTo |
102 |
|
Some EllipticalArcTo Tricks |
102 |
|
Related Automation Methods for ArcTo, Ellipse and EllipticalArcTo |
104 |
|
Developer Aid: GeoHelper |
104 |
|
PolyLineTo Row Type |
104 |
|
Related Automation Methods for PolyLineTo |
105 |
|
NURBSTo Row Type |
105 |
|
NURBS in the Drawing Window |
106 |
|
NURBS Foundation |
107 |
|
In More Detail |
107 |
|
Correspondence to NURBSTo Row |
111 |
|
Closed (Periodic) NURBS: The Rap on Wrapping |
112 |
|
So What Are Those Visio Adjuster Handles Anyway? |
113 |
|
Solving Some Problems |
113 |
|
Summary Comparison of Visio UI Versus NURBS Features |
114 |
|
Dynamic Connector Geometry |
115 |
|
Related Automation Methods for NURBSTo |
115 |
|
References |
115 |
|
Ink |
115 |
|
From Here |
116 |
|
Chapter 9: Masters and Shapes |
117 |
|
"Master" versus "Shape Instance" |
117 |
|
Master-To-Shape and Shape-To-Master |
118 |
|
Starting From the New Master Command |
118 |
|
Starting From Drawing Page |
118 |
|
Stencil File versus Document Stencil |
119 |
|
Instances Are Always Created From Local Stencil |
120 |
|
Master Matching Alternatives |
120 |
|
Development Implications |
120 |
|
Other Notes |
121 |
|
From Here |
121 |
|
Chapter 10: ShapeSheet Mastery |
123 |
|
ShapeSheet Cell Reference Syntax |
123 |
|
Finding Out Cell Names |
124 |
|
Universal and Local Row and Cell Names |
125 |
|
Changed in Visio 2003 |
125 |
|
Which Names Are Which? |
125 |
|
ShapeSheet Calculation Dependencies |
126 |
|
Cells Set Multiple Ways |
127 |
|
Monitoring Recalc Loops |
128 |
|
Keys To Solution |
128 |
|
Trickier Example |
128 |
|
To REALLY Break A Loop |
129 |
|
Twin Peaks Example |
129 |
|
Flaky Recalculation Problems |
131 |
|
The DEPENDSON( ) Function |
132 |
|
Visio 2003 SetAtRef Functions |
133 |
|
SetAtRefExpr(Last-Formula-Stuffed-In) |
134 |
|
SetAtRef( ) and SetAtRefEval( ) |
134 |
|
Previous Examples Revisited |
135 |
|
Fancy Path for Control |
136 |
|
Glueable Stay-Horizontal Connector |
136 |
|
Guard( ) Function Revisited |
137 |
|
ShapeSheet Cell Types and Units |
138 |
|
Internal Numeric Value versus Output Appearance |
138 |
|
"Magic" X, Y Extraction |
138 |
|
Assumed Units |
138 |
|
Formula Change Tracking |
139 |
|
Aids for Developers |
139 |
|
Macro Recorder |
139 |
|
ShapeSheet Formula Tracing Window |
139 |
|
Cell Dependents and Precedents |
140 |
|
ShapeSheet Developer Helper Tool |
140 |
|
ShapeSheet Editing in XML Text Format |
140 |
|
Named-Row Reordering |
141 |
|
Automated Aids for Building Shapes |
141 |
|
Shape Studio |
141 |
|
Do-It-Yourself Shape Builder |
141 |
|
Editing and Studying XML Files |
142 |
|
From Here |
142 |
|
Chapter 11: All Things Text |
143 |
|
Shape.Text |
143 |
|
Overview |
143 |
|
Text Position |
144 |
|
Text Appearance |
144 |
|
Fields: ShapeSheet Values to Text |
144 |
|
Text To ShapeSheet: SHAPETEXT( ) |
144 |
|
Text To ShapeSheet Value: EVALTEXT() |
145 |
|
Setting the Text from the ShapeSheet |
145 |
|
Selectively Enabling/Disabling Text Behaviors |
146 |
|
Text Formatting: Details |
146 |
|
Overview |
146 |
|
Character and Paragraph Sections: Controlling Text Format |
146 |
|
Paragraph Section |
148 |
|
Visio's Text Format Model Revisited |
148 |
|
ShapeSheet Text and String Functions |
149 |
|
Basic String Functions: New in Visio 2003 |
149 |
|
Testing String Equality: STRSAME |
150 |
|
Making Text Fit |
150 |
|
Alignment Box Expands To Accommodate Text |
150 |
|
Text Scales Proportional to Shape Height |
150 |
|
Text Scales Smaller to Fit More Text |
150 |
|
Text Clipped to Shape Interior |
150 |
|
Level Text |
152 |
|
Text Follows Angle, Right-Side-Up |
152 |
|
Text Positionable by User |
153 |
|
Text Positioned Near Connector Endpoint |
153 |
|
Improved Text Quality and Behavior in Visio 2003 |
153 |
|
Quality Settings |
153 |
|
Text Events |
154 |
|
Comments and "Screen Tips" |
154 |
|
Visio Style Comments (aka "Screen Tips") |
154 |
|
Office Style Comments |
155 |
|
Add Office Comment to Shape |
155 |
|
Related Text Topics |
155 |
|
Other Text Data Notes |
155 |
|
Smart Tags |
156 |
|
From Here |
156 |
|
Chapter 12: Composite Shapes Using Groups |
157 |
|
Group Structure |
157 |
|
Group As Holder Only |
157 |
|
Group As Shape With Sub-Shapes |
158 |
|
Member Coordinate Space |
160 |
|
Group Behavior Variants |
160 |
|
Resize Behavior |
160 |
|
Add On Drop, a Very Promising Feature |
161 |
|
Controlling The Alignment Box |
162 |
|
Controlling Formatting |
162 |
|
Controlling Selection During Shape.Drop |
163 |
|
A Composite Shape Example |
163 |
|
Structure |
163 |
|
Behavior |
164 |
|
ShapeSheet |
165 |
|
Editing The Structure With VBA Functions |
166 |
|
Embellishments |
169 |
|
Protection/Enablement Issues |
170 |
|
Cell Dependents and Precedents |
170 |
|
Form-Style Text Behavior |
171 |
|
Navigation |
171 |
|
Text Clipping |
171 |
|
From Here |
172 |
|
Chapter 13: Connectors, Routing and Layout |
173 |
|
Plan of Attack |
173 |
|
Connectors Using Ordinary ShapeSheet Features |
174 |
|
1-D Coordinate Space |
174 |
|
Straight Connector |
175 |
|
Curve Connector |
176 |
|
Right Angle Connector |
176 |
|
Shortcomings |
177 |
|
Universal Connector |
177 |
|
Further Caveats |
180 |
|
Summary of Simple Connectors Implementation |
180 |
|
Dynamic Layout Services |
181 |
|
Overview of Dynamic Layout Services |
181 |
|
Basic DLS Participation Eligibility: ObjType |
182 |
|
Dynamic Layout Services Details |
183 |
|
Routing |
184 |
|
Connector "Appearance" |
185 |
|
Line Jumps |
185 |
|
Plowing |
185 |
|
Layout |
186 |
|
Dynamic "Walking" Glue |
187 |
|
Page-level DLS Disable: DynamicsOff |
187 |
|
Connector Splitting |
187 |
|
Dynamic Connectors |
188 |
|
Dynamic Connector Geometry |
188 |
|
Implications For Geometry Dependents |
189 |
|
Text Pin |
189 |
|
Connection Points |
190 |
|
Control Points |
190 |
|
Enable/Disable Dynamic Connector Functionality |
190 |
|
Some Dynamic Connector Developer Issues |
190 |
|
Alternative Solutions to Fancy Routing |
193 |
|
Comments |
195 |
|
Dynamic Layout Performance Hints |
196 |
|
Comparison of Connector Strategies |
196 |
|
From Here |
198 |
|
Chapter 14: Glue and Connects |
199 |
|
Orientation |
199 |
|
What Glues to What |
201 |
|
Glue In Action |
201 |
|
Initialization |
201 |
|
How Gluer Depends on Gluee |
203 |
|
Control Point to Connection Point |
203 |
|
Connector Endpoint to Connection Point |
203 |
|
Connector to "Shape": Dynamic or "Walking" Glue |
203 |
|
Various Parts to Guide Lines |
204 |
|
Visio's Gendered, Directional Connection Points |
204 |
|
Working with Gendered Connection Points |
205 |
|
Factors Affecting User Operation of Glue |
207 |
|
Enhanced Snap and Glue Control in Visio 2002/3 |
207 |
|
Lock/Guard Glue Formulas |
209 |
|
Connections To/From Group Member Shapes |
209 |
|
Some Glue Issues |
209 |
|
Dynamic Glue (_WALKGLUE) Issues |
209 |
|
Connects Objects: Reporting On Connections |
210 |
|
Connects Just Reports on Cells |
210 |
|
Some Connections Report As Two Connect Objects |
210 |
|
Connector-Sensitive Connection Points |
210 |
|
Other Notes |
211 |
|
Temporary Connection Points |
211 |
|
Visio 2003's Connector Splitting Feature |
211 |
|
From Here |
212 |
|
Chapter 15: Formatting Via Masters and Styles |
213 |
|
Mastering Master Concepts |
214 |
|
Copying versus Inheritance |
214 |
|
The Initial Master-Instance Relationship |
214 |
|
Verifying Inheritance/Local Behavior |
215 |
|
Creating and Removing Local Override Formulas |
216 |
|
Severing Master-Shape Inheritance |
216 |
|
Master Identity and Names |
216 |
|
Styles-The Basics |
216 |
|
Style "Attribute Sets": Three Sets of Cells |
217 |
|
Style-to-Style Inheritance |
218 |
|
Master and Style Inheritance, Together At Last |
218 |
|
Developer Aid: Style Clues in the ShapeSheet Window |
219 |
|
Developer Aid: Inheritance Browser |
220 |
|
Three "Sub-Style" Attribute-Sets Versus Overall "Style" |
220 |
|
Applying a Style |
221 |
|
Applying a Style Switches Inheritance For Entire Attribute-Set |
221 |
|
Applying a Local Formula or Value to a Cell |
221 |
|
Does "Apply Style" Beat Guard() and LockFormat? |
222 |
|
Reverting a Section or Cell to Inheritance |
222 |
|
Un-Applying a Style (Revert to Inheritance-from-Master) |
222 |
|
Style Collisions |
222 |
|
Style Philosophy and Application |
223 |
|
Styles as Named Sets of Attribute-Values |
223 |
|
Styles for Conveying Semantics |
223 |
|
The Evil "Color Scheme" Add-On |
224 |
|
Rethinking the Motivation |
224 |
|
Bottom Line |
225 |
|
Some Development Implications |
225 |
|
Seemingly Superfluous Style Sections? |
225 |
|
Incomplete Inheritance Visibility |
225 |
|
The Need for Tools |
226 |
|
From Here |
226 |
|
Chapter 16: Line and Fill Patterns and Line Ends |
227 |
|
Relationship Between Pattern Masters and Instances |
227 |
|
Parameters |
228 |
|
Line Pattern and Line End Miscellany |
229 |
|
Creating Unscaled Line-Ends |
229 |
|
Line End Sizing Ratios |
230 |
|
Line Pattern and Line End Positioning |
231 |
|
Line Patterns vs Overlaid Lines |
231 |
|
Other Wrinkles |
232 |
|
From Here |
232 |
|
Chapter 17: Documents, Pages, Layers and Markup |
233 |
|
Document |
233 |
|
Page |
235 |
|
PageSheet |
236 |
|
Background Pages |
237 |
|
Markup |
237 |
|
Markup Pages |
237 |
|
View with DocPgWin Tool |
237 |
|
Working with Markup |
238 |
|
Markup's Default Behavior |
238 |
|
Implementing Rigorous Markup Behavior |
239 |
|
Markup Task Pane Markup List |
241 |
|
Convert Markup to Normal Page |
241 |
|
Layers |
241 |
|
Layer Structure And Behavior |
242 |
|
A Page's Layers Versus the Layers Object |
242 |
|
A Shape's Layer Membership |
242 |
|
Adding/Deleting Layers |
242 |
|
Assigning Shapes to Layers |
242 |
|
Using Layers |
242 |
|
Layers For Shape Data Attributes and Querying |
243 |
|
Querying Made Feasible |
244 |
|
Layer Control Tricks |
244 |
|
From Here |
245 |
|
Part 4: Building Visio Solutions |
247 |
|
Chapter 18: Building Solutions: Introduction |
249 |
|
Overview |
249 |
|
Alternative Solution Forms |
250 |
|
Summary |
251 |
|
Orientation to Visio User Interface, Events and Windows |
252 |
|
Preview of Some Key Issues |
253 |
|
Angle of Upcoming Solution Topics |
254 |
|
A Note on Visual Studio.NET |
254 |
|
Different Visio Roles, Different Forms of Solution |
255 |
|
Visio for Rendering/Output |
255 |
|
Visio for Information Capture |
255 |
|
"Discipline-Specific Drawing Environment" |
256 |
|
Discrete Operations on Drawing |
256 |
|
Adding Intelligence to Shapes: "Shape Services" |
257 |
|
Adding Intelligence to Drawings: Drawing-wide Semantics |
257 |
|
Drawings as Views of Models |
257 |
|
Visio as Control Panel |
258 |
|
Visio Drawing Control Opportunities |
258 |
|
From Here |
258 |
|
Chapter 19: Menus, Toolbars, Accelerators |
259 |
|
Orientation |
260 |
|
Two User Interface Models to Choose From! |
260 |
|
Study Sequence |
261 |
|
Overview of UIObject-Based Object Model |
261 |
|
Items |
261 |
|
"Groups" of Items |
262 |
|
"Sets" Handle "Context" |
262 |
|
Extent of User Interface Data |
262 |
|
Three "Levels" Of UI Customization |
263 |
|
UIObjects: Messy Details |
265 |
|
UIObject Browser: Completing the Picture |
265 |
|
Overview of CommandBars-Based UI Object Model |
266 |
|
Visio's Use of CommandBars |
267 |
|
CommandBarControl Events |
268 |
|
CommandBar Browser |
268 |
|
Document-Specific CommandBars? |
269 |
|
UIObjects and CommandBars, Together At Last |
269 |
|
UIObject-Based Model to CommandBars |
270 |
|
CommandBars to UIObject-Based Model |
270 |
|
Implications for CommandBarControl Events |
272 |
|
Usability of CommandBar Model |
273 |
|
General UI Strategy Using the UIObject-Based Model |
274 |
|
Constructing a Custom UI |
274 |
|
Details |
274 |
|
Persisting and Instating a Custom UI |
276 |
|
Other Sources of Menus and Menu-Like Things |
277 |
|
Don't Forget ShapeSheet Actions Section! |
277 |
|
Visio 2003: SmartTags Piggyback on Actions |
278 |
|
MouseDown Popup Menus |
278 |
|
Wrinkles |
278 |
|
Potentially Confusing UIObject Names |
278 |
|
Persistent Events on Visio Templates Caused UI Confusion |
278 |
|
Disappearing Toolbar Items |
279 |
|
Example UI Exercises |
279 |
|
Adding UI Elements |
279 |
|
Minimal UI |
281 |
|
From Here |
282 |
|
Chapter 20: Events and Other Notifications |
285 |
|
Overview |
285 |
|
Several Different Event Mechanisms |
288 |
|
Event Persistence |
288 |
|
Notifications from ShapeSheet Activities |
288 |
|
CALLTHIS |
289 |
|
RUNADDON |
290 |
|
RUNADDONWARGS |
291 |
|
Dedicated Event Cells |
292 |
|
QueueMarkerEvent |
292 |
|
Automation Events Overview |
293 |
|
Spectrum of Events Exposed |
293 |
|
Event Filters |
294 |
|
Document Events |
294 |
|
WithEvents Event Handling |
294 |
|
WithEvents Overview |
295 |
|
Code for WithEvents: Simple Case |
295 |
|
Forgetful" VBA? |
296 |
|
Example With Model |
296 |
|
Code for WithEvents: More Realistic Case, Using Class Module |
297 |
|
Further Issues |
300 |
|
Events Via EventList.Add and AddAdvise |
301 |
|
Developer Aids |
301 |
|
Events Browser |
301 |
|
Event Trace |
302 |
|
SDK Event Monitor |
302 |
|
EventList.Add |
302 |
|
EventList.AddAdvise |
304 |
|
Simple Event Sink Example |
305 |
|
Event Sink with Forwarding |
306 |
|
Persistence |
307 |
|
AddAdvise Compared To WithEvents |
307 |
|
EventList Interacts With WithEvents |
307 |
|
Filters |
308 |
|
Miscellaneous Issues |
310 |
|
QueueMarkerEvents Revisited |
310 |
|
NoEventsPending versus VisioIsIdle |
311 |
|
BeforeXXX Events |
312 |
|
VB/VBA Issue With Signed Two-Byte EventCode Values |
312 |
|
Mouse and Keyboard Events |
312 |
|
.NET Implications |
313 |
|
From Here |
313 |
|
Chapter 21: VBA-Based Solutions |
315 |
|
Visio VBA State-Of-Play |
315 |
|
Overview |
316 |
|
Benefits and Drawbacks of VBA-Based Solutions |
316 |
|
The Modules of a VBA Project |
317 |
|
"Ordinary" Modules |
318 |
|
Class Modules |
318 |
|
Forms |
319 |
|
ThisDocument Module |
320 |
|
Be Aware of VBA Project Behavior Options! |
321 |
|
Getting Rid of a VBA Project |
321 |
|
Where To Put Solution Code |
321 |
|
Put VBA Code In Stencil |
322 |
|
What About Document Events? |
322 |
|
Copying Code From Stencil To Drawing |
322 |
|
Cross-Project and ShapeSheet-to-Project References |
323 |
|
Project to Project |
323 |
|
Calling from ShapeSheet, (and UI Items and Events) |
324 |
|
Establishing Drawing-to-Stencil References |
325 |
|
Project Paths |
326 |
|
Project Names |
326 |
|
From Here |
326 |
|
Chapter 22: "Visio Solution Library" Solutions: VSLs and Addons |
327 |
|
Overview of VSL Features |
328 |
|
The VSL API |
328 |
|
The Visio-to-VSL Conversation |
329 |
|
Introducing the VBVSL_Adapter |
330 |
|
Overview of VBVSL and Adapter |
330 |
|
Minimal "VBVSL_Min" Example |
331 |
|
IVBVSL Interface Details |
331 |
|
Fulfilling the Needs of VBVSL.cls |
334 |
|
Structure For More Complex VSLs |
338 |
|
Breaking Down Functionality By Addon Or "Command"? |
338 |
|
Installation, Registration and Uninstallation |
339 |
|
VSL/Addon Registration With Visio |
340 |
|
VSL Unregistration |
340 |
|
Additional VSL Installation Considerations |
340 |
|
.NET and VSLs |
341 |
|
Summary of Benefits and Drawbacks to VSLs |
341 |
|
Benefits |
341 |
|
Drawbacks |
342 |
|
From Here |
342 |
|
Chapter 23: Exe and Out-of-Process Solutions |
343 |
|
Out-Of-Process Concerns |
344 |
|
Integration With Visio |
344 |
|
ReflectArgs Exe Example |
346 |
|
Conclusions |
347 |
|
.NET Exe Solutions |
347 |
|
From Here |
347 |
|
Chapter 24: COM Addin Solutions |
349 |
|
COM Addins Overview |
349 |
|
COM Addins In Visio |
350 |
|
Conclusion |
351 |
|
From Here |
352 |
|
Chapter 25: Solution Window Management |
353 |
|
Visio's "Windows" |
353 |
|
Windows |
354 |
|
Window methods and Attributes |
355 |
|
Example: Hiding the Shape Search Window |
355 |
|
Task Pane |
356 |
|
Solution Windows in Visio |
356 |
|
Out-of-Process vs. In-Process Windows |
356 |
|
Default Visual Basic Form Behavior |
357 |
|
Modal Form |
357 |
|
Modeless Form |
357 |
|
Coordinating modeless windows with Visio |
357 |
|
Plain Desktop window |
358 |
|
Plain MDI Child window |
360 |
|
Anchor window |
361 |
|
Stencil window |
365 |
|
From Here |
366 |
|
Chapter 26: Visio ActiveX Drawing Control |
367 |
|
Basic Visio Drawing Control Container |
367 |
|
"Single Document" Concept |
368 |
|
File > New |
368 |
|
File > Open |
369 |
|
File > Save As |
369 |
|
File > Save |
370 |
|
Additional Sample Functions |
370 |
|
Open a Stencil |
370 |
|
Tidy Windows |
370 |
|
Access the Automation Model from Host App |
371 |
|
Respond To Events |
372 |
|
Respond to Visio Object Events |
373 |
|
Other Ideas |
373 |
|
Further Considerations |
374 |
|
Drawing Control's Relation to Visio Application |
374 |
|
VDC.HostID |
374 |
|
Using Multiple Controls |
374 |
|
User Interface |
375 |
|
Utility of Addons and Addins in VDC Scenarios |
375 |
|
From Here |
376 |
|
Chapter 27: ShapeSheet Service Addons |
377 |
|
Event Lifetimes and "ShapeSheet Services" |
377 |
|
ShapeSheet Services Pattern |
378 |
|
Demo ShapeSheet Services Sample |
378 |
|
Main ShapeSheet Services Concepts |
379 |
|
"Demo ShapeSheet Services" Sample |
379 |
|
I-Am-Selected Service |
380 |
|
Supporting Utility Functions |
383 |
|
Connect Count Service |
383 |
|
Navigation Keys Service |
384 |
|
Further Notes on Demo ShapeSheet Services Sample |
386 |
|
Conclusions |
386 |
|
From Here |
386 |
|
Chapter 28: Visio and XML |
387 |
|
Visio 2003's XML Features |
387 |
|
Optional XML File Format: "XML for Visio" |
387 |
|
VDX-Format IDataObject and Drag and Drop |
388 |
|
Solution-Specific XML In Document |
388 |
|
Solution-Specific XML in ShapeSheet |
388 |
|
SVG Format Export |
388 |
|
Making Sense of XML |
388 |
|
What XML Looks Like |
388 |
|
It's A Document, No Wait, It's A Database, No Wait... |
389 |
|
MSXML |
390 |
|
XSL and XSLT |
390 |
|
Schemas |
391 |
|
Namespaces |
391 |
|
Hands-On "XML for Visio" |
392 |
|
Studying VDXs To Learn Visio Structure |
392 |
|
"XML for Visio" for Hard-to-Fix Fixups |
393 |
|
SolutionXML Examples |
394 |
|
Processing "XML for Visio" Files |
396 |
|
Ideas |
396 |
|
Using MSXML to Iterate Through All Nodes |
397 |
|
View |
397 |
|
Change: Re-Mastering Shapes |
399 |
|
Let MSXML Do The Walking: XSL Patterns and XPath |
399 |
|
Visio XML Straight To HTML, in Code |
400 |
|
Visio XML Straight To HTML, in Browser |
401 |
|
Wrinkles |
402 |
|
Generating XML for Visio |
403 |
|
From Here |
406 |
|
Chapter 29: IDataObject and Shape Drag-and-Drop |
407 |
|
Visio's Use of OLE Drag and Drop |
408 |
|
Drag and Drop Objects |
408 |
|
Introducing IDataObject |
410 |
|
From Visio Shape to IDataObject |
410 |
|
"Clipboard" Data Formats |
411 |
|
Summary So Far |
411 |
|
Stencil-Like Features, Using Various Languages |
411 |
|
Visual Basic 6 and VBA |
411 |
|
C# .NET Implementation |
414 |
|
VS 6 C++ and Borland Delphi Implementation |
415 |
|
XML IDataObject |
415 |
|
XML Data To Visio |
415 |
|
XML Data From Visio |
416 |
|
Persisting IDataObject Data |
417 |
|
VB6 Drag and Drop The Hard Way |
417 |
|
Drag And Drop Demo |
417 |
|
From Here |
422 |
|
Chapter 30: Visio and ActiveX |
423 |
|
Using Ordinary ActiveX Controls in a Visio Document |
423 |
|
Dynamically Adding ActiveX Controls to Drawing |
424 |
|
Documents Linked/Embedded In Visio |
425 |
|
Visio ActiveX Control? |
426 |
|
Accessing Visio from Within an "ActiveX Shape" |
426 |
|
AXShape Sample |
426 |
|
From Here |
428 |
|
Chapter 31: Animation |
429 |
|
"Manual" Animation |
429 |
|
Move Disappointing, Rotate Works |
429 |
|
Live Dynamics Option and Shape Cell |
430 |
|
Overcoming Move Problem: Use Control Point |
430 |
|
No VBA While Dragging--Some Alternatives |
431 |
|
"Real" Animation |
431 |
|
Animation Component |
431 |
|
Following A Path |
432 |
|
Off-Screen Drawing |
435 |
|
Faster Roads (and other Path Patterns) |
435 |
|
From Here |
436 |
|
Chapter 32: Export and Bitmap Topics |
437 |
|
Working with Bitmaps In Visio |
437 |
|
Bitmaps, Start to End In Visio |
438 |
|
Other Factors Impacting Bitmap Output Quality |
439 |
|
Shape With Swappable Bitmap |
440 |
|
Save As Web Page |
441 |
|
Controlling Bitmap Export From Code |
441 |
|
Document's Preview Picture |
442 |
|
From Here |
444 |
|
Chapter 33: Some Utilitarian Odds and Ends |
445 |
|
Persisting Solution Data |
445 |
|
Text In Cell |
446 |
|
XML |
446 |
|
VisXData and IStorage |
446 |
|
When to Persist |
448 |
|
Undo |
448 |
|
Undo Sample VBA |
448 |
|
Document Protection |
449 |
|
Registry |
450 |
|
Version Info |
450 |
|
From Here |
452 |
|
Chapter 34: Some Deployment Notes |
453 |
|
Considerations for Stencils and Templates |
453 |
|
Considerations for VSL and COM Addins |
455 |
|
From Here |
455 |
|
Chapter 35: Internationalization Features |
457 |
|
Overview of Internationalization Features |
458 |
|
Automation Model |
458 |
|
Shape Sheet Window: Changed for Visio 2003 |
458 |
|
Details |
459 |
|
"First time sets both names" Behavior |
459 |
|
Named Rows |
459 |
|
Default Collection Properties |
460 |
|
Cells() Special? |
461 |
|
Cell.Formula Not Just Local |
461 |
|
ShapeSheet Formula Units |
461 |
|
Decimal Points and Argument Separators |
461 |
|
Special Case: SETF |
461 |
|
Visio-Supplied Stencil Names |
462 |
|
Migration Issues |
462 |
|
From Here |
462 |
|
Part 5: Browsable Reference to Visio Structure |
463 |
|
Chapter 36: ShapeSheet Section-Row-Cell Structure |
465 |
|
Reading The Tables |
465 |
|
Constants |
465 |
|
Finding The Section Of Interest |
466 |
|
Chapter 37: ShapeSheet Functions |
487 |
|
Chapter 38: Visio Objects, Properties and Methods |
497 |
|
This Section Available for Download Only |
497 |
|
Chapter 39: Events Table |
503 |
|
Index |
507 |
Article Created: 2003-10-01 Last edit: Last edit: 03-10-15 Graham Wideman Go to: DiagramAntics.com