Como faço para capturar um texto PowerPoint VSTO evento alterado?
-
08-07-2019 - |
Pergunta
Estou desenvolvendo um PowerPoint C # VSTO add-in. Eu quero ser capaz de capturar um evento de texto alterado sempre que o texto Título de um slide é alterado.
Como posso anexar um manipulador de eventos personalizado que dispara sempre que o texto do título é alterado?
Solução
Duas coisas: 1) Este é em VBA, mas deve ser facilmente transportável para C # e VSTO, 2) O "text mudou" coisa é um pouco complicado. Eu posso levá-lo tão longe como "você está em uma caixa de Título" - o resto é mais trival. Tem a ver com encontrar estado original contra quaisquer alterações. Provavelmente factível, eu só não fiz isso.
Para ligar uma mudança de seleção em PPT VBA, você vai precisar de uma classe e um módulo. Na classe, coloque isso:
Public WithEvents PPTEvent As Application
Private Sub PPTEvent_WindowSelectionChange(ByVal Sel As Selection)
With Sel
If .Type = ppSelectionText Then
Dim sh As Shape: Set sh = .ShapeRange(1)
If sh.Type = msoPlaceholder Then
originalText = sh.TextFrame.Text
Dim placeHolderType As Integer
placeHolderType = sh.PlaceholderFormat.Type
If placeHolderType = ppPlaceholderTitle Then
MsgBox "this is a title placeholder"
End If
End If
End If
End With
End Sub
Nome da classe "clsPPTEvents". Então, em qualquer módulo, coloque o seguinte:
Public newPPTEvents As New clsPPTEvents
Sub StartEvents()
Set newPPTEvents.PPTEvent = Application
End Sub
Sub EndEvents()
Set newPPTEvents.PPTEvent = Nothing
Set newPPTEvents = Nothing
End Sub
Pressione F5 sobre os StartEvents e que permitirá o gancho. Pressione F5 nas EndEvents para desativá-lo.