Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erstellt ein oder mehrere neue Shape-Objekte auf einem Zeichenblatt, in einem Master oder in einer Gruppe. Die Methode gibt ein Array von IDs der erzeugten Shape-Objekte zurück.
Syntax
Ausdruck.
DropManyU( _ObjectsToInstance()_ , _xyArray()_ , _IDArray()_ )
Ausdruck Eine Variable, die ein Page-Objekt darstellt.
Parameter
| Name | Erforderlich/Optional | Datentyp | Beschreibung |
|---|---|---|---|
| ObjectsToInstance() | Erforderlich | Variant | Identifiziert die Master oder sonstigen Objekte, aus denen die Shapes erstellt werden, anhand ihrer universellen Namen. |
| xyArray() | Erforderlich | Double | Ein Array von wechselnden X- und Y-Werten, mit denen die Positionen der neuen Shapes angegeben werden. |
| IDArray() | Erforderlich | Integer | Ausgabeparameter. Ein Array, das die IDs der erstellten Shapes zurückgibt. |
Rückgabewert
Ganze Zahl
Hinweise
Die Verwendung der DropManyU-Methodeentspricht der Verwendung der Drop-Methode des Page-, Master- oder Shape-Objekts, mit dem Unterschied, dass Sie mit der DropManyU-Methode viele neue Shape-Objekte gleichzeitig erstellen können, anstatt eines pro Methodenaufruf. Die DropManyU-Methode erstellt neue Shape-Objekte auf dem Zeichenblatt, im master oder in der Gruppenform, auf die sie angewendet wird (diese Form wird in der folgenden Erläuterung als "Zielobjekt" bezeichnet).
Sie können den abzulegenden Master identifizieren, indem Sie an die DropManyU-Methode ein Master-Objekt oder den Index oder den Namen des Masters übergeben. Wenn Sie ein Objekt übergeben, ist DropManyU nicht nur auf das Ablegen eines Masters von der Dokumentschablone des Dokuments beschränkt, auf das es abgelegt wird. Bei dem Objekt kann es sich um einen Master aus einem anderen Dokument oder aus einem anderen Objekttyp handeln.
Ganze Zahlen (Masterindizes) oder Zeichenfolgen (Masternamen) können schneller als Objekte an DropManyU übergeben werden, aber ganze Zahlen oder Zeichenfolgen können nur Master in der Dokumentschablone des Dokuments bestimmen, auf dem sie abgelegt werden. Also muss das Programm die fraglichen Master zunächst in die Dokumentschablone aufnehmen, sofern sie dort noch nicht vorhanden sind.
ObjectsToInstance() sollte ein eindimensionales Array von n>= 1 Varianten sein. Seine Einträge kennzeichnen Objekte, aus denen Sie neue Formobjekte erstellen möchten. Ein Eintrag verweist häufig auf ein Microsoft Visio-Anwendungsmasterobjekt . Es kann sich auch auf ein Shape-Objekt einer Visio-Anwendung, ein Auswahlobjekt oder sogar auf ein Objekt aus einer anderen Anwendung beziehen. Der Anwendung ist es egal, welche unteren und oberen Array-Grenzen der ObjectsToInstance()- Einträge bestehen. Nennen Sie diese vlb bzw. vub .
Wenn ObjectsToInstance(i) die ganze Zahl j ist, wird eine Instance des Master-Objekts in der Dokumentschablone des Zielobjektdokuments erstellt, dessen 1-basierter Index j ist. Die EventDrop-Zelle im Abschnitt "Ereignisse" des neuen Shapes wird nicht ausgelöst. Verwenden Sie stattdessen die Drop-Methode , wenn die EventDrop-Zelle ausgelöst werden soll.
Wenn ObjectsToInstance(i) der String s (oder ein Verweis auf den String s ) ist, wird eine Instance des Master-Objekts mit dem Namen s in der Dokumentschablone des Zielobjektdokuments erstellt; s kann entweder der UniqueID- oder der NameU-Eigenschaft des Master-Objekts entsprechen. Die EventDrop-Zelle im Abschnitt "Ereignisse" des neuen Shapes wird nicht ausgelöst. Verwenden Sie stattdessen die Drop-Methode , wenn die EventDrop-Zelle ausgelöst werden soll.
Für vlb<i<= vub , wenn ObjectsToInstance(i) leer ist (Nothing oder nicht initialisiert in Microsoft Visual Basic), bewirkt der Eintrag i , dass ObjectsToInstance(j) wieder instanziiert wird, wobei j der größte Wert <i ist, sodass ObjectsToInstance(j) nicht leer ist. Wenn Sie n-Instanzen von einem Element erstellen möchten, muss nur ObjectsToInstance(vlb) angegeben werden.
Der Parameter xyArray() sollte ein eindimensionales Array von 2 m Doubles mit unterer Grenze xylb und oberer Grenze xyub sein, wobei m>= n ist. Die Werte im Array teilen der DropManyU-Methode mit, wo die von ihr erzeugten Shape-Objekte positioniert werden sollen. ObjectsToInstance()( vlb + ( i - 1)) wird bei ( xy [( i - 1)2 + xylb ], xy [(i - 1)2 + xylb + 1]) für 1 <= i<= n gelöscht.
Beachten Sie, dass m>n zulässig ist. Für n<i<= m ist das instanziierte i 'te Ding dasselbe wie das n'te instanziierte Ding. Um also m>= 1 Instanzen derselben Sache zu erstellen, können Sie ein ObjectsToInstance()- Array mit einem Eintrag und ein m-EintragxyArray()- Array übergeben.
Wenn es sich bei der instanziierten Entität um einen Master handelt, wird der Drehbezugspunkt des neuen Shape-Objekts an der angegebenen xy-Position platziert. Andernfalls wird der Mittelpunkt des Shape-Objekts an der angegebenen xy-Position platziert.
Der von der DropManyU-Methode zurückgegebene Ganzzahlwert ist die Anzahl der XY-Einträge in xyArray , die von der DropManyU-Methode erfolgreich verarbeitet wurden. Wenn alle Einträge erfolgreich verarbeitet wurden, wird m zurückgegeben. Wenn einige Einträge erfolgreich verarbeitet werden, bevor ein Fehler auftritt, werden die erzeugten Shape-Objekte nicht gelöscht, was eine Ausnahme auslöst, aber dennoch eine positive ganze Zahl zurückgibt.
Wenn alle mxy Einträge richtig verarbeitet werden, entspricht die Anzahl neuer Shape-Objekte, die von der DropManyU-Methode erzeugt wurden, normalerweise m. In Ausnahmefällen (z. B. wenn ein Selection-Objekt instanziiert wird) können mehr als m Shape-Objekte erzeugt werden. Der Aufrufer kann die Anzahl der erzeugten Shape-Objekte ermitteln, indem die Anzahl von Shapes im Zielobjekt vor und nach der Ausführung der DropManyU-Methode verglichen werden. Der Aufrufer kann die neuen Shape-Objekte daran erkennen, dass sie in der Shapes-Auflistung des Zielobjekts die höchsten Indizes aufweisen.
Wenn die DropManyU-Methode Null (0) zurückgibt, gibt IDArray() null (Nichts) zurück. Andernfalls gibt es ein eindimensionales Array mit m ganzen Zahlen zurück, die von 0 bis m - 1 indiziert sind. IDArray() ist ein out-Parameter, der von der DropManyU-Methode zugewiesen wird, und das Eigentum wird an das Programm übergeben, das die DropManyU-Methode aufgerufen hat. Der Aufrufer sollte zum Schluss die SafeArrayDestroy-Prozedur für das zurückgegebene Array ausführen. (Dies wird von Microsoft Visual Basic und Microsoft Visual Basic für Applikationen ausgeführt.)
Wenn IDArray() ungleich Null (nicht Nichts) zurückgibt, gibt IDArray( i - 1), 1 <= i<= intReturned die ID des Shape-Objekts zurück , das vom i 'th xyArray()- Eintrag erzeugt wurde, vorausgesetzt , der i 'th xyArray()- Eintrag erzeugte genau ein Shape-Objekt . Wenn der i 'th xyArray()- Eintrag mehrere Shape-Objekte erzeugt hat, wird -1 im Eintrag zurückgegeben. Alle Einträge i , intReturned<= i<m , return -1.
Hinweis
Ab Microsoft Visio 2000 können Sie sowohl lokale als auch universelle Namen verwenden, um auf Shapes, Master-Shapes, Dokumente, Zeichenblätter, Zeilen, Add-Ons, Zellen, Hyperlinks, Formatvorlagen, Schriftarten, Master-Shape-Verknüpfungen, Benutzeroberflächenobjekte und Layer von Visio zu verweisen. Wenn ein Benutzer z. B. ein Shape verwendet, gibt er einen lokalen Namen an. Ab Microsoft Office Visio 2003 werden in der ShapeSheet-Kalkulationstabelle nur universelle Namen in Zellformeln und Werten angezeigt. (In früheren Versionen wurden universelle Namen in der Benutzeroberfläche nicht angezeigt.)
Als Entwickler können Sie universelle Namen in einem Programm verwenden, falls Sie einen Namen nicht jedes Mal ändern möchten, wenn eine Lösung lokalisiert wird. Verwenden Sie die DropMany-Methode, um mehr als ein Shape abzulegen, wenn Sie für die Identifikation von Shapes lokale Namen verwenden. Verwenden Sie die DropManyU-Methode, um mehr als ein Shape abzulegen, wenn Sie für die Identifikation von Shapes universelle Namen verwenden.
Beispiel
Das folgende Beispiel zeigt, wie die DropManyU-Methode verwendet wird. Es legt eine Instance von jedem master in der Dokumentschablone des Document-Objekts des Makros auf Seite1 des Document-Objekts des Makros ab. Stellen Sie vor dem Ausführen dieses Makros sicher, dass mindestens ein Master in der Dokumentschablone vorhanden ist.
Public Sub DropManyU_Example()
On Error GoTo HandleError
Dim vsoMasters As Visio.Masters
Dim intMasterCount As Integer
Set vsoMasters = ThisDocument.Masters
intMasterCount = vsoMasters.Count
ReDim varObjectsToInstance(1 To intMasterCount) As Variant
ReDim adblXYArray(1 To (intMasterCount * 2)) As Double
Dim intCounter As Integer
For intCounter = 1 To intMasterCount
'Pass universal name of object to drop to DropManyU.
varObjectsToInstance(intCounter) = vsoMasters.ItemU(intCounter).NameU
'Set x components of where to drop to 2,4,6,2,4,6,2,4,6,...
adblXYArray (intCounter * 2 - 1) = (((intCounter - 1) Mod 3) + 1) * 2
'Set y components to 2,2,2,4,4,4,6,6,6,...
adblXYArray (intCounter * 2) = Int((intCounter + 2) / 3) * 2
Next intCounter
Dim aintIDArray() As Integer
Dim intProcessed As Integer
intProcessed = ThisDocument.Pages(1).DropManyU(varObjectsToInstance, _
adblXYArray, aintIDArray)
Debug.Print intProcessed
For intCounter = LBound(aintIDArray) To UBound(aintIDArray)
Debug.Print intCounter; aintIDArray(intCounter)
Next intCounter
Exit Sub
HandleError:
MsgBox "Error"
Exit Sub
End Sub
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.