Método IVisEventProc.VisEventProc (Visio)
Função de membro privado do IVisEventProc que lida com notificações de evento passadas para ele pelo método EventList.AddAdvise .
Sintaxe
expressão. VisEventProc (nEventCode, pSourceObj, nEventID, nEventSeqNum, pSubjectObj, vMoreInfo)
Expressão Uma variável que representa um objeto IVisEventProc .
Parâmetros
Nome | Obrigatório/Opcional | Tipo de dados | Descrição |
---|---|---|---|
nEventCode | Obrigatório | Integer | O evento ou evento que ocorreu. |
pSourceObj | Obrigatório | Object | O objeto cuja coleção EventList contém o objeto Event que enviou a notificação. |
nEventID | Obrigatório | Long | O identificador exclusivo do objeto Event na coleção EventList. |
nEventSeqNum | Obrigatório | Long | A posição ordinal do evento em relação à sequência de eventos que ocorreram na instância de chamada do aplicativo. |
pSubjectObj | Obrigatório | Object | O assunto do evento, que é o objeto para o qual o evento ocorreu. Consulte Comentários para obter exemplos. |
vMoreInfo | Obrigatório | Variantes | Informações adicionais sobre o assunto do evento. Consulte Comentários para obter mais informações. |
Valor de retorno
Variant
Comentários
Para lidar com notificações de evento, crie um módulo de classe que implemente a interface IVisEventProc e crie uma instância dessa classe para passar como um argumento para o método AddAdvise da coleção EventList . Use o método AddAdvise para criar objetos Event que enviam as notificações.
O parâmetro nEventCode identifica o evento ou eventos específicos que ocorreram. O argumento EventCode do método AddAdvise é passado para VisEventProc como nEventCode. Dentro do seu procedimento, você pode usar qualquer técnica de ramificação para determinar qual evento ocorreu e manipulá-lo. O exemplo que acompanha este tópico usa uma estrutura de decisão Select Case.
Ao contrário da propriedade Index da coleção EventList, nEventID não se altera conforme objetos Event são adicionados ou excluídos da coleção.
De dentro do VisEventProc, você pode usar o código a seguir para obter o objeto Event que enviou a notificação.
pSourceObj. EventList.ItemFromID(nEventID )
A conexão entre o objeto de origem pSourceObj e o objeto Event existe até que um dos seguintes eventos ocorre:
O programa exclui o objeto Event.
O programa libera a última referência ao objeto de origem. (A coleção EventList e os objetos Event mantêm uma referência ao seu objeto de origem.)
A instância de aplicativo do Microsoft Visio é encerrada.
O primeiro evento que ocorre em uma instância do Visio possui nEventSeqNum = 1, o segundo evento = 2, e assim por diante. Em alguns casos, você pode usar o número de sequência com a propriedade EventInfo para obter mais informações sobre o evento.
O parâmetro pSubjectObj para um evento ShapeAdded é um objeto Shape que representa a forma que acabou de ser adicionada, enquanto o assunto de um evento BeforeSelectionDelete é um objeto Selection no qual as formas que estão prestes a ser excluídas são selecionadas.
Para muitos eventos, vMoreInfo é uma sequência de caracteres semelhante à linha de comando pela qual o aplicativo passa os complementos que executa. Se a notificação não incluir informações adicionais, esse parâmetro é definido como Nothing. Para obter detalhes sobre parâmetros de notificação para um evento específico, consulte o tópico de evento específico nesta referência.
A partir do Visio 2000, o VisEventProc é definido como uma função que retorna um valor. No entanto, o Visio analisa apenas valores retornados de chamadas para VisEventProc que são passadas um código de evento de consulta. Objetos de coletor que fornecem VisEventProc por meio do IDispatch não exigem nenhuma alteração. Para modificar manipuladores de eventos existentes, para que manipulem eventos de consulta, altere o procedimento Sub para um procedimento Function e retorne o valor apropriado. (Para obter detalhes sobre eventos de consulta, consulte esta referência para tópicos de evento precedidos de Query.)
Se nEventCode identificar um evento de consulta (eventos prefixados com Consulta), retornará True do VisEventProc para cancelar o evento e retornará False para permitir que ele aconteça. O valor é arbitrário para outros eventos. Se você não retornar um valor explícito, o Microsoft Visual Basic for Applications (VBA) retornará uma Variante vazia, que o Visio interpreta como False.
Exemplo
Este exemplo mostra como criar um módulo de classe que implementa IVisEventProc para manipular eventos acionados por um objeto de origem no Visio, por exemplo, o objeto Document. O módulo consiste na função VisEventProc, que usa um bloco Select Case para verificar três eventos: DocumentSaved, PageAdded e ShapesDeleted. Outros eventos se encaixam no caso padrão (Case Else). Cada bloco Case constrói uma sequência de caracteres (strMessage) que contém o nome e o código do evento que disparou. Finalmente, a função exibe a sequência de caracteres na janela Immediate.
Copie esse código de exemplo em um novo módulo de classe no VBA ou no Visual Basic, nomeando o módulo clsEventSink. Em seguida, você pode usar um módulo de coletor de eventos para criar uma instância da classe clsEventSink e objetos Event que enviam notificações de demissões de evento para a instância de classe. Para saber como criar um módulo evento-coletor, consulte o exemplo para o método AddAdvise.
Implements Visio.IVisEventProc
'Declare visEvtAdd as a 2-byte value
'to avoid a run-time overflow error
Private Const visEvtAdd% = &H8000
Private Function IVisEventProc_VisEventProc( _
ByVal nEventCode As Integer, _
ByVal pSourceObj As Object, _
ByVal nEventID As Long, _
ByVal nEventSeqNum As Long, _
ByVal pSubjectObj As Object, _
ByVal vMoreInfo As Variant) As Variant
Dim strMessage As String
'Find out which event fired
Select Case nEventCode
Case visEvtCodeDocSave
strMessage = "DocumentSaved (" & nEventCode & ")"
Case (visEvtPage + visEvtAdd)
strMessage = "PageAdded (" & nEventCode & ")"
Case visEvtCodeShapeDelete
strMessage = "ShapesDeleted(" & nEventCode & ")"
Case Else
strMessage = "Other (" & nEventCode & ")"
End Select
'Display the event name and the event code
Debug.Print strMessage
End Function
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.