Master.DropMany-Methode (Visio)Master.DropMany Method (Visio)

Erstellt einen oder mehrere neue Shape -Objekte in einem Master-Shape.Creates one or more new Shape objects in a master. Es gibt ein Array der IDs die erzeugten Shape -Objekte.It returns an array of the IDs of the Shape objects it produces.

SyntaxSyntax

expression.expression. DropMany( _ObjectsToInstance()_ , _xyArray()_ , _IDArray()_ )

Ausdruck Eine Variable, die ein Master -Objekt darstellt.expression A variable that represents a Master object.

ParameterParameters

NameName Erforderlich/OptionalRequired/Optional DatentypData type BeschreibungDescription
ObjectsToInstance()-ArrayObjectsToInstance() ErforderlichRequired VariantVariant Ein Array, das die Master oder sonstigen Objekte identifiziert, aus denen die Shapes erstellt werden.An array that identifies masters or other objects from which to make shapes.
xyArray()xyArray() ErforderlichRequired DoubleDouble Ein Array von wechselnden X- und Y-Werten, mit denen die Positionen der neuen Shapes angegeben werden.An array of alternating x and y values specifying the positions for the new shapes.
IDArray()IDArray() ErforderlichRequired IntegerInteger Out-Parameter.Out parameter. Ein Array, das die IDs der erstellten Shapes zurückgibt.An array that returns the IDs of the created shapes.

RückgabewertReturn value

Ganze ZahlInteger

HinweiseRemarks

Verwendung der DropMany -Methode ähnelt dem Verwenden der Seite Master-Shape , oder Shape -Objekt Drop -Methode, es sei denn, Sie können die DropMany -Methode verwenden, um viele neue Shape -Objekte in einem Schritt statt eine pro-Methode erstellen Anruf.Using the DropMany method is like using the Page , Master , or Shape object's Drop method, except you can use the DropMany method to create many new Shape objects at once, rather than one per method call. Die DropMany -Methode erstellt neue Shape -Objekte auf der Seite in das Master-Shape oder das Gruppen-Shape auf die angewendet (dieses Shape ist mit dem Namen "Ziel" in der folgenden Erläuterung).The DropMany method creates new Shape objects on the page, in the master, or in the group shape to which it is applied (this shape is called the "target object" in the following discussion).

Sie können die Master-Shape, indem Sie der DropMany -Methode übergeben, Master -Objekts oder des Masters Index oder Name des Masters drop identifizieren.You can identify which master to drop by passing the DropMany method a Master object or the master's index or the master's name. Wenn Sie ein Objekt übergeben, ist nicht DropMany ablegen beschränkt, nur ein Master-Shape von der Dokumentschablone des Dokuments auf das abgelegt wird.When you pass an object, DropMany isn't constrained to just dropping a master from the document stencil of the document onto which it is being dropped. Das Objekt kann ein Master-Shape aus einem anderen Dokument oder einen anderen Typ des Objekts sein.The object can be a master from another document or another type of object.

Übergeben von Ganzzahlen (master Indizes) oder Zeichenfolgen (master Namen) an DropMany schneller als übergeben von Objekten ist, aber ganze Zahlen oder Zeichenfolgen können nur Master in der Dokumentschablone des Dokuments auf dem abgelegt werden bestimmen.Passing integers (master indices) or strings (master names) to DropMany is faster than passing objects, but integers or strings can identify only masters in the document stencil of the document onto which it is being dropped. Daher wird Ihr Programm aus irgendeinem Grund die Master-Shapes betreffenden in der Dokumentschablone in erster Linie abgerufen wurde, vorausgesetzt, dass sie es noch nicht vorhanden sind.Hence your program has to somehow get the masters in question into the document stencil in the first place, provided they weren't there already.

ObjectsToInstance()-Array sollte ein eindimensionales Array von n > = 1 Variant.ObjectsToInstance() should be a one-dimensional array of n >= 1 variants. Die Einträge identifizieren Sie Objekte aus denen Sie neue Shape -Objekte erstellen möchten.Its entries identify objects from which you want to make new Shape objects. Ein Eintrag bezieht sich häufig auf Master-Shape -Objekt einer Microsoft Visio-Anwendung.An entry often refers to a Microsoft Visio application Master object. Es kann sich auch um ein Shape -Objekt von Visio-Anwendung, Selection -Objekt oder ein Objekt aus einer anderen Anwendung handeln.It might also refer to a Visio application Shape object, Selection object, or even an object from another application. Die Anwendung ist es unerheblich was die oberen und unteren Arraygrenzen der ObjectsToInstance()-Array Einträge sind.The application doesn't care what the lower and upper array bounds of the ObjectsToInstance() entries are. Rufen Sie diese Vlb bzw. Vub .Call these vlb and vub , respectively.

  • ObjectsToInstance(i) ist einen Verweis auf ein OLE-Objekt, das eine IDataObject -Schnittstelle (in Microsoft Visual Basic for Applications, einen Verweis auf eine Auswahl, Shape, Master-, Handbuch oder OLE-Objekt) bereitstellt, das Objekt, auf das verwiesen wird platziert.If ObjectsToInstance(i) is a reference to an OLE object that provides an IDataObject interface (in Microsoft Visual Basic for Applications, a reference to a selection, shape, master, guide, or OLE object), the object it is referencing is instanced. Dies ist im Wesentlichen äquivalent zu aufrufende Drop((ObjectsToInstance(i),x,y) .This is essentially equivalent to calling Drop(ObjectsToInstance(i),x,y) .

  • Wenn ObjectsToInstance(i) die ganze Zahl j ist, erfolgt eine Instanz des Master -Objekts in der Dokumentschablone des Zielobjekts Dokument, dessen 1-basierter Indexwert j ist.If ObjectsToInstance(i) is the integer j , an instance of the Master object in the document stencil of the target object's document whose 1-based index is j is made. Die Zelle EventDrop im Abschnitt Ereignisse des neuen Shapes wird nicht ausgelöst.The EventDrop cell in the Events section of the new shape is not triggered. Verwenden Sie die Drop -Methode, wenn sich die Zelle EventDrop ausgelöst werden soll.Use the Drop method instead if you want the EventDrop cell to be triggered.

  • Wenn ObjectsToInstance(i) die Zeichenfolge s (oder einen Verweis auf die Zeichenfolge s ) ist, wird eine Instanz des Master -Objekts mit dem Namen s in der Dokumentschablone des Dokuments des Zielobjekts wird. s können entweder die Master-Shape Namen oder der UniqueID -Eigenschaft des Objekts entspricht.If ObjectsToInstance(i) is the string s (or a reference to the string s ), an instance of the Master object with name s in the document stencil of the target object's document is made; s can equal either the Master object's UniqueID or Name property. Die Zelle EventDrop im Abschnitt Ereignisse des neuen Shapes wird nicht ausgelöst.The EventDrop cell in the Events section of the new shape is not triggered. Verwenden Sie die Drop -Methode, wenn sich die Zelle EventDrop ausgelöst werden soll.Use the Drop method instead if you want the EventDrop cell to be triggered.

  • Für Vlb < i <= Vub , wenn ObjectsToInstance(i) leer ist (Nothing oder nicht initialisierte in Microsoft Visual Basic), Eintrag i verursacht ObjectsToInstance(j) zu erneut Dabei ist j den größten Wert < i , sodass ObjectsToInstance(j) nicht leer ist.For vlb < i <= vub , if ObjectsToInstance(i) is empty (Nothing or uninitialized in Microsoft Visual Basic), entry i will cause ObjectsToInstance(j) to be instanced again, where j is the largest value < i such that ObjectsToInstance(j) isn't empty. Wenn Sie n Instanzen des Objekts dasselbe machen möchten, muss nur ObjectsToInstance(vlb) bereitgestellt werden.If you want to make n instances of the same thing, only ObjectsToInstance(vlb) needs to be provided.

Der Parameter xyArray() soll ein eindimensionales Array von 2 m Werten mit untere Grenze Xylb und obere Grenze xyub sein , wobei m >= n .The xyArray() parameter should be a one-dimensional array of 2 m doubles with lower bound xylb and upper bound xyub , where m >= n . Die Werte im Array bestimmen, wo die erzeugten Shape -Objekte platziert für die DropMany -Methode.The values in the array tell the DropMany method where to position the Shape objects it produces. ObjectsToInstance ( Vlb + (_ I_ - 1)) wird auf dem gelöscht ( Xy [( i - 1) 2 + Xylb ], Xy [(i-1) 2 + Xylb + 1]) für 1 < = i <= n .ObjectsToInstance( vlb + ( _ i_ - 1)) is dropped at ( xy [( i - 1)2 + xylb ], xy [(i - 1)2 + xylb + 1]) for 1 <= i <= n .

Beachten Sie m > n ist zulässig.Note that m > n is allowed. Für n < i <= m , i ' instanziierte ist dasselbe wie die n ' instanziierte.For n < i <= m , the i 'th thing instanced is the same thing as the n 'th thing instanced. So tätigen m > = 1 Instanzen von dasselbe, können Sie ein ObjectsToInstance()-Array mit einem Eintrag und ein m Eintrag xyArray() Array übergeben.Thus to make m >= 1 instances of the same thing, you can pass an ObjectsToInstance() array with one entry and an m entry xyArray() array.

Wenn die instanziierten Entität um ein Master-Shape ist, wird die Pin über das neue Shape -Objekt an die angegebenen Xy positioniert.If the entity being instanced is a master, the pin of the new Shape object is positioned at the given xy . Andernfalls ist die Mitte des Shape -Objekte in der angegebenen Xy positioniert.Otherwise, the center of the Shape objects is positioned at the given xy .

Der von der DropMany -Methode zurückgegebene Wert ist die Anzahl von Xy -Einträgen in xyArray() , die die DropMany -Methode erfolgreich verarbeitet.The value returned by the DropMany method is the number of xy entries in xyArray() that the DropMany method successfully processed. Wenn alle Einträge erfolgreich verarbeitet wurden, wird m zurückgegeben.If all entries were processed successfully, m is returned. Wenn einige Einträge vor einem Fehler erfolgreich verarbeitet wurden, die erzeugten Shape -Objekte werden nicht gelöscht, und Dies löst eine Ausnahme aus, aber weiterhin einen positiven Wert zurückgibt.If some entries are successfully processed prior to an error occurring, the produced Shape objects are not deleted and this raises an exception but still returns a positive value.

Wenn alle m Xy Einträge richtig verarbeitet werden, entspricht die Anzahl der neuen Shape -Objekte, die von der DropMany -Methode erzeugt, in der Regel m .Presuming all m xy entries are processed correctly, the number of new Shape objects produced by the DropMany method is usually equal to m . In seltenen Fällen (beispielsweise wenn ein Selection -Objekt instanziiert wird) können mehr als mShape -Objekte erstellt werden.In rare cases (for example, if a Selection object gets instanced), more than mShape objects may be produced. Der Aufrufer kann die Anzahl der erzeugten Shape -Objekte ermitteln, durch die Anzahl von Shapes im Zielobjekt vor und nach der Ausführung der DropMany -Methode verglichen.The caller can determine the number of produced Shape objects by comparing the number of shapes in the target object before and after the DropMany method is executed. Der Anrufer kann bestätigen, dass das neue Shape -Objekte mit der höchsten Indizes in das Zielobjekt Shapes -Auflistung sind.The caller can assert the new Shape objects are those with the highest indices in the target object's Shapes collection.

Wenn die DropMany -Methode NULL (0) zurückgibt, gibt IDArray() null (Nothing) zurück.If the DropMany method returns zero (0), IDArray() returns null (Nothing). Andernfalls gibt es ein eindimensionales Array mit m ganzen Zahlen von 0 bis m - 1 indiziert.Otherwise, it returns a one-dimensional array of m integers indexed from 0 to m - 1. IDArray() ist ein Ausgabeparameter, der von der DropMany -Methode zugeordnet wird und dessen Besitz übergeben wird, um das Programm, das die DropMany -Methode aufgerufen.IDArray() is an out parameter that is allocated by the DropMany method and ownership is passed to the program that called the DropMany method. Der Aufrufer sollte zum Schluss die SafeArrayDestroy -Prozedur für das zurückgegebene Array ausführen.The caller should eventually perform the SafeArrayDestroy procedure on the returned array. (Microsoft Visual Basic und Visual Basic für Applikationen übernehmen dies für Sie.)(Microsoft Visual Basic and Visual Basic for Applications take care of this for you.)

Wenn IDArray() ungleich null (nicht Nothing) IDArray( i - 1), 1 < zurückgibt = i <= IntReturned , gibt die ID des Shape -Objekts, die mit der i ' ten _xyArray() _erzeugt wurde, sofern die i ' xyArray() Eintrag genau ein Shape -Objekt erstellt.If IDArray() returns non- null (not Nothing), IDArray( i - 1), 1 <= i <= intReturned , returns the ID of the Shape object produced by the i 'th xyArray() entry, provided the i 'th xyArray() entry produced exactly one Shape object. Wenn die i ' xyArray() Eintrag erzeugt mehrere Shape -Objekte, die in den Eintrag-1 zurückgegeben.If the i 'th xyArray() entry produced multiple Shape objects, -1 is returned in the entry. Alle Einträge i , IntReturned <= i < m ,-1 zurück.All entries i , intReturned <= i < m , return -1.

Hinweis Ab Microsoft Visio 2000, können Sie lokale und universelle Namen verwenden, verweisen auf Visio-Shapes, Masters, Dokumenten, Seiten, Zeilen, Add-ons, Zellen, Hyperlinks, Formatvorlagen, Schriftarten, Master-Shape-Verknüpfungen, UI-Objekte und Ebenen.Note Beginning with Microsoft Visio 2000, you can use both local and universal names to refer to Visio shapes, masters, documents, pages, rows, add-ons, cells, hyperlinks, styles, fonts, master shortcuts, UI objects, and layers. Wenn ein Benutzer ein Shape verwendet, beispielsweise wird der Benutzer einen lokalen Name angegeben.When a user names a shape, for example, the user is specifying a local name. Ab Microsoft Office Visio 2003, zeigt die ShapeSheet-Kalkulationstabelle nur universelle Namen in Zellformeln und Werten.Beginning with Microsoft Office Visio 2003, the ShapeSheet spreadsheet displays only universal names in cell formulas and values. (In früheren Versionen wurden universelle Namen in der Benutzeroberfläche nicht angezeigt.)(In prior versions, universal names were not visible in the user interface.)

Als Entwickler können Sie in einem Programm universelle Namen verwenden, wenn Sie keine Lösung lokalisiert wird jedes Mal einen Namen ändern möchten.As a developer, you can use universal names in a program when you don't want to change a name each time a solution is localized. Verwenden Sie die DropMany -Methode, um mehr als eine Form zu löschen, wenn Sie lokale Namen zum Identifizieren der Shapes verwenden.Use the DropMany method to drop more than one shape when you are using local names to identify the shapes. Verwenden Sie die DropManyU -Methode, um mehr als eine Form zu löschen, wenn Sie zum Identifizieren der Shapes universelle Namen verwenden.Use the DropManyU method to drop more than one shape when you are using universal names to identify the shapes.

BeispielExample

Im folgenden Beispiel wird veranschaulicht, wie die DropMany -Methode verwendet.The following example shows how to use the DropMany method. Damit wird eine Instanz von jedem Master in der Dokumentschablone des Document -Objekt für das Makro auf Page1 das Makro Document -Objekts.It drops one instance of every master in the document stencil of the macro's Document object onto Page1 of the macro's Document object. Stellen Sie vor dem Ausführen dieses Makros sicher, dass mindestens ein Master-Shape in der Schablone des Dokuments vorhanden ist.Before running this macro, make sure there is at least one master in the document stencil.

 
Public Sub DropMany_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 name of object to drop to DropMany. 
 varObjectsToInstance(intCounter) = vsoMasters.Item(intCounter).Name 
 
 '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).DropMany(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