Método Master.DropMany (Visio)

Cria um ou mais novos objetos Shape em um mestre. Retorna uma matriz de identificações dos objetos Shape que produz.

Sintaxe

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

Expressão Uma variável que representa um objeto Mestre .

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
ObjectsToInstance() Obrigatório Variantes Uma matriz que identifica mestres ou outros objetos a partir dos quais criar formas.
xyArray() Obrigatório Double Uma matriz de valores x e y alternados especificando as posições das novas formas.
IDArray() Obrigatório Integer Parâmetro externo. Uma matriz que retorna as identificações das formas criadas.

Valor de retorno

Inteiro

Comentários

Usar o método DropMany é como usar o método Drop do objeto Page, Master ou Shape, exceto por você poder usar o método DropMany para criar vários novos objetos Shape de uma vez, em vez de um por chamada de método. O método DropMany cria novos objetos Shape na página, no mestre ou na forma de grupo na qual é aplicado (essa forma é chamada "objeto de destino" na discussão a seguir).

Você pode identificar qual mestre soltar passando ao método DropMany um objeto Master, o índice ou o nome do mestre. Ao passar um objeto, DropMany não é restringido a apenas soltar um mestre do estêncil do documento sobre o qual está sendo solto. O objeto pode ser um mestre de outro documento ou outro tipo de objeto.

Passar números inteiros (índices de mestre) ou sequências de caracteres (nomes de mestres) para DropMany é mais rápido que passar objetos, mas os números inteiros ou as sequências de caracteres podem identificar apenas mestres no estêncil do documento sobre o qual está sendo solto. Assim, seu programa precisa primeiro colocar de alguma maneira os mestres em questão no estêncil do documento, desde que já não estejam lá.

ObjectsToInstance() deve ser uma matriz unidimensional de n>= 1 variantes. Suas entradas identificam objetos dos quais você deseja fazer novos objetos Shape. Frequentemente uma entrada se refere a um objeto Master do aplicativo Microsoft Visio. Ela também pode referir-se a um objeto Shape ou Selection do aplicativo Visio ou até mesmo a um objeto de outro aplicativo. Não importa para o aplicativo quais sejam os limites de matriz inferior e superior das entradas ObjectsToInstance(). Chame estes vlb e vub , respectivamente.

  • Se ObjectsToInstance(i) for uma referência a um objeto OLE que fornece uma interface IDataObject (no Microsoft Visual Basic for Applications, uma referência a uma seleção, forma, mestre, guia ou objeto OLE), o objeto que está referenciando será instanciado. Isso é essencialmente equivalente a chamar Drop(ObjectsToInstance(i),x,y).

  • Se ObjectsToInstance(i) for o inteiro j , será feita uma instância do objeto Mestre no estêncil do documento do objeto de destino cujo índice baseado em 1 é j . A célula EventDrop na seção Eventos da nova forma não é disparada. Use o método Drop no lugar, se desejar que a célula EventDrop seja disparada.

  • Se ObjectsToInstance(i) for a cadeia de caracteres (ou uma referência à cadeia de caracteres), será feita uma instância do objeto Mestrecom nome no estêncil do documento do objeto de destino; s pode ser igual à propriedade UniqueID ou Name do objeto Mestre. A célula EventDrop na seção Eventos da nova forma não é disparada. Use o método Drop no lugar, se desejar que a célula EventDrop seja disparada.

  • Para vlb<i<= vub , se ObjectsToInstance(i) estiver vazio (Nada ou não diferenciado no Microsoft Visual Basic), a entrada fará com que ObjectsToInstance(j) seja instância novamente, em que j é o maior valor <i de modo que ObjectsToInstance(j) não está vazio. Se desejar criar n instâncias da mesma coisa, apenas ObjectsToInstance(vlb) precisará ser fornecido.

O parâmetro xyArray() deve ser uma matriz unidimensional de 2 m duplos com xylb de limite inferior e xyub de limite superior , em que m>= n. Os valores na matriz informam o método DropMany onde posicionar os objetos Shape que ele produz. ObjectsToInstance( vlb + ( i - 1)) é descartado em ( xy [ i - 1)2 + xylb ], xy [(i - 1)2 + xylb + 1]) para 1 <= i<= n.

Observe que m>n é permitido. Para n<i<= m , a i 'th thing instanced é a mesma coisa que a coisa n 'th instância. Assim, para tornar m>= 1 instâncias da mesma coisa, você pode passar uma matriz ObjectsToInstance() com uma entrada e uma matriz xyArray() de entrada m.

Se a entidade instanciada for um mestre, o pino do novo objeto Shape será posicionado no xy determinado. Caso contrário, o centro dos objetos Shape será posicionado no xy determinado.

O valor retornado pelo método DropMany é o número de entradas xy em xyArray() que o método DropMany processou com êxito. Se todas as entradas foram processadas com êxito, m será retornado. Se algumas entradas forem processadas com êxito antes de ocorrer um erro, os objetos Shape produzidos não serão excluídos e isso gerará uma exceção, mas ainda assim retornará um valor positivo.

Presumindo que todas as m entradas xy sejam processadas corretamente, o número de novos objetos Shape produzidos pelo método DropMany será geralmente igual a m. Em casos raros (por exemplo, se um objeto Selection for instanciado), mais de m objetos Shape podem ser produzidos. O chamador pode determinar o número de objetos Shape produzidos comparando o número de forma no objeto de destino antes de depois de o método DropMany ser executado. O chamador pode assumir que os novos objetos Shape sejam aqueles com os maiores índices na coleção Shapes do objeto de destino.

Se o método DropMany retornar zero (0), IDArray() retornará null (Nothing). Caso contrário, ele retornará uma matriz unidimensional de m números inteiros indexados de 0 a m - 1. IDArray() é um parâmetro externo alocado pelo método DropMany e a propriedade é passada para o programa que chamou o método DropMany. Por fim, o chamador deve executar o procedimento SafeArrayDestroy na matriz retornada. (O Microsoft Visual Basic e o Visual Basic for Applications cuidam disso para você.)

Se IDArray() retornar não nulo (não Nothing), IDArray( i - 1), 1 <= i<= intReturned , retornará a ID do objeto Shape produzido pela entrada i 'th xyArray(), desde que a entrada i 'th xyArray() tenha produzido exatamente um objeto Shape . Se a entrada i 'th xyArray() produziu vários objetos Shape , -1 será retornado na entrada. Todas as entradas i , intReturned<= i<m , return -1.

Observação

A partir do Microsoft Visio 2000, você pode usar nomes locais e universais para se referir a formas, mestres, documentos, páginas, linhas, complementos, células, hiperlinks, estilos, fontes, atalhos mestre, objetos UI e camadas do Visio. Quando um usuário nomeia uma forma, por exemplo, o usuário está especificando um nome local. A partir do Microsoft Office Visio 2003, a planilha ShapeSheet exibe apenas nomes universais em fórmulas de células e valores. (Em versões anteriores, os nomes universais não eram visíveis na interface do usuário.).

Como desenvolvedor, você poderá usar nomes universais em um programa quando não quiser alterar um nome a cada vez que uma solução for localizada. Use o método DropMany para soltar mais de uma forma ao usar nomes locais para identificar as formas. Use o método DropManyU para soltar mais de uma forma ao usar nomes universais para identificar as formas.

Exemplo

O exemplo a seguir mostra como usar o método DropMany. Ele solta uma instância de cada mestre no estêncil do documento do objeto Document da macro sobre a Página1 do objeto Document da macro. Antes de executar essa macro, certifique-se de que haja pelo menos um mestre no estêncil do documento.

 
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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.