Master.DropManyU-Methode (Visio)

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 Master-Objekt darstellt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
ObjectsToInstance() Erforderlich Variant Ein Array, das die Master oder sonstigen Objekte, aus denen die Shapes erstellt werden, anhand ihrer universellen Namen identifiziert.
xyArray() Erforderlich Double Ein Array abwechselnder x - und _y_values, das die Positionen für die neuen Shapes angibt.
IDArray() Erforderlich Integer Ausgabeparameter. Ein Array, das die IDs der erstellten Shapes zurückgibt.

Rückgabewert

Ganze Zahl

HinwBemerkungeneise

Die Verwendung der DropManyU-Methode ähnelt der Verwendung der Drop-Methode des Page-, Master- oder Shape-Objekts. Sie können jedoch die DropManyU-Methode verwenden, um viele neue Shape-Objekte gleichzeitig zu erstellen, 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 Diskussion 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 identifizieren Objekte, aus denen Sie neue Shape-Objekte erstellen möchten. Ein Eintrag bezieht sich häufig auf ein Master-Objekt der Microsoft Visio-Anwendung. Es kann sich auch auf ein Shape-Objekt der Visio-Anwendung, ein Selection-Objekt oder sogar ein Objekt aus einer anderen Anwendung beziehen. Der Anwendung ist es egal, was die unteren und oberen Arraygrenzen der ObjectsToInstance() -Einträge sind. Rufen Sie diese vlb bzw. vub auf.

  • Wenn ObjectsToInstance(i) die ganze Zahl j ist, ist eine Instanz des Master-Objekts in der Dokumentschablone des Zielobjektdokuments, dessen 1-basierter Index j ist. Die Zelle EventDrop im Abschnitt Ereignisse der neuen Form wird nicht ausgelöst. Verwenden Sie stattdessen die Drop-Methode , wenn die EventDrop-Zelle ausgelöst werden soll.

  • Wenn ObjectsToInstance(i) die Zeichenfolge s (oder ein Verweis auf die Zeichenfolge s) ist, wird eine Instanz 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 Zelle EventDrop im Abschnitt Ereignisse der neuen Form 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) erneut instanziert 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 xyArray() -Parameter sollte ein eindimensionales Array von 2 m Doubles mit unterer Grenze xylb und oberem xyub sein, wobei m>= n ist. Die Werte im Array geben der DropManyU-Methode an, 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 i 'th-Ding, das instanziert wurde, dasselbe wie die n 'th-Sache instanziert. Um also m>= 1 Instanzen desselben Objekts zu erstellen, können Sie ein ObjectsToInstance()-Array mit einem Eintrag und einem xyArray()-Array m-Eintrag ü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 integer-Wert, der von der DropManyU-Methode zurückgegeben wird, ist die Anzahl der xy-Einträge in xyArray(), die die DropManyU-Methode erfolgreich verarbeitet hat. Wenn alle Einträge erfolgreich verarbeitet wurden, wird m zurückgegeben. Wenn einige Einträge erfolgreich verarbeitet werden, bevor ein Fehler auftritt, werden die erstellten Shape-Objekte nicht gelöscht. Dadurch wird eine Ausnahme ausgelöst, aber dennoch eine positive ganze Zahl zurückgegeben.

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 (Nothing) 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 zugeordnet wird, und der Besitz 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 Visual Basic für Applikationen ausgeführt.)

Wenn IDArray() nicht NULL (nicht Nothing) 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 hat genau ein Shape-Objekt erzeugt. Wenn der i 'th xyArray() -Eintrag mehrere Shape-Objekte erzeugt hat, wird -1 im Eintrag zurückgegeben. Alle Einträge i , intReturned<= i<m , geben -1 zurück.

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 die Verwendung der DropManyU-Methode . Es löscht eine Instanz jedes Masters in der Dokumentschablone des Document-Objekts des Makros auf Page1 des Document-Objekts des Makros. 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.