visio 2003 programming

46
15/06/22 15/06/22

Upload: gyan

Post on 13-Jan-2016

60 views

Category:

Documents


2 download

DESCRIPTION

Visio 2003 Programming. Rel. Stefano Castiglioni. 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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Visio 2003 Programming

21/04/2321/04/23

Page 2: Visio 2003 Programming

21/04/2321/04/23

Visio 2003Visio 2003ProgrammingProgramming

Rel. Stefano CastiglioniRel. Stefano Castiglioni

Page 3: Visio 2003 Programming

21/04/2321/04/23

SommarioSommario

• Scenari di soluzione con Visio 2003Scenari di soluzione con Visio 2003• Automazione e oggettiAutomazione e oggetti• Il modello ad oggetti di Visio Il modello ad oggetti di Visio • Visio 2003 e il VBAVisio 2003 e il VBA• Disegno con l’AutomazioneDisegno con l’Automazione• Integrazione di dati in una soluzione VisioIntegrazione di dati in una soluzione Visio• Interoperabilità di Visio attraverso l’ XML Interoperabilità di Visio attraverso l’ XML • Installazione di una soluzione VisioInstallazione di una soluzione Visio• Visio 2003 e l’ambiente .NETVisio 2003 e l’ambiente .NET• Creazione di un componente COMCreazione di un componente COM

Page 4: Visio 2003 Programming

21/04/2321/04/23

Scenari di soluzione con Visio 2003Scenari di soluzione con Visio 2003EXCEL VISIO

Sales

VISIO

VBA, VB6 C++Add-on DATABASE ORDER

Designer

VISIO

VBA, VB6 C++Add-on

BusinessProcess

Users

Application BusinessProcess

New

Edit

DATABASE

Human rersource

“Build and update organization chart”

“Product configuration and order creation..”

“Monitoring manifacturing or

business process”

“Diagram as a part of enterprise application

(ActiveX Visio Drawing Control)”

Page 5: Visio 2003 Programming

21/04/2321/04/23

Soluzioni VisioSoluzioni Visio

• Una Una soluzione Visiosoluzione Visio è una combinazione di è una combinazione di forme, di solito sviluppate ad hoc, e modelli di forme, di solito sviluppate ad hoc, e modelli di disegno in cui disporre e usare le forme.disegno in cui disporre e usare le forme.

• Una soluzione di solito include Una soluzione di solito include stencil stencil di forme di forme chiamate chiamate mastermaster..

• La programmazione (VBA, VB6 , C++ ..) La programmazione (VBA, VB6 , C++ ..) permette di creare e analizzare il disegno o permette di creare e analizzare il disegno o recuperare informazioni dallo stesso per poi recuperare informazioni dallo stesso per poi trasferirle esternamente a fonti di dati esterne trasferirle esternamente a fonti di dati esterne (database)(database)

Page 6: Visio 2003 Programming

21/04/2321/04/23

La forma e il suo shapesheetLa forma e il suo shapesheet

• Shapesheet = SpreadsheetShapesheet = Spreadsheet

• Automazione della forma attraverso le Automazione della forma attraverso le formuleformule= GETVAL(PinX) + GETVAL(PinY) + Width = GETVAL(PinX) + GETVAL(PinY) + Width

="DATA:"&FORMAT(NOW(),"dd-MM-yy")="DATA:"&FORMAT(NOW(),"dd-MM-yy")

=“AREA:”&Width*Height=“AREA:”&Width*Height

=GUARD(Pinx)=GUARD(Pinx)

Page 7: Visio 2003 Programming

21/04/2321/04/23

Demo1Demo1

Page 8: Visio 2003 Programming

21/04/2321/04/23

Demo2Demo2

Page 9: Visio 2003 Programming

21/04/2321/04/23

Sezione EventsSezione Events

• La sezione Events dello shapesheetLa sezione Events dello shapesheet

CellaCella Evento chiamato dalla formulaEvento chiamato dalla formula

TheText TheText Modifica o formattazione del testo Modifica o formattazione del testo

EventXFMod EventXFMod Posizione,dimensioni o orientamento della Posizione,dimensioni o orientamento della pagina modificatipagina modificati

EventDblClick EventDblClick Doppio click sulla formaDoppio click sulla forma

EventDrop EventDrop Copia di una forma o trascinamento di un Copia di una forma o trascinamento di un mastermaster

Page 10: Visio 2003 Programming

21/04/2321/04/23

Demo3Demo3

Page 11: Visio 2003 Programming

21/04/2321/04/23

Simulazione degli eventiSimulazione degli eventi

• Per attivare eventi in altre sezioni dello Per attivare eventi in altre sezioni dello shapesheetshapesheet

• ES: cella A,B,C,D della sezione ES: cella A,B,C,D della sezione ScratchScratch

– OPENTEXTWIN() + DEPENDSON(PinX, OPENTEXTWIN() + DEPENDSON(PinX, PinY) PinY)

– La formula evidenzierà il testo della forma per La formula evidenzierà il testo della forma per la modifica ogni qualvolta che la forma viene la modifica ogni qualvolta che la forma viene spostataspostata

Page 12: Visio 2003 Programming

21/04/2321/04/23

Shortcut menùShortcut menù

• È possibile aggiungere attraverso la È possibile aggiungere attraverso la sezione sezione ActionsActionsdelle azioni al menù di delle azioni al menù di scelta rapidascelta rapida

Page 13: Visio 2003 Programming

21/04/2321/04/23

Demo4Demo4

Page 14: Visio 2003 Programming

21/04/2321/04/23

Visio Object ModelVisio Object Model

Global

ThisDocument

Windows Document

ActiveDocument

ActivePage

ActiveWindow

Application

Window

Documents

Document

AddOnsAddOn

EventListEvent

Page

Master

Selection

MasterShortcutsMasterShorcut

Masters

Master

Pages

Page

StylesStyle

FontsFont

ColorsColor

VBProject

MenuSetsMenuSet

AccelTablesAccelTable

ToolbarSetsToolbarSet

ConnectsConnect

OLEObjectsOLEObject

LayersLayer

ShapesShape

ConnectsConnect

OLEObjectsOLEObject

LayersLayer

Shapes

Shape

ShapesShape

ShapesShape

MenusMenu

AccelItemsAccelItems

ToolbarsToolbar

ConnectsConnect

HyperlinksHyperlink

Characters

Row

PathsPath

Curve

MenuItemsMenuItem

ToolbarItemsToolbarItem

ToolbarItemsToolbarItem

MenuItemsMenuItem

1 The ThisDocument object is an instance of a Document object and is available only when using Microsoft Visual Basic® for Applications (VBA).

2 If the Shape object represents a group, it also has a Shapes collection.

3 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.

Represents a more direct method of accessing an object by referencing it as a property of the Visio global object.

Key

CollectionObject

The Microsoft® Visio® object model

1

5

2

3

3

2

6

CellSection

UI Object

UI Object

VBECommand

BarsCOMAddIns

4

4

Page 15: Visio 2003 Programming

21/04/2321/04/23

Visio 2003 e il VBAVisio 2003 e il VBA

Shortcut: ALT+F11Shortcut: ALT+F11

Page 16: Visio 2003 Programming

21/04/2321/04/23

La classe DocumentLa classe Document

• Aggiungere un nuovo documentoAggiungere un nuovo documento– Dim docObj As Visio.DocumentDim docObj As Visio.Document

Set docObj = Documents.Add("")Set docObj = Documents.Add("")

• Creare un nuovo documento da un modelloCreare un nuovo documento da un modello– Set docObj = Documents.OpenEx(Path &"sample Set docObj = Documents.OpenEx(Path &"sample

template.vst", visOpenCopy)template.vst", visOpenCopy)

• Aprire un documento esistenteAprire un documento esistente– Set docObj = Documents.Open(Path & "sample.vsd")Set docObj = Documents.Open(Path & "sample.vsd")

• Aprire uno stencil esistenteAprire uno stencil esistente– Set docObj = Documents.OpenEx(Path & "sample Set docObj = Documents.OpenEx(Path & "sample

stencil.vss", visOpenDocked)stencil.vss", visOpenDocked)

Page 17: Visio 2003 Programming

21/04/2321/04/23

Demo 5Demo 5

Page 18: Visio 2003 Programming

21/04/2321/04/23

La classe PageLa classe Page

• Sfogliare le pagine di documentoSfogliare le pagine di documento– For Each pg In ActiveDocument.PagesFor Each pg In ActiveDocument.Pages

Debug.Print pg.NameDebug.Print pg.NameNextNext

• Aggiungere una paginaAggiungere una pagina– ThisDocument.Pages.AddThisDocument.Pages.Add

• Attivare una paginaAttivare una pagina– Get the last page of the documentGet the last page of the document– Set pg = ActiveDocument.Pages(“MiaPagina”)Set pg = ActiveDocument.Pages(“MiaPagina”)– ActiveWindow.Page = PageNameActiveWindow.Page = PageName

Page 19: Visio 2003 Programming

21/04/2321/04/23

Demo 6Demo 6

Page 20: Visio 2003 Programming

21/04/2321/04/23

La classe ShapeLa classe Shape

• Disegnare una formaDisegnare una forma– Dim pg As Visio.PageDim pg As Visio.Page

Set pg = ActiveDocument.Pages.AddSet pg = ActiveDocument.Pages.Addpg.DrawLine 1, 1, 3, 4pg.DrawLine 1, 1, 3, 4pg.DrawRectangle 2, 2, 3, 5pg.DrawRectangle 2, 2, 3, 5

• Aggiungere del testo alla formaAggiungere del testo alla forma– Dim shp As Visio.ShapeDim shp As Visio.Shape

Set shp = pg.DrawRectangle(1, 1, 4, 2)Set shp = pg.DrawRectangle(1, 1, 4, 2)shp.Text = “Testo nella forma"shp.Text = “Testo nella forma"

• Raggruppare le forme selezionateRaggruppare le forme selezionate– Dim sel As Visio.SelectionDim sel As Visio.Selection

ActiveWindow.SelectAllActiveWindow.SelectAllSet sel = ActiveWindow.SelectionSet sel = ActiveWindow.Selectionsel.Groupsel.Group

Page 21: Visio 2003 Programming

21/04/2321/04/23

Demo 7Demo 7

Page 22: Visio 2003 Programming

21/04/2321/04/23

La classe CellLa classe Cell• Creare una User-defined CellCreare una User-defined Cell

– Set shp = ActivePage.DrawRectangle(2, 2, 4, 4)Set shp = ActivePage.DrawRectangle(2, 2, 4, 4)iRowIndex = shp.AddNamedRow(visSectionUser, "MyUserCell", iRowIndex = shp.AddNamedRow(visSectionUser, "MyUserCell", visRowUser)visRowUser)Set cel = shp.Cells("User.MyUserCell")Set cel = shp.Cells("User.MyUserCell")cel.Formula = """Dati personali"""cel.Formula = """Dati personali"""

• Creare una Custom-propertyCreare una Custom-property– Set shp = ActivePage.DrawRectangle(2, 2, 4, 4)Set shp = ActivePage.DrawRectangle(2, 2, 4, 4)

iRowIndex = shp.AddNamedRow(visSectionProp, "MyCustomProperty", iRowIndex = shp.AddNamedRow(visSectionProp, "MyCustomProperty", VisRowIndices.visRowProp)VisRowIndices.visRowProp)Set cel = shp.Cells("Prop.MyCustomProperty")Set cel = shp.Cells("Prop.MyCustomProperty")cel.Formula = """Questa è una prova"""cel.Formula = """Questa è una prova"""MsgBox "cel.Formula = " & cel.FormulaMsgBox "cel.Formula = " & cel.Formula

• Creare un Unique-ID per la formaCreare un Unique-ID per la forma– Dim shp As Visio.ShapeDim shp As Visio.Shape

Set shp = ActivePage.DrawRectangle(2, 2, 4, 4)Set shp = ActivePage.DrawRectangle(2, 2, 4, 4)shp = shp.UniqueID(visGetOrMakeGUID)shp = shp.UniqueID(visGetOrMakeGUID)Debug.Print shp.UniqueID(visGetOrMakeGUID)Debug.Print shp.UniqueID(visGetOrMakeGUID)

Page 23: Visio 2003 Programming

21/04/2321/04/23

Demo 8Demo 8

Page 24: Visio 2003 Programming

21/04/2321/04/23

Disegno con l’AutomazioneDisegno con l’Automazione

• Attraverso l’utilizzo di VBA o di qualsiasi Attraverso l’utilizzo di VBA o di qualsiasi linguaggio che supporta l’automazione linguaggio che supporta l’automazione (VB6, C, C++, .NET…) è possibile creare (VB6, C, C++, .NET…) è possibile creare quindi soluzioni che incorporano le quindi soluzioni che incorporano le funzionalità del motore di Visio e dei suoi funzionalità del motore di Visio e dei suoi oggetti.oggetti.

• Esempi di automazione con VBAEsempi di automazione con VBA

Page 25: Visio 2003 Programming

21/04/2321/04/23

Demo 9Demo 9

• Soluzione che controlla la spesa legata Soluzione che controlla la spesa legata all’acquisto di un impianto stereo.all’acquisto di un impianto stereo.

• Monitoraggio degli eventi legati Monitoraggio degli eventi legati all’aggiunta o all’eliminazione di forme.all’aggiunta o all’eliminazione di forme.

Page 26: Visio 2003 Programming

21/04/2321/04/23

Demo 9Demo 9

Page 27: Visio 2003 Programming

21/04/2321/04/23

Demo 10Demo 10

• Soluzione che configura una topologia di Soluzione che configura una topologia di rete in base agli apparati selezionati.rete in base agli apparati selezionati.

• La soluzione mette in evidenza la capacità La soluzione mette in evidenza la capacità di Visio di semplificare e organizzare di Visio di semplificare e organizzare rappresentazioni complesse quali le rappresentazioni complesse quali le infrastrutture di rete.infrastrutture di rete.

Page 28: Visio 2003 Programming

21/04/2321/04/23

Demo 10Demo 10

Page 29: Visio 2003 Programming

21/04/2321/04/23

Integrazione di dati in una Integrazione di dati in una soluzione Visiosoluzione Visio

• Visio permette di combinare disegni con Visio permette di combinare disegni con altre fonti di dati, tipicamente Database.altre fonti di dati, tipicamente Database.

• È possibile creare disegni partendo da una È possibile creare disegni partendo da una o più tabelle di un database o viceversa o più tabelle di un database o viceversa salvare le informazioni associate alle salvare le informazioni associate alle forme (celle definite dall’utente, proprietà forme (celle definite dall’utente, proprietà personalizzate) nel database.personalizzate) nel database.

• EsempiEsempi

Page 30: Visio 2003 Programming

21/04/2321/04/23

Demo 11Demo 11

Page 31: Visio 2003 Programming

21/04/2321/04/23

Visio e l’ XMLVisio e l’ XML

• Con la versione 2002 è possibile salvare i Con la versione 2002 è possibile salvare i documenti in formato XML documenti in formato XML – Disegno.vdxDisegno.vdx– Stencil.vsxStencil.vsx– Modello.vtxModello.vtx

• Questa caratteristica permette un alto Questa caratteristica permette un alto grado di interoperabilità con altre grado di interoperabilità con altre applicazioni e altre piattaformeapplicazioni e altre piattaforme

Page 32: Visio 2003 Programming

21/04/2321/04/23

Demo 13Demo 13

• La soluzione carica un documento di Visio La soluzione carica un documento di Visio salvato in formato XML e visualizza in una salvato in formato XML e visualizza in una pagina HTML l’elenco delle forme con pagina HTML l’elenco delle forme con relative caratteristiche in una tabella.relative caratteristiche in una tabella.

• La soluzione sfrutta la possibilità di La soluzione sfrutta la possibilità di trasformare file XML in altri formati usando trasformare file XML in altri formati usando fogli di stile XSL.fogli di stile XSL.

Page 33: Visio 2003 Programming

21/04/2321/04/23

Demo 13Demo 13

Page 34: Visio 2003 Programming

21/04/2321/04/23

Visio 2003 e .NETVisio 2003 e .NET

• L’ambiente .NET è in grado interfacciarsi L’ambiente .NET è in grado interfacciarsi con tutte le applicazioni COM, quindi con tutte le applicazioni COM, quindi anche Visio.anche Visio.

• Installando la versione 2003 di Visio, si Installando la versione 2003 di Visio, si dispone automaticamente dell’assembly di dispone automaticamente dell’assembly di interoperabilità e di un componente interoperabilità e di un componente ActiveX che può essere utilizzato in ActiveX che può essere utilizzato in qualsiasi applicazione.qualsiasi applicazione.

Page 35: Visio 2003 Programming

21/04/2321/04/23

Visio Drawing ControlVisio Drawing Control

Page 36: Visio 2003 Programming

21/04/2321/04/23

Demo 14Demo 14

• La soluzione, prevede l’utilizzo del La soluzione, prevede l’utilizzo del controllo ActiveX all’interno di un form di controllo ActiveX all’interno di un form di una applicazione Windows.una applicazione Windows.

• Il controllo dispone di tutte le Il controllo dispone di tutte le caratteristiche di un documento creato con caratteristiche di un documento creato con Visio 2003.Visio 2003.

Page 37: Visio 2003 Programming

21/04/2321/04/23

Demo 14Demo 14

Page 38: Visio 2003 Programming

21/04/2321/04/23

Demo 15Demo 15

• La soluzione utilizza Visio attraverso La soluzione utilizza Visio attraverso l’automazione per creare un diagramma di l’automazione per creare un diagramma di flusso.flusso.

• Per rendere il documento disponibile ad Per rendere il documento disponibile ad utenti che non dispongono di una licenza utenti che non dispongono di una licenza Visio, viene generata una pagina web con Visio, viene generata una pagina web con il diagramma.il diagramma.

Page 39: Visio 2003 Programming

21/04/2321/04/23

Demo 15Demo 15

Page 40: Visio 2003 Programming

21/04/2321/04/23

Creazione di un componente COMCreazione di un componente COM

• A partire dalla versione 2002 è possibile creare A partire dalla versione 2002 è possibile creare soluzioni basate su add-in COMsoluzioni basate su add-in COM– ActiveX DLLActiveX DLL– ActiveX EXEActiveX EXE

• Si può utilizzare Microsoft Office Developer o Si può utilizzare Microsoft Office Developer o Microsoft Visual Studio 5 o successivi usando gli Microsoft Visual Studio 5 o successivi usando gli add-in designer add-in designer per Visio.per Visio.

• Download: Download: http://office.microsoft.com/en-us/officeupdate/CDhttp://office.microsoft.com/en-us/officeupdate/CD010225661033.aspx 010225661033.aspx

Page 41: Visio 2003 Programming

21/04/2321/04/23

Add-in designerAdd-in designer

Page 42: Visio 2003 Programming

21/04/2321/04/23

Demo 12Demo 12• Private Sub AddinInstance_OnConnection(ByVal Application As Object, Private Sub AddinInstance_OnConnection(ByVal Application As Object,

ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)ByVal AddInInst As Object, custom() As Variant)

• Dim cbar As CommandBarDim cbar As CommandBar• • On Error GoTo error_handlerOn Error GoTo error_handler• • 'Save the Visio instance'Save the Visio instance• Set g_VisioApp = ApplicationSet g_VisioApp = Application• • Exit SubExit Sub• • error_handler:error_handler:• • MsgBox Err.DescriptionMsgBox Err.Description• • End SubEnd Sub

Page 43: Visio 2003 Programming

21/04/2321/04/23

Demo 12Demo 12Sub CreaBarraStrumentiOffice()Sub CreaBarraStrumentiOffice() Dim mybar As Office.CommandBarDim mybar As Office.CommandBar Dim mybars As Office.CommandBarsDim mybars As Office.CommandBars

Set mybar = Application.CommandBars("Personalizzata")Set mybar = Application.CommandBars("Personalizzata") Set myControl = mybar.Controls _Set myControl = mybar.Controls _ .Add(Type:=msoControlButton).Add(Type:=msoControlButton)With myControlWith myControl .FaceID = 2.FaceID = 2 .OnAction = "!<StencilWindowCOMAddin.VisioCOMAddin>" .OnAction = "!<StencilWindowCOMAddin.VisioCOMAddin>"

'.VisioCOMAddin'.VisioCOMAddinEnd WithEnd Withmybar.Visible = Truemybar.Visible = True

End SubEnd Sub

Page 44: Visio 2003 Programming

21/04/2321/04/23

InstallazioneInstallazione

• Una volta creati i componenti COM, DLL, Una volta creati i componenti COM, DLL, EXE devono essere installati in EXE devono essere installati in deteminate directory perché siano deteminate directory perché siano disponibili all’utente.disponibili all’utente.

• L’operazione può essere eseguita per L’operazione può essere eseguita per esempio utilizzando il Package and esempio utilizzando il Package and Deployment wizard presente in Visual Deployment wizard presente in Visual Studio o Office DeveloperStudio o Office Developer

Page 45: Visio 2003 Programming

21/04/2321/04/23

InstallazioneInstallazione

Page 46: Visio 2003 Programming

21/04/2321/04/23

ReferenceReference

• ““Programmare Microsoft VISIO”Programmare Microsoft VISIO”– Ed:MondadoriEd:Mondadori

• ““Microsoft Visio 2003 Developer’s Survival Microsoft Visio 2003 Developer’s Survival Pack”Pack”– Ed:TraffordEd:Trafford– Autore: Graham WidemanAutore: Graham Wideman

• http://msdn.microsoft.com/libraryhttp://msdn.microsoft.com/library