Visio® 2003 Developer's Survival Pack | |
Home V11DSP This page |
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