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?

Anlage

In der letzten Visio-Schulung zeigte mir ein Teilnehmer eine Anlage, die er mit Visio „gebaut“ hat. Auf Anregung meines Motors. Ich war begeistert. Klasse!

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.

Die API-Hölle

Ich versuche API-Funktionen zu vermeiden. Das Problem sind die 32- und 64-Bit-Systeme.

Zoom – ein Rundungsfehler

Visio hat einen Rechenfehler, besser: Rundungsfehler beim Zoom. Deshalb ist es nicht möglich, jeden beliebigen Zoom einzustellen. Ein Bug?

Datum der letzten Bearbeitung

Guten Morgen Herr Martin,
wir haben seit neuestem Probleme mit eingefügten Datumsfeldern auf unseren Zeichnungen.
In der Vorlage ist ein Feld – Datum der letzten Bearbeitung – eingefügt.
Bislang konnte man dann einen Plan, den man z.B. am 23.05. zuletzt bearbeitet hat, am 25.05. öffnen, und als Datum wurde der 23.05. angezeigt. So möchten wir es auch.
Nun passiert es aber, dass man die Datei am 25.05. öffnet und sofort wird auch das heutige Datum angezeigt, Beispiel im Anhang. Was machen wir falsch, haben Sie einen Tip?
#####
Hallo Frau W.,
nein – ich habe Sie nicht vergessen – ich wollte das Phänomen nur „gründlich“ untersuchen und abwarten, was am nächsten Tag passiert:
* in einer Dummy-Datei werden die drei Feldfunktionen Aktuelles Datum, Erstelldatum und Datum der letzten Bearbeitung korrekt berechnet.
* Ich habe in Ihrer Datei die Feldfunktion ausgetauscht – sie wird automatisch aktualisiert.
* In Excel gibt es „volatile“ Funktionen; das heißt Funktionen die beim Öffnen neu berechnet werden. Wenn es in Ihrer Zeichnung etwas gäbe, das beim Öffnen aktualisiert wird, müsste er beim Schließen fragen „ob Sie die Änderungen speichern möchten“. Tut Visio aber nicht.
* Gegenfrage: Ist das die einzige Zeichnung, in der das Phänomen auftritt?
schöne (und mal ratlose) Grüße
######
Hallo Herr Martin,
 
vielen Dank, dass Sie sich der Sache annehmen – ich bin auch ratlos.
Habe gestern nochmal eine Datei angelegt aus meiner Vorlage (s. Anhang), in der ich nochmals das Datumsfeld neu eingesetzt habe.
Obwohl ich keine Änderung vorgenommen habe, springt das Datum beim Öffnen auf das heutige.
 
Im Großen und Ganzen scheint das jetzt häufiger aufzutauchen. Aber noch nicht so lange, zumindest haben wir das bewusst noch nicht so wahrgenommen

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.

Reihenfolge der Shape-Daten

Interessant.
Die Reihenfolge der Shape-Daten eines Visio-Shapes kann nicht geändert werden.
Um die angezeigte Reihenfolge zu ändern, müssen Sie einen Sortierschlüssel eingeben.
So wird aus der ursprünglichen Reihenfolge
Anschaffungsdatum-Preis-Standort-Verantwortlicher
wenn Sie die Werte 400-300-200-100 eingeben:
Verantwortlicher-Standort-Preis-Anschaffungsdatum.
Ändert man nun den Wert von „Standort“ auf „50“, erscheint der Standort nicht an erster Stelle, wie erwartet, sondern an letzter Stelle.
Der Grund: der Sortierschlüssel wird alphanumerisch gelesen (also von links nach rechts) und nicht numerisch (der Größe nach).
Die Lösung:
Tragen Sie 050 ein – dann steht der Standort an erster Stelle.

Text ein- und ausblenden

Im Abschnitt »Miscellaneous« befindet sich die Zelle HideText. Wie der Name sagt, kann darüber der Text ausgeblendet werden. Normalerweise ist der Wert dieser Zelle FALSE. Sollte man nun beispielsweise über eine Aktionszelle darauf zugreifen, so könnte man mit

=SETF(„HideText“,TRUE)

Den Text ausblenden. Oder besser:

=SETF(„HideText“,NOT(HideText))

So wird der Text abwechselnd ein- oder ausgeblendet. Dies kann im Kontextmenü, das heißt in der Zelle Menu angezeigt werden:

=IF(HideText,“Text einblenden“,“Text ausblenden“)

Ein Bug im ShapeSheet?

Sehr herstaunlich. Wenn man im ShapesSheet eines Shapes in Visio einen Abschnitt „Action“ einfügt und in die Zelle „Menu“ einen Text einträgt, wird dieser im Kontextmenü angezeigt. So weit so gut.
Früher (?) konnte man in der Zelle „TagName“ einen Kommentar eintragen, der dann in der Statuszeile angezeigt wurde. Jetzt (?) unter Windows 10 (?) in Visio 2016 (?) verschwindet dieser Kontextmenüeintrag. Ein Bug?