Benutzerdefinierte Linien

Eine Firma hätte gerne ein Shape für eine Grenze / eine Abgrenzung. Eine Wellenlinie soll her. Allerdings eine, die beim Ziehen größer wird. Da es sehr mühsam ist einen Sinus, eine Wellenlinie oder eine Kurve zu zeichnen, gehen wir auf die Suche. In der Schablone „Verbinder“ werden wir fündig: das Shape „Welliger Verbinder 2“ stellt eine solche Kurve dar.
Wir erstellen ein neues Linienmuster, indem wir den Zeichnungsexplorer öffnen (Registerkarte „Entwicklertools“). Das „Muster-Shape wird bearbeitet“ (Kontextmenü), das Shape wird eingefügt.
Zugegeben: ein bisschen muss man probieren, bis die Grüße und Position passt.
Dann kann es verwendet werden, indem man es aus dem Aufgabenbereich „Form formatieren“ den neuen Stricktyp, der ganz unten in der Liste steht, herausholt.
Die Teilnehmerinnen waren begeistert.

Eigene Icons für eigene Master-Shapes

Und ich dachte immer, das funktioniert nicht.
Wenn man in Visio eine neue Schablone erstellt und dort ein Shape hineinzieht, so kann man mit dem Symbol-Editor dieses Icon ändern. Seit Visio 2013 wird allerdings kein geändertes Icon angezeigt. Nun habe ich gefunden, warum nicht: man muss in den Master-Shape-Eigenschaften die Option „Livevorschau in Shape-Fenster“ aktivieren.

Ordentlich mit Visio

In der gestrigen Schulung hat mir ein Teilnehmer eine Zeichnung eines Fertigunsplans gezeigt.

Wir haben den Plan neu erstellt, indem wir neue Shapes erstellt haben, eine neue Schablone und eine Vorlage. Sieht es ordentlicher und aufgeräumter aus, wir ich finde.

Dynamischer Verbinder – Farbe ändert sich, wenn Verbinder klebt

Ich habe eine Weile getüftelt. Aber es funktioniert. Man kann einen verbinder rot einfärben, wenn er klebt und schwarz formatieren, wenn er nicht klebt. Über ShapeSheet-Funktionen.
Wenn ein Verbinder klebt, steht in der Zelle BeginX (beziehungsweise EndX) die Formel
=PAR(PNT(Process.2!Connections.X3,Process.2!Connections.Y3))
wobei Process der Name des Shapes darstellt, an dem der Verbinder klebt.
Ich erstelle eine benutzerdefinierte Zelle, die mit der Formel
=EVALCELL(BeginX)
die Formel ausliest. Erstaunlicherweise, kann diese Formel nicht weiterverarbeitet werden. Sie muss zu erst in einen Text verwandelt werden:
=FORMAT(EVALCELL(BeginX),“@“)
Und nun kann man beispielsweise die ersten drei Zeichen herauslesen:
=LEFT(FORMAT(EVALCELL(BeginX),“@“),3)
Die benutzerdefinierte Zelle heißt „User.KlebeverhaltenLinks“. Ebenso gibt es eine Zelle „User.KlebeverhaltenRechts“.
Und nun kann man beispielsweise in der Linienfarbe überprüfen:
=IF(AND(STRSAME(User.KlebeverhaltenLinks,“PKT“),STRSAME(User.KlebeverhaltenRechts,“PKT“)),2,0)
Das sollte man noch mit einer GUARD-Funktion schützen.

Die Vorgänge

Wir erstellen ein Logo oder bauen es nach – mit Visio – Teil III
Für komplexe Formen verwende ich gerne die Vorgänge, die sich in der Registerkarte „Entwicklertools“ befinden. Damit kann man leicht einen Kreis mit einem Rechteck verschmelzen. Diesen Vorgang kann man mehrmals wiederholen (auch Subtrahieren bietet sich in vielen Fällen an).

Das Werkzeug „Bleistift“

Wir bauen ein Logo (nach) – in Visio.
Natürlich gibt es hierfür verschiedene Wege. Kennen Sie das Werkzeug „Bleistift“?
Ich fixiere das Originallogo, das ich nachbaue über Entwicklertools / Schutz.
Ich beginne mit einem Rechteck. Wechsle zum Werkzeug Bleistift. Mit gedrückter [Strg]-Taste können neue Knoten hinzugefügt werden.
Diese können leicht verschoben werden. Wenn Sie beim Verschieben die [Alt]-Taste drücken, umgehen Sie das Gitter.
Einige Klicks – und fertig ist die neue Treppe.

Mastershapes in einer Schablone

Sehr geehrter Herr Dr. René Martin,
[…] Ziel ist es die Visio Diagramme mit unserem SAP System zu verbinden.
Dazu müssen jedem Shape entsprechende Shape-Daten mitgeben werden.
Dabei haben mir Ihre Bücher
(Microsoft Visio 2010 Programmierung Microsoft Visio effizient anpassen und erweitern) und
(Visio 2013/2016 anpassen Das Handbuch für Entwickler),
wie auch Ihr Video-Training
(Visio 2010 Umfassend praxisorientiert, leicht verständlich) schon erheblich geholfen.
Da es das Ziel der Automatisierung ist dem Benutzer die Erstellung der Diagramme möglichst einfach zu machen,
soll er auch beim Anlegen neuer Shapes bestmöglich unterstützt werden.
Jetzt bin ich jedoch auf ein Problem gestoßen an welchem ich nicht weiter komme.
Ich benötige eine Möglichkeit einem neuerzeugten Shape die benötigten Shape-Daten mitzugeben, wenn es zu einer Schablone hinzugefügt und somit zum Mastershape wird.
Es gibt jedoch kein Event, welches auf dieses Ereignis anspricht.
Haben Sie vielleicht eine Idee wie sich dies umsetzen lässt?
 
Im Voraus schon mal vielen Dank für Ihre Hilfe
 
Mit freundlichen Grüßen
Hallo Herr B.,
 
ich verstehe den Workflow nicht ganz: der Anwender soll neue Shapes erstellen. Beim Abspeichern in einer Schablone sollen (automatisiert) Daten an diese Shapes angefügt werden.
* Warum erstellt der Anwender nicht selbst diese Daten?
* Oder: wenn es sich um immer die gleichen Daten handelt (und auch viele Daten) dann würde ich es nicht über ein Ereignis lösen, sondern über eine Schaltfläche, die der Anwender anklickt: entweder dem markierten Shape werden neue Daten hinzugefügt oder: alle Mastershapes einer Schablone werden mit diesen Daten versehen.
 
Der Grund: meines Wissens gibt es kein Ereignis: „ziehe ein Shape vom Zeichenblatt in die Schablone“. Und: nach meiner Erfahrung werden Shapes in die Schablone gezogen; dort manchmal bearbeitet. Manchmal werden sie auch wieder auf das Zeichenblatt gezogen, bearbeitet und wieder zurück in die Schablone gezogen; manchmal auch in der Schablone direkt bearbeitet (auf dem Zeichenblatt geht das manchmal besser).
 
Hilft Ihnen diese Antwort?

Dynamische Schaltflächen auf einem Zeichenblatt

Amüsant. Wenn man in Visio eine Befehlsschaltfläche auf ein Zeichenblatt legt, liegt das nächste Shape ÜBER der Befehlsschaltfläche. Schaltet man jedoch den Entwurfsmodus aus, liegt das Shape dahinter. Es gibt keine Möglichkeit, das Shape vor die Befehlsschaltfläche zu legen.
Auch die Zellen „NoShow“ oder „Transparency“ bewirken nicht, dass die Schaltfläche ausgeblendet wird. Man könnte sie per Programmierung auf Width = 0 und Height = 0 (vielleicht noch PinX und PinY auf 0) setzen – dann ist die Schaltfläche fast verschwunden. Natürlich kann man sie auch programmieren:
Dim shp As Shape
 
Dim DiagramServices As Integer
DiagramServices = ActiveDocument.DiagramServicesEnabled
ActiveDocument.DiagramServicesEnabled = visServiceVersion140 + visServiceVersion150
 
Set shp = Application.ActiveWindow.Page.InsertObject(„forms.Commandbutton.1“, visInsertAsControl + visInsertNoDesignModeTransition)
shp.Cells(„PinX“).FormulaU = „=100mm“
shp.Cells(„PinY“).FormulaU = „=150mm“
shp.Name = „Testbutton“
 
 
‚Restore diagram services
ActiveDocument.DiagramServicesEnabled = DiagramServices
 
Jedoch – es bleibt mühsam dynamische Schaltfläche auf dem Zeichenblatt zu erzeugen.

Logo bauen

Im letzten Urlaub – in Georgien – habe ich ein Logo gesehen und mich gefragt in wie vielen Schritten ich es in Visio nachbauen kann.


Erster Schritt: ich benötige drei Kreise.


Zweiter Schritt: die linken beiden Kreise werden kombiniert (Registerkarte „Entwicklertools“


Dritter Schritt: das linke Shape wird mit dem rechten Kreis kombiniert.


Vierter Schritt: Um zu sehen, ob das Ergebnis korrekt ist, wird es eingefärbt. Und ein farbiges Rechteck dahinter gelegt.
Fünfter Schritt: Ein Rechteck an den Rand einzufügen ist dann nicht mehr schwierig.