Dynamische Shapes

Hallo Herr Martin,
ich sitze heute im HomeOffice und wollte mir eine vermeintlich einfache Aufgabe stellen.
Ich möchte mir ein Shape bauen das ich als „Rahmen verwenden möchte“ Das Shape soll so aussehen.
Ich will das als Sammelplatz für andere Shapes nutzen (ähnlich einem Container)
______________________
Überschrift hat eine Zeile
______________________

______________________
Überschrift hat eine Zeile
und noch eine
______________________

______________________
Ich möchte das die Überschrift immer so Hoch ist wie der Text (Also nur der obere Kasten soll wachsen die Größe des unteren ergibt sich dadurch das ich sie durch ziehen einstelle)
Der Kasten soll nach oben wachsen und auch die Schrift soll immer nach oben verschoben werden.
Ich habe das bisher so gelöst das ich zwei Vierecke miteinander gruppiert habe. Ohne Gruppierung bekomme ich das hin aber so wie die beiden Vierecke gruppiert sind verhält sich das Kästchen Überschrift anders.
ich sehe im shapesheet das sich die Bezüge verändern aber irgendwie komme ich nicht dahinter wie ich es machen muss.
Mir ist zum Beispiel nicht klar wie ich die einzelnen Betsandteile einer Gruppe ansprechen kann. In diesem Fall vermute ich das wir 3 Elemente haben.
Das Shape der ersten Viereck, das Shape des zweiten Viereck und das Shape der Gruppe.
Es wäre toll wenn sie mir eine Visiodatei mit einem Beispiel schicken könnten. Ich habe leider ihre Unterlagen nicht zu Hause, da steht die Lösung eventuell drinn.
Danke Ihnen
Gruß AT.
Hallo Herr T.,
Gruppe ist klasse; mit einer Gruppe kommt man gut hin. Ich nehme zwei Rechtecke; gruppiere sie. Jedes der drei Shapes hat einen Namen (Develloper / Shape-Name). Bei mir: Sheet.5, Sheet.6 und Sheet.7. Bitte nicht ändern! (Kleiner bug im Shapesheet)
Ich habe den Pin des oberen Shapes auf Mitte / oben gesetzt, den Pin des unteren auf Mitte / unten (über View / Task-Pane / Size & Position)
Ich schreibe Text in das obere Shape. Die Height im Shapesheet lege ich fest: =GUARD(TEXTHEIGHT(TheText,1)) – also: Höhe so groß wie die Texthöhe.
Außerdem achte ich darauf, dass PinY auf: =Sheet.7!Height*1 liegt, also Oberkante an Oberkante.
Beim unteren Kästchen stelle ich im Shapesheet ein:
Height: =Sheet.7!Height-Sheet.5!Height
Ebenso: Unterkante an Unterkante, also: PinY: = =Sheet.7!Height*0
Okay. Ganz dolle ist es noch nicht – am Verhältnis Höhe und Breite und Schriftgröße müsste man noch arbeiten.
Hilft Ihnen das?
schöne Grüße
Rene Martin
Hallo Herr Martin,
danke für die Antwort. Ich hatte mich mühsam rangetastet und es letzten ende hinbekommen.
Ein Frage:
Visio benennt die Shapes selbst numerisch. Shape.97 etc.
Kann ich den Shapes Sinnvolle Namen geben. Beispiel:
Shape.Oberertext
Shape.Unterertext
und so weiter?
Das würde es einfacher machen wenn man darauf referenziert
Danke und Gruß
Hallo Herr T,

wenn Sie Visio programmieren, dann bemerken Sie, dass Visio innerhalb einer Datei jedem Shape eine eindeutige ID zuweist. Das ist sinnvoll. Die wird im Shapesheet nicht verwendet. Steht aber auch im Dialog Shape-Name
Darüber hinaus bekommt jedes Shape einen Namen. Den kann man ändern, um leichter darauf zugreifen zu können. Nur: Im Shapesheet wird leider der von Visio vergebene Name verlangt (ich weiß, ich weiß, ist blöde … ich habe mich auch schon geärgert).
Aber das Konzept ist wichtig, weil: Wenn Sie das Shape in eine Schablone ziehen und nun wieder aufs Zeichenblatt zurück, bekommt das Shape (oder die Shapes bei einer Gruppe) neue Namen, d.h. Nummern zugewiesen. Sonst würde es zu Konflikten kommen mit
=Sheet.77!Height

Wenn Sie dem Teilchen in der Schablone einen Namen geben (also aus Master.1 bspw. „Server“ machen), dann heißt das erste Shape, das aus der Schablone gezogen wird: Server, das zweite Server.2, das dritte Server.3, …

Und: Wenn Sie das Fenster Size & Position öffnen, dann sehen Sie dort in der Titelzeile den Namen.

Wie auch bei einigen anderen Fragen von Ihrer Seite: Schulterzucken meinerseits; hat sich jemand so ausgedacht; man hätte es auch anders machen können. Immerhin, wenn Sie einen falschen Namen im Shapesheet tippen (bspw.: =Sheet.104!) dann hilft Intellisense nicht mehr weiter. So erkenne ich, ob der Name korrekt ist.

schöne Grüße

Rene Martintroester

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert