microsoft visio als universelle graphikengine visio als entwicklungswerkzeug Šenaj lelić visio...

88
icrosoft Visio als niverselle Graphikengine isio als Entwicklungswerkzeu enaj Lelić isio Master Trainer Europe, ertified Visio Development Trainer ataAssist e.K. München und Zürich

Upload: adelulf-heinitz

Post on 05-Apr-2015

156 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Microsoft Visio alsuniverselle Graphikengine

Visio als Entwicklungswerkzeug

Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

DataAssist e.K. München und Zürich

Page 2: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Agenda

Visio als Produkt Visio als Entwicklungsumgebung

• Das ShapeSheet als erste Entwicklungsumgebung

• Automation mit und von Visio

Visio: eine leistungsfähige Graphik-engine und Entwicklungsumgebung für visuelle Lösungen oder Graphik-Engine einer größeren Lösung

Wo gibt‘s weitere Info‘s?

Page 3: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Voraussetzungen

Kenntnisse in der Programmierung von Microsoft Excel sind hilfreich aber nicht unbedingt nötig

Grundlagen der Automation von Anwendungen mit VB, VBA oder einer anderen automationsfähigen Programmiersprache

Page 4: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Šenaj Lelić

Seit 1991 als IT-Consultant und Trainer tätig Schwerpunkt Visualisierungslösungen,

Systemsoftware, Visio und Datenbanken Seit 1995 Gründer und Geschäftsführer von

DataAssist München

Visio Master Trainer Europe Certified Visio Development Trainer Certified Visio Anwender-Trainer IT Trainer-Coach

[email protected]

Page 5: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Arbeiten mit VisioDrag & Drop von vorbereiteten

Komponenten (Shapes) auf die Zeichnung zur Erstellung eines visuellen Modells der Aufgabe

Nicht Zeichnungsfunktionen stehen im Vordergrund, sondern das Hinzufügen von nichtvisuellen Informationen und Verhalten (optischer Container)

Nutzung der SmartShape- Technologie ermöglicht einen Einsatz in fast allen Unternehmensbereichen('Visio ist das grafische Excel')

Page 6: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Terminologie

(Smart)Shape (Shape)• Zeichnungsobjekt einer Visio-

Seite mit programmierbarem Verhalten

Stencil (Schablone)• Thematische Sammlung von

Shapes in einer eigenen, verteilbaren Datei (.vss)

Page 7: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Terminologie 2MasterShape (MasterShape)

• Ein Shape in einer Schablone

Template (Vorlage)

• Entspricht in etwa einer Dokumentenvorlage in Office (voreing. Arbeitsumgebung)

ShapeSheet (ShapeSheet)

• Container für die Shape-Parameter, wird von der Visio-Engine ausgewertet

Page 8: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

VisioEnterprise

Die Visio 2000 Produktfamilie

Visio Standard• Ablaufillustration

Visio Technical• HVAC,

Maschinenbau

Visio Professional• Netzwerke, Software

Visio Enterprise• IT-Doku & Planung

VisioTechnical

VisioProfessional

VisioStandard

Page 9: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

VisioNetwork Center

Die Visio 2002 Produktfamilie

Visio Standard• Ablaufillustration

• Organigramme

Visio Professional (= Technical + Prof.)• HVAC,

Maschinenbau

• Netzwerke, Software

Visio Network Center (reines Add-On)• IT-Doku & Planung

• IT-Modellierung

VisioProfessional

VisioStandard

Page 10: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Visio StandardGeschäftsdiagramme und Fluss-

diagrammeGrafische Darstellung von

Organisationsstrukturen Grafische Planung von

ProjektenErstellung von Zeichnungen

für PräsentationenWeiterere Geschäftszeichnungen

wie Formulare, Landkarten & Grafiken

Page 11: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Visio TechnicalExaktes CAD-ähnliches Zeichnen

und ArbeitenVerfahrenstechnik-Zeichnungen

und PlandiagrammeGrundrisse, Baupläne im

Bereich Facility ManagementErstellen weiterer anlage-

technischer ZeichnungenElektrische und elektronische

Schemadiagramme für Steuersysteme

Page 12: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Visio ProfessionalLAN-Dokumentation und Entwurf Dokumentation von

VerzeichnisdienstenPlanung von Web-SitesSoftwarekomponenten-

EntwurfDatenflussdiagrammeEntwurf von DatenbankmodellenAnalyse von Geschäftsprozessen

Page 13: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Visio Enterprise (2000 !)

Die gesamte Funktionalitätvon Visio Professional plus:

Auto-Discovery von NetzenUML-SoftwaremodellierungDatenbank-ModellierungSoftware-ReEngineeringVisio Network Equipment

Page 14: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Individuelle Visio-Lösungen

Entwurf anwendungsspez. Shapes

SmartShapes, Datenfelder, etc.

ShapeSheet-Programmierung, VBA-Makros

Automation, Modellierung

Visuelles Frontend einer Enterprise-Lösung

DB-Zugriff

DB-Assistent

Inkrementelle Lösungen mit Visio

Page 15: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Komponenten einer Lösung

Erst durch dieKombination allerElemente entstehteine kompletteVisio-Lösung

Dim appVisio As ObjectDim UIObj As ObjectSet appVisio =CreateObject("App")Set UIObj =appVisio.BuiltInMenusappVisio.SetCustomMenusUIObj

CODE

TEMPLATES

OK

SHAPES

VISIO-Solution

Page 16: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Visio-Lösungen wachsen

Machen Sie Ihre Shapes zu SmartShapes™

Erleichtern Sie sich die Arbeit mit Vorlagen

Nutzen Sie die Möglichkeiten der Automation

Erstellen Sie mit Add-Ons visuelle Modelle

Visio als visuelles Frontend im Unternehmen

Page 17: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Die Visio-Umgebung

Schablonen

Vorlagen

Visio Engine

VBAVSLEXE

AutomationInterface

Add-ons

MS Office

ODBC/ADO

Eigene

Page 18: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Entwicklungsumgebung 1:Das ShapeSheet in Visio

Page 19: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Shapes: parametrische Objekte

GUI-Aktion ShapeSheet

Shape als Ergebnis

Page 20: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Das ShapeSheet Die Grundlage für

Visio‘s Flexibilität Shapes sind parame-

trische Objekte Alle relevanten Shape-

Daten finden sich im ShapeSheet und werden dort definiert und geändert

Auch für den Einsatz von Automation not-wendiges Grund-wissen

Page 21: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Ereignisse Abschnitt

• TheText

• EventDblClick

• EventXFMod

• EventDrop

Ereignisse im ShapeSheet

Page 22: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

DependsOn im ShapeSheet

Wird typischerweise in einer benutzer-definierten Zelle eingesetzt:•=Runaddon("string") + DependsOn(trigger cell)

•=Setf("Cell",formula) + DependsOn(trigger cell)

Damit lassen sich Änderungen im ShapeSheet überwachen, ohne VBA zu benötigen

Page 23: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Beispiel zu DependsOn

Setzen der Füllfarbe über Datenfeld oder

alternativ über das User InterfaceEin Datenfeld mit der Farbe erzeugenZwei benutzerdefinierte Zellen einfügen

• =DependsOn(Prop.Color) + Setf("FillForegnd",Prop.Color)

• =DependsOn(FillForegnd) + Setf("Prop.Color",FillForegnd)

Page 24: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

ShapeSheet vor Code

Formeln im ShapeSheet sind der effizienteste Weg, um in Visio eine Ereignisbehandlung zu erreichen.

Schreiben Sie keine Routinen für die Ereignisbehandlung, wenn Formeln in Zellen ausreichen!

Page 25: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Demo

ShapeSheet-Programmierung ShapeSheet-Programmierung

Page 26: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Entwicklungsumgebung 2:Automation in Visio

Page 27: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Das Visio Objektmodell

Klar strukturierterAufbau, schlank

Vordefinierte Objekte für Dokument, Seite und Fenster etc.

Grafisch über Online-Hilfe navigierbar

StatusBarItemsStatusBars

ToolbarItemsToolbarsToolbarSets

MenuItemsMenuItems

AccelItems

Menus

AccelTables

MenuSets

EventList

AddOns

Colors

Fonts

Styles

Shapes

Pages

Documents

W indow s

Glo

bal

Ap

plic

atio

n

VBE

AddOn

Font

Style

Pag

e

Master

Shape

Do

cum

ent

Cell

CharactersColor

Event

VBProject

1

Selection

Toolbar

StatusBarItem

ToolbarItemToolbarSet

StatusBar

MenuItemMenuItemMenuMenuSet

AccelItemAccelTable

UI object

UI object

Win

do

w

ThisDocument

ActivePage

ActiveDocument

ActiveWindow

Page

Document

Masters

Mas

ter

Layers

Layer

Connects

Connect

ShapesShape…

ConnectsConnect

ConnectsConnect

Layers

Layer

Shapes

ShapeShapes

Shape

Page 28: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Entwicklungsumgebungen

VBA

• Integriert - Development right out of the box!

• Schnell, geeignet für die meisten Aufgaben

COM-fähige Sprachen

• Z.B. VB, VC++, VBA, Delphi, etc.

• Für externe Add-Ons: VSL

• Zur Integration von Visio in eigene Systeme

Page 29: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Wie wird entwickelt

ShapeSheet und VBA-Code sind in Visio miteinander verbunden

Nicht Visio wird gesteuert, sondern dasdarunter liegende ShapeSheet für jedes Shape (selbst das Zeichenblatt !)

Für eine effektive Entwicklung sind sowohl Kenntnisse der ShapeSheet-Programmierung als auch von Automation (VB(A), C++, Delphi) nötig

Grundregel: Erst Shapes.... Dann Code

Page 30: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Planung einer Visio-Lösung

Vorlagen erleichtern den Benutzern die Arbeit

Das Programm muss folgende Aufgaben erfüllen:• User Interface und Schutz

• Dateioperationen, Datenablage

• Behandlung der einzelnen Shapes

Performance bedenken (VSD‘s > 10000 Shapes)

Page 31: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Coding Issues

Early vs. late binding, Variants meidenVBA code ist Bestandteil der ZeichnungCode kann geschützt werden –

Extras / Eigenschaften / Schutz im VBA-Editor

Zusammengesetzte Statements sind möglich, aber schwerer zu debuggen

Page 32: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Wann läuft der Code?

Beim Start von Visio 2000• Pfad für Add-On einstellen

Aus dem Add-On Menü• Der Visio „Entwickler-Modus“

Beim Öffnen eines Dokuments• Alternativ RunModeEntered

Bei der Auswahl einer Menüoption• Oder Aktivierung eines Toolbar-Buttons

Page 33: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Ein Dokument erzeugenVerweis auf die "Documents"

collection des Application-Objekts erzeugenSet oDocs = Visio.Application.Documents 'oder

Set oDocs = Application.Documents 'oder

Set oDocs = Documents

Ein neues Dokument hinzufügenSet oDoc = Documents.Add("Diagramm.vst")

Set oDoc = Documents.Add("")

Set oDocStencil = Documents.OpenEx( _ "Blocks.vss", visOpenDocked)

Page 34: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Die Schablone bestimmenSet oDocStencil = Documents("Basic Shapes.vss")

Die "Masters" Collection der Schablone holenSet oMasters = oDocStencil.Masters

Verweis auf die abzulegenden ShapesSet oMaster = oMasters.Item("Star 5") 'oder

Set oMaster = oMasters("Star 5")

Sicherstellen, dass auf die Masters der Schablone zugegriffen wird, nicht die der Zeichnung!

Verweise auf Mastershapes

Page 35: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Die Zeichnungsseite holenSet oPage = ActiveDocument.Pages.Item(1)

Set oPage = ActivePage

Das Mastershape ablegenSet oShape = oPage.Drop(oMaster,4.25,5.5)

4.25, 5.5 geben die Koordinaten des Pin‘s an und werden immer in Inch angegeben!

Bei Bedarf mit ConvertResult die Einheiten umrechnen

Master auf der Seite ablegen

Page 36: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Text zu Shapes hinzufügen

Die Text-Eigenschaft des Shapes setzenoShape.Text = “Das ist ein String"

ASCII linefeed erzeugt ZeilenumbrücheoShape.Text = "Karl Namenlos" & _

Chr$(10) & "Vorstandsschläfer"

Anführungszeichen in Strings verdoppelnshpObj.Text = """Hello?"""

Eine übersichtlichere Möglichkeit:shpObj.Text = Chr$(34) & "Hello" & Chr$(34)

Page 37: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

In Visio’s Objektmodell wird eine Formel durch ein Cell-Objekt repräsentiert

So erhalten Sie ein Cell-ObjektSet oCell = oShape.Cells("Width")

So erhalten Sie ein Cell-Objekt einer Seite (auch die Seite ist ein Shape)Dim oPageSheet as Visio.Shape

Set oPageSheet = ActivePage.PageSheet

Set oCell = oPageSheet.Cells("PageWidth")

Formeln von Shapes lesen

Page 38: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Die Eigenschaft Formula einer Zelle liefert die ShapeSheet-Formel als StringDim sFmla = String

sFmla = oCell.Formula

Die Eigenschaft Result liefert den Wert der Formel als Double in den angeg. EinheitenDim dFmlaResult as Double

dFmlaResult = oCell.Result("in")

dFmlaResult = oCell.Result("mm")

Siehe auch ResultInt, ResultIU, ResultStr

Formel oder Ergebnis?

Page 39: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Eine Formel festlegen

Setzen Sie die Eigenschaft Formula:oCell.Formula = "=GUARD(Width*2)"

Setzen Sie die Eigenschaft ResultoCell.Result(visNumber) = 42

Auch ResultInt und ResultIU lassen sich setzen, ResultStr ist read-only

Zum Überschreiben einer geschützten Formel benutzen Sie FormulaForce (Formeln lassen sich mit Guard schützen)

Page 40: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Die meisten Collections in Visio starten bei 1, außer UI objects und Systemsachen (bei 0)

Die Count Eigenschaft liefert die Anzahl der Elemente einer Collection

Seit Visio 2000 auch über for eachFor each shp in ActivePage.Shapes

'shape bearbeitenNext shp

Eine Collection bearbeiten

Page 41: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Masters, Pages, Styles, Fonts, ColorsName, Fullname, PathCreator, Description, Keywords, Subject,

TitleReadOnly, Saved, InPlace

Wichtige Eigenschaften

Page 42: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Eine Seite holenSet oPage = oPages.Item("pagename")Set oPage = oPages.Item(index)

Die aktive Seite holenSet oPage = Application.ActivePage

(Das aktive Fenster muss ein Zeichen-fenster sein, sonst erhält man einen Fehler!)

Daten aus Seiten auslesen

Page 43: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Eine Shape-Collection kann 'normale' Shapes, Gruppen, Führungslinien, linked/embedded objects enthalten

Die Type Eigenschaft liefert den Typ des Shapes:•visTypeShape, visTypeGroup, visTypeGuide, visTypeForeignObject, visTypePage

Weitere Infos in der Entwickler-Referenz Online-Hilfe oder im DVS

Daten aus Shapes auslesen

Page 44: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Das aktive Fenster feststellenSet oWindow = Visio.ActiveWindow

Den Typ eines Fenster feststellenIf oWindow.Type <> visDrawing Then Debug.Print "Kein Zeichenfenster"End If

• Type: visDrawing, visSheet, visStencil, visIcon

• SubType: visPageWin, visMasterWin, visPageGroupWin, visMasterGroupWin

Mit Fenstern arbeiten

Page 45: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Nutzen Sie CellsSRC, um über Abschnitt, Zeile und Zelle auf Shapes zuzugreifenSet oCell = oShape.CellsSRC _(visSectionControls, _ '(Controls Absch.)

visRowControl + 3, _ '(4. Zeile)

visCtlX) '(Controls.X Zelle)

Siehe auch die Methoden SectionExists, RowExists, CellExists, CellsSRCExists

Eine Überprüfung sollte immer statt-finden, da evtl. Abschnitte im Shapesheet fehlen können!

Die Methode CellsSRC

Page 46: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Verhalten in ShapeSheet-ZellenShapeSheet EreignisseVBA Code hinter Ereignissen

• Für Visio-Objekte

• Für ActiveX Controls

Visio-Ereignisbehandlung

Page 47: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Eine Formel kann von anderen Zellen abhängen•PinY =(BeginY+EndY)/2•EndY = PAR(PNT(

Sheet.2!Connections.X1,Sheet.2!Connections.Y1))

Es gibt ein Abhängigkeitsnetzwerk:• PinY hängt ab von EndY, da wiederum von Sheet.2!

Connections.X1 abhängt.

• Der Wert von Connections.X1 ändert sich und sorgt dafür, daß EndY und PinY neu berechnet werden.

Zell-Abhängigkeiten

Page 48: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

VBA code für Ereignisse

Ereignisse sind Teil der Typelib für Visio

Die Objekte haben Ereignisse definiert, die nur bei bestimmten Objekttypen feuern

Ereignisbehandlung mit VBA auch in Visio 5.x

Page 49: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

AfterModal BeforeSelectionDelete DocumentCreated SelectionChangedAppActivated BeforeShapeDelete DocumentOpened ShapeAddedAppDeactivated BeforeStyleDelete DocumentSaved ShapeChangedAppObjectActivated BeforeWindowClose DocumentSavedAs ShapeDeletedAppObjectDeactivated BeforeWindowPageTurn FormulaChanged StyleAddedBeforeDocumentClose BeforeWindowSelDelete MarkerEvent StyleChangedBeforeDocumentSave CellChanged MasterAdded TextChangedBeforeDocumentSaveAs ConnectionsAdded MasterChanged WindowActivatedBeforeMasterDelete ConnectionsDeleted PageAdded WindowOpenedBeforeModal DesignModeEntered PageChanged WindowTurnedToPageBeforePageDelete DocumentAdded RunModeEnteredBeforeQuit DocumentChanged SelectionAdded

Unterstützte Ereignisse

Page 50: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Hierarchische Ereignissketten

Wählen Sie die Quelle, die für Ihre Aufgabenstellung am sinnvollsten ist

Viele Ereignisse werden von mehr als einem Objekt generiert:• Page.ShapeAdded -> Feuert, wenn ein Shape der Seite

hinzugefügt wird

• Doc.ShapeAdded -> Feuert, wenn ein Shape irgendeiner Seite des Dokuments hinzugefügt wird

• App.ShapeAdded -> Feuert, wenn ein Shape irgendeiner Seite in irgendeinem Dokument der Anwendung hinzugefügt wird

Im VBA-Objektbrowser erhalten Sie Informationen über die einzelnen Ereignisdefinitionen

Page 51: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Document Ereignisse

Das vor-instantiierte Document-Objekt gibt Ihnen Zugriff auf verschiedene Ereignisse

Page 52: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Arbeiten mit WithEvents

Das “WithEvents” Schlüsselwort erlaubt das Schreiben von Code für jedes Quellobjekt eines Ereignisses

Die WithEvents Variable muss an ein bestehendes Objekt 'gebunden' werden:

Dim WithEvents aPage As Visio.Page

Set oPage = Visio.ActivePage

Page 53: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

ActiveX Controls

Jedes ActiveX Control kann in ein Visio-Dokument eingefügt werden.

Das Dokument muss sich im Run-Mode befinden, damit Ereignisse ausgelöst werden

Ereignisbehandlung für ActiveX-Controls geschieht auf die gleiche Weise wie für Visio-Objekte mit WithEvents

Bis voraussichtlich Jahresende wird es auch ein Visio ActiveX-Control geben (für Viewer-Funktionalität)

Page 54: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Einstellungen unter Extras/Optionen können die Ereignisbehandlung abschalten

Application.EventsEnabled kann dazu ebenfalls benutzt werden

Persistenz wird durch zwei Methoden möglich:

• DocumentOpened

• RunModeEntered

Hinweise

Page 55: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Holen Sie sich ein Zellobjekt, welches einen Teil des Shapes darstellt, von dem die Klebung ausgeht

Nutzen Sie GlueTo oder GlueToPos dieses Zell-Objektes und geben Sie an, an welchem Shape Sie ankleben wollen

Shapes verbinden

Page 56: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Steuerelement (Control handle)oFromCell = oShape.Cells(“Controls.X1”)

Beginn- oder Endpunkt eines 1-D Shapes

oFromCell = oShape.Cells(“BeginX”) Ecke eines Shapes (an "PinX" oder "Geometry1.X1" Zellen bei Führungslinien)

oFromCell = oShape.Cells(“AlignLeft”)

Jede Zelle eines X,Y Paares ist möglich (die andere wird von Visio automatisch geklebt)

Die Ausgangszelle

Page 57: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

An andere Shapes ankleben

GlueTo klebt an spezifische Stelle eines ShapesoFromCell.GlueTo _

oToShape.Cells("Connections.X1")

GlueToPos klebt an eine X,Y Position, die einen Anteil des Ausrichtungs-feldes des Shapes darstelltoFromCell.GlueToPos oToShape, 0.5, 0.5

GlueToPos erzeugt immer einen Verbindungspunkt, selbst wenn bereits einer vorhanden ist.

Page 58: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Daten zu Shapes hinzufügen

Sie erhalten über die Eigenschaft Cells jede benannte Zelle in einem ShapeSheet, auch Datenfelder oder benutzerdefinierte Zellen

Was passiert, wenn die Zelle nicht existiert?Kann durch CellsExists getestet werden

Zelle kann per VBA hinzugefügt werden

Page 59: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Die Connects Eigenschaft eines Shapes liefert dessen Verbindungen

Enthält für jedes Shape, an das angeklebt wurde, ein Connect-Objekt

FromSheet, ToSheet EigenschaftenFromPart, ToPart EigenschaftenFromCell, ToCell Eigenschaften

Infos über Connections

Page 60: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

A verbunden nach B

(2-D nach 2-D über Steuerelement)

A hat einen connects.Count = 1 FromSheet = A, ToSheet = BFromPart = visControlPoint + 0ToPart = visConnectionPoint + 0FromCell, ToCell = Cell-Objekte für FromPart, ToPart

A B

Steuerelement zu Shape

Page 61: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Window-Eigenschaften

Zoom Liest oder setzt die Zoomeinstellung

(Fliesskommawert 1.00 = 100%)

Page, PageFromName, PageAsObj Liest oder setzt die angezeigte Seite

Page 62: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Window-Methoden

GetViewRect Liefert Koordinaten des Fensterrahmens

DockedStencils Liefert die Namen aller geöffneten

Schablonen

Activate Aktiviert das entsprechende Fenster

Page 63: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Windows.Add

Damit erzeugen Sie ein neues Fenster im Bereich der Visio-AnwendungActiveWindow.Windows.Add("My Anchor", , _

visAnchorBarAddon)

Kann von folgendem Typ sein: visAnchorbarAddon, visStencilAddon,

oder visDrawingAddon

Page 64: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Windows.Add - 2

Die ideale Basis für Add-Ons und eigene Lösungen innerhalb der Visio Anwendungsoberfläche

Page 65: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Spatial Relations

Mit SpatialRelation stellen Sie die räumliche Beziehung zweier Shapes fest.

Liefert einen der angegebenen Werte:visSpatialOverlap, visSpatialContain,

visSpatialContainedIn, visSpatialTouching

visSpatialOverlap

Page 66: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Query Events

Neu seit Visio 2000Sie können jetzt auf Ereignisse testen und

diese bei Bedarf auch abbrechen

QueryCancelSelectionDelete

SelectionDeleteCanceled BeforeSelectionDelete

Shape wird gelöschtShape wird nicht gelöscht

Page 67: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Was kann angepasst werden?

• Menüeinträge

• Shortcuts

• Symbolleisten

• Statuszeilen

Größe der Änderung sollte beachtet werden, je nach Aufwand zwei Lösungswege

Das Visio-UI anpassen

Page 68: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

MenuItems

MenuItem…

MenuItems

MenuItem

Menus

Menu

MenuSets

MenuSet

AccelItems

AccelItem

ToolBars

ToolBar

StatusBarItems

StatusBarItem

ToolBarItems

ToolBarItem

AccelTables

AccelTable

ToolBarSets

ToolBarSet

StatusBars

StatusBar

UIobject

Application

AddOns

Documents

Windows

UI-Objekte im Objektmodell

Page 69: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Umfang der Änderungen

• Kleine Änderungen direkt durchführen

• Große Änderung in UI-File schreiben

Persistenz

• Dauerhafte Änderungen an das Dokument oder an die Applikation binden

• Temporäre Änderungen direkt durchführen oder ein UI-File laden

Mögliche UI-Änderungen

Page 70: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Kann zur Verknüpfung eines Shapes oder eines Masters mit einem Datensatz in einer Datenbank verwendet werden

Als Vorgabe besitzen MasterShapes eine ID, normale Shapes besitzen keine

Beispiel: {2287DC42-B167-11CE-88E9-0020AFDDD917}

Unique Ids für Shapes

Page 71: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Lesen einer UniqueID:IDStr = shpObj.UniqueID(visGetGUID)

Lesen und Erzeugen einer UniqueIDIDStr = _ shpObj.UniqueID(visGetOrMakeGUID)

Löschen einer UniqueIDshpObj.UniqueID(visDeleteGUID)

Arbeiten mit GUIDs

Page 72: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Visio 2002 kann jede Zeichnung im Format XML, alternativ zum Binärformat speichern

Viele Möglichkeiten für Erweiterungen

Spezifikation in „XML for Visio“-Whitepaper (alle Whitepaper auf MSDN verfügbar)

Visio und XML (2002)

Page 73: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Visio lässt sich in Gesamtlösungen einbetten

Aber: Visio muss auf dem System separat installiert sein

Visio-ActiveX-Control in Vorbereitung

Embedded Visio

Page 74: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Planung einer Visio-Lösung

Erst Shapes ... – dann Code!Vorlagen für die Lösung erleichtern den

Benutzern die ArbeitProgramm muss folgende Aufgaben

erfüllen:

• User Interface und Schutz

• Dateioperationen, Datenablage

• Behandlung der einzelnen Shapes

Page 75: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Verteilung & Wartung

Deployment

• Verteilung von Vorlagen und Schablonen

Wartung

• Problematisch, da VBA Code in Dokument

• Alternative: VBA in der Schablone, 'leere' Datei

• Alternative: externe Automation

Weitergehende Anpassungen

• Über die Registry-Settings, PC-spezifisch!

Page 76: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Demo(s)

Automations-Programmierung mit Visio

Automations-Programmierung mit Visio

Page 77: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Konkrete Anwendung inVisio selbst – mitgelieferte Lösungen

Page 78: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Gemeinsame Engine und DateiformatGemeinsame Engine und Dateiformat

StandardStandard EnterpriseEnterpriseTechnicalTechnical ProfessionalProfessional

Datenbankmodellierung mit Visio

Page 79: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Demo

Datenbankmodellierung mit VisioDatenbankmodellierung mit Visio

Page 80: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Gemeinsame Engine und DateiformatGemeinsame Engine und Dateiformat

StandardStandard EnterpriseEnterpriseTechnicalTechnical ProfessionalProfessional

Softwaremodellierung mit Visio

Page 81: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Demo

Softwaremodellierung mit VisioSoftwaremodellierung mit Visio

Page 82: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Wo gibt's Informationen

Online ActiveX Automationsreferenz

• Entwickler-Referenz aus dem Hilfe-Menü

• Installiert in \Visio\Help bei der Installation

• Suche nach Objekt, Eigenschaft, Methode, Ereignis

Im Object Browser (in VBA [F2])Microsoft Developer Network unter

http://msdn.microsoft.com/visio

Page 83: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Im Ordner DVS • Libraries enthalten Informationen für C, VB

• C-cpp

• VB

• Sample Applications

• VB Solutions

• VBA SolutionsDeveloping Visio Solutions Buch

Wo gibt's Informationen (2)

Page 84: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Trainings

Training erfolgt stufenweise

• Anwendertraining (2 Tage)

• Visio Development Training (5 Tage)

• Workshops zu Spezialthemen (1-2 Tage)

Page 85: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Wo gibt’s weitere Info’s? MSDN online

• http://www.microsoft.com/germany/msdn

MSDN quickie• http://www.microsoft.com/germany/msdn/quickie

MSDN TechTalk-Newsgroup• news://msnews.microsoft.com/

microsoft.public.de.german.techtalk

VBA-Magazin• http://www.vba-magazin.de

• 4/99, 6/99, 5/2000, 2/2001

Bücher• Edson, David “Professional Development with

Visio 2000”, Sams, ISBN: 067231813X

Page 86: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Noch Fragen?

Microsoft TechEd 2001

Visio Development Training

Visio Newsgroup bei MS

[email protected]

Page 87: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Fragen!?

Uff...Uff...

Page 88: Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer

Vielen Dank für Ihre Aufmerksamkeit