Shapes innerhalb eines Shapes selektieren und löschen

23/08/2008 - 13:26 von Roger Schlegel | Report spam
Hallo NG
Erstmals Danke an alle die hier Posten. Ist wirklich eine grosse hilfe.

Hier mein kleines Problem:

Ich habe ein Shape mit dem Namen "Legenden-Rahmen"
In diesem Shape lege ich eine Legen an die aus weiteren einzelenen Shapes
bestehen.
Frage:
Wie kann nun per VBA die Legenden-Shapes selektieren die sich innerhalb
meines Rahmens befinden.
Diese Legen erstelle ich dynamisch. Wenn ich nun eine Änderung an der
Zeichnung mache, muss ich zuerst immer alle Legenden-Shapes von Hand
löschen.

Hier mein Ansatz:
sub LegendeLöschen()

For Each Shape in Shape("Legenden-Rahmen")
add.selection
Next
selection.delete
end sub

VISIO 2007 SP1 auf WIN XP SP2

Danke im Voraus und gruss an alle
Steff
 

Lesen sie die antworten

#1 Senaj Lelic [DE MVP Visio]
24/08/2008 - 16:06 | Warnen spam
Hi Steff,

was Du brauchst sind die so genannten spatial Relations. Du kannst fragen
welche Shapes von einem anderen Shape umschlossen werden
(shape.SpatialNeighbors bzw. Spatialrelations). als relation type brauchst
du "viscontaining" das gibt dir die Shapes zurück die das Shape "beinhaltet"
als die innerhalb des Shapes liegen.
Ansonsten kuck mal in der ONline-Hilfe (Entwicklerhilfe) da sind die
Spatialrelations (genauer. Shape Proximity Methods) beschrieben.

Ansatz:
1. Selection der beinhalteten Shapes erzeugen
2. Selection löschen

:-)

Senaj Lelic
DE MVP Visio

"Roger Schlegel" schrieb im Newsbeitrag
news:
Hallo NG
Erstmals Danke an alle die hier Posten. Ist wirklich eine grosse hilfe.

Hier mein kleines Problem:

Ich habe ein Shape mit dem Namen "Legenden-Rahmen"
In diesem Shape lege ich eine Legen an die aus weiteren einzelenen Shapes
bestehen.
Frage:
Wie kann nun per VBA die Legenden-Shapes selektieren die sich innerhalb
meines Rahmens befinden.
Diese Legen erstelle ich dynamisch. Wenn ich nun eine Änderung an der
Zeichnung mache, muss ich zuerst immer alle Legenden-Shapes von Hand
löschen.

Hier mein Ansatz:
sub LegendeLöschen()

For Each Shape in Shape("Legenden-Rahmen")
add.selection
Next
selection.delete
end sub

VISIO 2007 SP1 auf WIN XP SP2

Danke im Voraus und gruss an alle
Steff

Ähnliche fragen