Page.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 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-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 auf 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, wird ein instance des Master-Objekts in der Dokumentschablone des Zielobjektdokuments erstellt, 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 Zeichenfolgen ) ist, wird eine instance des Master-Objekts mit 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 von der DropManyU-Methode zurückgegebene Integer-Wert 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, und dies löst eine Ausnahme aus, gibt aber trotzdem eine positive ganze Zahl zurück.
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 Microsoft 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 instance jedes master 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 in der Dokumentschablone mindestens ein master 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.