460 likes | 671 Views
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
E N D
Visio 2003Programming 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 • Installazione di una soluzione Visio • Visio 2003 e l’ambiente .NET • Creazione di un componente COM
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)
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)
Sezione Events • La sezione Events dello shapesheet
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
Shortcut menù • È possibile aggiungere attraverso la sezione Actionsdelle azioni al menù di scelta rapida
Visio 2003 e il VBA Shortcut: ALT+F11
La classe Document • Aggiungere un nuovo documento • Dim docObj As Visio.DocumentSet 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)
La classe Page • Sfogliare le pagine di documento • For Each pg In ActiveDocument.PagesDebug.Print pg.NameNext • Aggiungere una pagina • ThisDocument.Pages.Add • Attivare una pagina • Get the last page of the document • Set pg = ActiveDocument.Pages(“MiaPagina”) • ActiveWindow.Page = PageName
La classe Shape • Disegnare una forma • Dim pg As Visio.PageSet pg = ActiveDocument.Pages.Addpg.DrawLine 1, 1, 3, 4pg.DrawRectangle 2, 2, 3, 5 • Aggiungere del testo alla forma • Dim shp As Visio.ShapeSet shp = pg.DrawRectangle(1, 1, 4, 2)shp.Text = “Testo nella forma" • Raggruppare le forme selezionate • Dim sel As Visio.SelectionActiveWindow.SelectAllSet sel = ActiveWindow.Selectionsel.Group
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.ShapeSet shp = ActivePage.DrawRectangle(2, 2, 4, 4)shp = shp.UniqueID(visGetOrMakeGUID)Debug.Print shp.UniqueID(visGetOrMakeGUID)
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
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.
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.
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
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
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.
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.
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.
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.
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/en-us/officeupdate/CD010225661033.aspx
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
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
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
Reference • “Programmare Microsoft VISIO” • Ed:Mondadori • “Microsoft Visio 2003 Developer’s Survival Pack” • Ed:Trafford • Autore: Graham Wideman • http://msdn.microsoft.com/library