Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer."—  Präsentation transkript:

1 Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer DataAssist e.K. München und Zürich

2 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 gibts weitere Infos?

3 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

4 Š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

5 Arbeiten mit Visio Drag & 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')

6 Terminologie (Smart)Shape(Shape) Zeichnungsobjekt einer Visio- Seite mit programmierbarem Verhalten Stencil (Schablone) Thematische Sammlung von Shapes in einer eigenen, verteilbaren Datei (.vss)

7 Terminologie 2 MasterShape (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

8 Visio Enterprise Die Visio 2000 Produktfamilie Visio Standard Ablaufillustration Visio Technical HVAC, Maschinenbau Visio Professional Netzwerke, Software Visio Enterprise IT-Doku & Planung Visio Technical Visio Professional Visio Standard

9 Visio Network 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 Visio Professional Visio Standard

10 Visio Standard Geschäftsdiagramme und Fluss- diagramme Grafische Darstellung von Organisationsstrukturen Grafische Planung von Projekten Erstellung von Zeichnungen für Präsentationen Weiterere Geschäftszeichnungen wie Formulare, Landkarten & Grafiken

11 Visio Technical Exaktes CAD-ähnliches Zeichnen und Arbeiten Verfahrenstechnik-Zeichnungen und Plandiagramme Grundrisse, Baupläne im Bereich Facility Management Erstellen weiterer anlage- technischer Zeichnungen Elektrische und elektronische Schemadiagramme für Steuersysteme

12 Visio Professional LAN-Dokumentation und Entwurf Dokumentation von Verzeichnisdiensten Planung von Web-Sites Softwarekomponenten- Entwurf Datenflussdiagramme Entwurf von Datenbankmodellen Analyse von Geschäftsprozessen

13 Visio Enterprise (2000 !) Die gesamte Funktionalität von Visio Professional plus: Auto-Discovery von Netzen UML-Softwaremodellierung Datenbank-Modellierung Software-ReEngineering Visio Network Equipment

14 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

15 Komponenten einer Lösung Erst durch die Kombination aller Elemente entsteht eine komplette Visio-Lösung

16 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

17 Die Visio-Umgebung Schablonen Vorlagen Visio Engine VBA VSL EXE Automation Interface Add-ons MS Office ODBC/ADO Eigene

18 Entwicklungsumgebung 1: Das ShapeSheet in Visio

19 Shapes: parametrische Objekte GUI-Aktion ShapeSheet Shape als Ergebnis

20 Das ShapeSheet Die Grundlage für Visios 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

21 Ereignisse Abschnitt TheText EventDblClick EventXFMod EventDrop Ereignisse im ShapeSheet

22 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

23 Beispiel zu DependsOn Setzen der Füllfarbe über Datenfeld oder alternativ über das User Interface Ein Datenfeld mit der Farbe erzeugen Zwei benutzerdefinierte Zellen einfügen =DependsOn(Prop.Color) + Setf("FillForegnd",Prop.Color) =DependsOn(FillForegnd) + Setf("Prop.Color",FillForegnd)

24 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!

25 Demo ShapeSheet- Programmierung ShapeSheet- Programmierung

26 Entwicklungsumgebung 2: Automation in Visio

27 Das Visio Objektmodell Klar strukturierter Aufbau, schlank Vordefinierte Objekte für Dokument, Seite und Fenster etc. Grafisch über Online-Hilfe navigierbar

28 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

29 Wie wird entwickelt ShapeSheet und VBA-Code sind in Visio miteinander verbunden Nicht Visio wird gesteuert, sondern das darunter 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

30 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 (VSDs > Shapes)

31 Coding Issues Early vs. late binding, Variants meiden VBA code ist Bestandteil der Zeichnung Code kann geschützt werden – Extras / Eigenschaften / Schutz im VBA- Editor Zusammengesetzte Statements sind möglich, aber schwerer zu debuggen

32 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

33 Ein Dokument erzeugen Verweis auf die "Documents" collection des Application-Objekts erzeugen Set oDocs = Visio.Application.Documents 'oder Set oDocs = Application.Documents 'oder Set oDocs = Documents Ein neues Dokument hinzufügen Set oDoc = Documents.Add("Diagramm.vst") Set oDoc = Documents.Add("") Set oDocStencil = Documents.OpenEx( _ "Blocks.vss", visOpenDocked)

34 Die Schablone bestimmen Set oDocStencil = Documents("Basic Shapes.vss") Die "Masters" Collection der Schablone holen Set oMasters = oDocStencil.Masters Verweis auf die abzulegenden Shapes Set 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

35 Die Zeichnungsseite holen Set oPage = ActiveDocument.Pages.Item(1) Set oPage = ActivePage Das Mastershape ablegen Set oShape = oPage.Drop(oMaster,4.25,5.5) 4.25, 5.5 geben die Koordinaten des Pins an und werden immer in Inch angegeben! Bei Bedarf mit ConvertResult die Einheiten umrechnen Master auf der Seite ablegen

36 Text zu Shapes hinzufügen Die Text-Eigenschaft des Shapes setzen oShape.Text = Das ist ein String" ASCII linefeed erzeugt Zeilenumbrüche oShape.Text = "Karl Namenlos" & _ Chr$(10) & "Vorstandsschläfer" Anführungszeichen in Strings verdoppeln shpObj.Text = """Hello?""" Eine übersichtlichere Möglichkeit: shpObj.Text = Chr$(34) & "Hello" & Chr$(34)

38 Die Eigenschaft Formula einer Zelle liefert die ShapeSheet-Formel als String Dim sFmla = String sFmla = oCell.Formula Die Eigenschaft Result liefert den Wert der Formel als Double in den angeg. Einheiten Dim dFmlaResult as Double dFmlaResult = oCell.Result("in") dFmlaResult = oCell.Result("mm") Siehe auch ResultInt, ResultIU, ResultStr Formel oder Ergebnis?

39 Eine Formel festlegen Setzen Sie die Eigenschaft Formula: oCell.Formula = "=GUARD(Width*2)" Setzen Sie die Eigenschaft Result oCell.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)

40 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 each For each shp in ActivePage.Shapes 'shape bearbeiten Next shp Eine Collection bearbeiten

41 Masters, Pages, Styles, Fonts, Colors Name, Fullname, Path Creator, Description, Keywords, Subject, Title ReadOnly, Saved, InPlace Wichtige Eigenschaften

42 Eine Seite holen Set oPage = oPages.Item("pagename") Set oPage = oPages.Item(index) Die aktive Seite holen Set oPage = Application.ActivePage (Das aktive Fenster muss ein Zeichen- fenster sein, sonst erhält man einen Fehler!) Daten aus Seiten auslesen

43 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

44 Das aktive Fenster feststellen Set oWindow = Visio.ActiveWindow Den Typ eines Fenster feststellen If oWindow.Type <> visDrawing Then Debug.Print "Kein Zeichenfenster" End If Type: visDrawing, visSheet, visStencil, visIcon SubType: visPageWin, visMasterWin, visPageGroupWin, visMasterGroupWin Mit Fenstern arbeiten

45 Nutzen Sie CellsSRC, um über Abschnitt, Zeile und Zelle auf Shapes zuzugreifen Set 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

46 Verhalten in ShapeSheet-Zellen ShapeSheet Ereignisse VBA Code hinter Ereignissen Für Visio-Objekte Für ActiveX Controls Visio-Ereignisbehandlung

47 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

48 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

49 Unterstützte Ereignisse

50 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

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

52 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

53 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)

54 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

55 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

56 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

57 An andere Shapes ankleben GlueTo klebt an spezifische Stelle eines Shapes oFromCell.GlueTo _ oToShape.Cells("Connections.X1") GlueToPos klebt an eine X,Y Position, die einen Anteil des Ausrichtungs- feldes des Shapes darstellt oFromCell.GlueToPos oToShape, 0.5, 0.5 GlueToPos erzeugt immer einen Verbindungspunkt, selbst wenn bereits einer vorhanden ist.

58 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

59 Die Connects Eigenschaft eines Shapes liefert dessen Verbindungen Enthält für jedes Shape, an das angeklebt wurde, ein Connect-Objekt FromSheet, ToSheet Eigenschaften FromPart, ToPart Eigenschaften FromCell, ToCell Eigenschaften Infos über Connections

60 A verbunden nach B (2-D nach 2-D über Steuerelement) A hat einen connects.Count = 1 FromSheet = A, ToSheet = B FromPart = visControlPoint + 0 ToPart = visConnectionPoint + 0 FromCell, ToCell = Cell-Objekte für FromPart, ToPart Steuerelement zu Shape

61 Window-Eigenschaften Zoom Liest oder setzt die Zoomeinstellung (Fliesskommawert 1.00 = 100%) Page, PageFromName, PageAsObj Liest oder setzt die angezeigte Seite

62 Window-Methoden GetViewRect Liefert Koordinaten des Fensterrahmens DockedStencils Liefert die Namen aller geöffneten Schablonen Activate Aktiviert das entsprechende Fenster

63 Windows.Add Damit erzeugen Sie ein neues Fenster im Bereich der Visio-Anwendung ActiveWindow.Windows.Add("My Anchor",, _ visAnchorBarAddon) Kann von folgendem Typ sein: visAnchorbarAddon, visStencilAddon, oder visDrawingAddon

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

65 Spatial Relations Mit SpatialRelation stellen Sie die räumliche Beziehung zweier Shapes fest. Liefert einen der angegebenen Werte: visSpatialOverlap, visSpatialContain, visSpatialContainedIn, visSpatialTouching visSpatialOverlap

66 Query Events Neu seit Visio 2000 Sie können jetzt auf Ereignisse testen und diese bei Bedarf auch abbrechen

67 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

68 UI-Objekte im Objektmodell

69 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

70 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-88E AFDDD917} Unique Ids für Shapes

71 Lesen einer UniqueID: IDStr = shpObj.UniqueID(visGetGUID) Lesen und Erzeugen einer UniqueID IDStr = _ shpObj.UniqueID(visGetOrMakeGUID) Löschen einer UniqueID shpObj.UniqueID(visDeleteGUID) Arbeiten mit GUIDs

72 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)

73 Visio lässt sich in Gesamtlösungen einbetten Aber: Visio muss auf dem System separat installiert sein Visio-ActiveX-Control in Vorbereitung Embedded Visio

74 Planung einer Visio-Lösung Erst Shapes... – dann Code! Vorlagen für die Lösung erleichtern den Benutzern die Arbeit Programm muss folgende Aufgaben erfüllen: User Interface und Schutz Dateioperationen, Datenablage Behandlung der einzelnen Shapes

75 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!

76 Demo(s) Automations- Programmierung mit Visio Automations- Programmierung mit Visio

77 Konkrete Anwendung in Visio selbst – mitgelieferte Lösungen

78 Gemeinsame Engine und Dateiformat Standard Enterprise Technical Professional Datenbankmodellierung mit Visio

79 Demo Datenbankmodellierung mit Visio

80 Gemeinsame Engine und Dateiformat Standard Enterprise Technical Professional Softwaremodellierung mit Visio

81 Demo Softwaremodellierung mit Visio

82 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

83 Im Ordner DVS Libraries enthalten Informationen für C, VB C-cpp VB Sample Applications VB Solutions VBA Solutions Developing Visio Solutions Buch Wo gibt's Informationen (2)

84 Trainings Training erfolgt stufenweise Anwendertraining (2 Tage) Visio Development Training (5 Tage) Workshops zu Spezialthemen (1-2 Tage)

85 Wo gibts weitere Infos? MSDN online MSDN quickie MSDN TechTalk-Newsgroup news://msnews.microsoft.com/microsoft.public.de.german.te chtalk news://msnews.microsoft.com/microsoft.public.de.german.te chtalk VBA-Magazin 4/99, 6/99, 5/2000, 2/2001 Bücher Edson, David Professional Development with Visio 2000, Sams, ISBN: X

86 Noch Fragen? Microsoft TechEd 2001 Visio Development Training Visio Newsgroup bei MS

87 Fragen!? Uff...

88 Vielen Dank für Ihre Aufmerksamkeit


Herunterladen ppt "Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer."

Ähnliche Präsentationen


Google-Anzeigen