21/12/2015
Visio 2003
Programming
Rel. Stefano Castiglioni
21/12/2015
Sommario
•
•
•
•
•
•
•
•
•
•
Scenari di soluzione con Visio 2003
Automazione e oggetti
Il modello ad oggetti di Visio
Visio 2003 e il VBA
Disegno con l’Automazione
Integrazione di dati in una soluzione Visio
Interoperabilità di Visio attraverso l’ XML
Installazione di una soluzione Visio
Visio 2003 e l’ambiente .NET
Creazione di un componente COM
21/12/2015
Scenari di soluzione con Visio 2003
EXCEL
VISIO
“Build and update
organization chart”
Human rersource
VISIO
“Product
configuration and
order creation..”
VBA, VB6 C++
Add-on
DATABASE ORDER
Sales
VISIO
“Monitoring
manifacturing or
business process”
VBA, VB6 C++
Add-on
Business
Process
Designer
Application
“Diagram as a part
of enterprise
application
(ActiveX Visio
Drawing Control)”
New
Business
Process
Edit
Users
DATABASE
21/12/2015
Soluzioni Visio
• Una soluzione Visio è una combinazione di
forme, di solito sviluppate ad hoc, e modelli di
disegno in cui disporre e usare le forme.
• Una soluzione di solito include stencil di forme
chiamate master.
• La programmazione (VBA, VB6 , C++ ..)
permette di creare e analizzare il disegno o
recuperare informazioni dallo stesso per poi
trasferirle esternamente a fonti di dati esterne
(database)
21/12/2015
La forma e il suo shapesheet
• Shapesheet = Spreadsheet
• Automazione della forma attraverso le
formule
= GETVAL(PinX) + GETVAL(PinY) + Width
="DATA:"&FORMAT(NOW(),"dd-MM-yy")
=“AREA:”&Width*Height
=GUARD(Pinx)
21/12/2015
Demo1
21/12/2015
Demo2
21/12/2015
Sezione Events
• La sezione Events dello shapesheet
Cella
Evento chiamato dalla formula
TheText
Modifica o formattazione del testo
EventXFMod
Posizione,dimensioni o orientamento della
pagina modificati
EventDblClick
Doppio click sulla forma
EventDrop
Copia di una forma o trascinamento di un
master
21/12/2015
Demo3
21/12/2015
Simulazione degli eventi
• Per attivare eventi in altre sezioni dello
shapesheet
• ES: cella A,B,C,D della sezione Scratch
– OPENTEXTWIN() + DEPENDSON(PinX,
PinY)
– La formula evidenzierà il testo della forma per
la modifica ogni qualvolta che la forma viene
spostata
21/12/2015
Shortcut menù
• È possibile aggiungere attraverso la
sezione Actionsdelle azioni al menù di
scelta rapida
21/12/2015
Demo4
21/12/2015
Visio Object Model
ThisDocum
1
ent
ActiveDocu
ment
ActivePage
ActiveWind
ow
Key
Windows
Document
Page
Window
Master
Selection
Documents
MasterSho
MasterSho
rtcuts
rcut
Masters
Master
Pages
Collection
Object
1
The ThisDocument object is an instance
of a Document object and is available only
when using Microsoft Visual Basic® for
Applications (VBA).
Connects
Connect
OLEObject
s
OLEObject
Layers
Layer
Shapes
Shape
Connects
Connect
OLEObject
s
OLEObject
Document
Layers
Layer
Shapes
Page
Global
Application
Styles
Style
Fonts
Font
Colors
Color
VBProject
Shape
2
If the Shape object represents a group, it
also has a Shapes collection.
3
Shapes
Shape 2
If the MenuItem or ToolBarItem object
represents a hierarchical menu, it also has a
corresponding MenuItems or ToolBarItems
collection.
4
A UIObject object can represent menus
and accelerators or toolbars.
5
Many Visio objects have an EventList
collection.
6
The Visio global object is available only
when using VBA.
Shapes
Shape 2
Connects
Connect
Hyperlinks
Hyperlink
Characters
Section
Represents a more direct method of
accessing an object by referencing it as a
property of the Visio global object.
Row
Paths
Path
Curve
MenuItems
MenuItem
MenuItems
MenuItem 3
ToolbarIte
ToolbarIte
ms
m
ToolbarIte
ToolbarIte
ms
3
m
AddOns
AddOn
EventList
Event 5
UI Object
4
UI Object
4
6
VBE
Command
Bars
COMAddIn
s
MenuSets
MenuSet
AccelTable
s
AccelTable
ToolbarSet
s
ToolbarSet
Menus
Menu
AccelItems
AccelItems
Toolbars
Toolbar
The Microsoft® Visio® object model
21/12/2015
Cell
Visio 2003 e il VBA
Shortcut:
ALT+F11
21/12/2015
La classe Document
• Aggiungere un nuovo documento
– Dim docObj As Visio.Document
Set docObj = Documents.Add("")
• Creare un nuovo documento da un modello
– Set docObj = Documents.OpenEx(Path &"sample
template.vst", visOpenCopy)
• Aprire un documento esistente
– Set docObj = Documents.Open(Path & "sample.vsd")
• Aprire uno stencil esistente
– Set docObj = Documents.OpenEx(Path & "sample
stencil.vss", visOpenDocked)
21/12/2015
Demo 5
21/12/2015
La classe Page
• Sfogliare le pagine di documento
– For Each pg In ActiveDocument.Pages
Debug.Print pg.Name
Next
• Aggiungere una pagina
– ThisDocument.Pages.Add
• Attivare una pagina
– Get the last page of the document
– Set pg = ActiveDocument.Pages(“MiaPagina”)
– ActiveWindow.Page = PageName
21/12/2015
Demo 6
21/12/2015
La classe Shape
• Disegnare una forma
– Dim pg As Visio.Page
Set pg = ActiveDocument.Pages.Add
pg.DrawLine 1, 1, 3, 4
pg.DrawRectangle 2, 2, 3, 5
• Aggiungere del testo alla forma
– Dim shp As Visio.Shape
Set shp = pg.DrawRectangle(1, 1, 4, 2)
shp.Text = “Testo nella forma"
• Raggruppare le forme selezionate
– Dim sel As Visio.Selection
ActiveWindow.SelectAll
Set sel = ActiveWindow.Selection
sel.Group
21/12/2015
Demo 7
21/12/2015
La classe Cell
• Creare una User-defined Cell
– Set shp = ActivePage.DrawRectangle(2, 2, 4, 4)
iRowIndex = shp.AddNamedRow(visSectionUser, "MyUserCell",
visRowUser)
Set cel = shp.Cells("User.MyUserCell")
cel.Formula = """Dati personali"""
• Creare una Custom-property
– Set shp = ActivePage.DrawRectangle(2, 2, 4, 4)
iRowIndex = shp.AddNamedRow(visSectionProp, "MyCustomProperty",
VisRowIndices.visRowProp)
Set cel = shp.Cells("Prop.MyCustomProperty")
cel.Formula = """Questa è una prova"""
MsgBox "cel.Formula = " & cel.Formula
• Creare un Unique-ID per la forma
– Dim shp As Visio.Shape
Set shp = ActivePage.DrawRectangle(2, 2, 4, 4)
shp = shp.UniqueID(visGetOrMakeGUID)
Debug.Print shp.UniqueID(visGetOrMakeGUID)
21/12/2015
Demo 8
21/12/2015
Disegno con l’Automazione
• Attraverso l’utilizzo di VBA o di qualsiasi
linguaggio che supporta l’automazione
(VB6, C, C++, .NET…) è possibile creare
quindi soluzioni che incorporano le
funzionalità del motore di Visio e dei suoi
oggetti.
• Esempi di automazione con VBA
21/12/2015
Demo 9
• Soluzione che controlla la spesa legata
all’acquisto di un impianto stereo.
• Monitoraggio degli eventi legati
all’aggiunta o all’eliminazione di forme.
21/12/2015
Demo 9
21/12/2015
Demo 10
• Soluzione che configura una topologia di
rete in base agli apparati selezionati.
• La soluzione mette in evidenza la capacità
di Visio di semplificare e organizzare
rappresentazioni complesse quali le
infrastrutture di rete.
21/12/2015
Demo 10
21/12/2015
Integrazione di dati in una
soluzione Visio
• Visio permette di combinare disegni con
altre fonti di dati, tipicamente Database.
• È possibile creare disegni partendo da una
o più tabelle di un database o viceversa
salvare le informazioni associate alle
forme (celle definite dall’utente, proprietà
personalizzate) nel database.
• Esempi
21/12/2015
Demo 11
21/12/2015
Visio e l’ XML
• Con la versione 2002 è possibile salvare i
documenti in formato XML
– Disegno.vdx
– Stencil.vsx
– Modello.vtx
• Questa caratteristica permette un alto
grado di interoperabilità con altre
applicazioni e altre piattaforme
21/12/2015
Demo 13
• La soluzione carica un documento di Visio
salvato in formato XML e visualizza in una
pagina HTML l’elenco delle forme con
relative caratteristiche in una tabella.
• La soluzione sfrutta la possibilità di
trasformare file XML in altri formati usando
fogli di stile XSL.
21/12/2015
Demo 13
21/12/2015
Visio 2003 e .NET
• L’ambiente .NET è in grado interfacciarsi
con tutte le applicazioni COM, quindi
anche Visio.
• Installando la versione 2003 di Visio, si
dispone automaticamente dell’assembly di
interoperabilità e di un componente
ActiveX che può essere utilizzato in
qualsiasi applicazione.
21/12/2015
Visio Drawing Control
21/12/2015
Demo 14
• La soluzione, prevede l’utilizzo del
controllo ActiveX all’interno di un form di
una applicazione Windows.
• Il controllo dispone di tutte le
caratteristiche di un documento creato con
Visio 2003.
21/12/2015
Demo 14
21/12/2015
Demo 15
• La soluzione utilizza Visio attraverso
l’automazione per creare un diagramma di
flusso.
• Per rendere il documento disponibile ad
utenti che non dispongono di una licenza
Visio, viene generata una pagina web con
il diagramma.
21/12/2015
Demo 15
21/12/2015
Creazione di un componente COM
• A partire dalla versione 2002 è possibile creare
soluzioni basate su add-in COM
– ActiveX DLL
– ActiveX EXE
• Si può utilizzare Microsoft Office Developer o
Microsoft Visual Studio 5 o successivi usando gli
add-in designer per Visio.
• Download: http://office.microsoft.com/enus/officeupdate/CD010225661033.aspx
21/12/2015
Add-in designer
21/12/2015
Demo 12
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Private Sub AddinInstance_OnConnection(ByVal Application As
Object, ByVal ConnectMode As
AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object,
custom() As Variant)
Dim cbar As CommandBar
On Error GoTo error_handler
'Save the Visio instance
Set g_VisioApp = Application
Exit Sub
error_handler:
MsgBox Err.Description
End Sub
21/12/2015
Demo 12
Sub CreaBarraStrumentiOffice()
Dim mybar As Office.CommandBar
Dim mybars As Office.CommandBars
Set mybar = Application.CommandBars("Personalizzata")
Set myControl = mybar.Controls _
.Add(Type:=msoControlButton)
With myControl
.FaceID = 2
.OnAction = "!<StencilWindowCOMAddin.VisioCOMAddin>"
'.VisioCOMAddin
End With
mybar.Visible = True
End Sub
21/12/2015
Installazione
• Una volta creati i componenti COM, DLL,
EXE devono essere installati in
deteminate directory perché siano
disponibili all’utente.
• L’operazione può essere eseguita per
esempio utilizzando il Package and
Deployment wizard presente in Visual
Studio o Office Developer
21/12/2015
Installazione
21/12/2015
Reference
• “Programmare Microsoft VISIO”
– Ed:Mondadori
• “Microsoft Visio 2003 Developer’s Survival
Pack”
– Ed:Trafford
– Autore: Graham Wideman
• http://msdn.microsoft.com/library
21/12/2015
Scarica

soluzione Visio