Come posso catturare un evento di testo modificato VSTO di PowerPoint?
-
08-07-2019 - |
Domanda
Sto sviluppando un componente aggiuntivo VSTO C # per PowerPoint. Voglio essere in grado di catturare un evento modificato di testo ogni volta che viene modificato il testo del titolo di una diapositiva.
Come posso allegare un gestore eventi personalizzato che verrà attivato ogni volta che il testo del titolo viene modificato?
Soluzione
Due cose: 1) questo è in VBA, ma dovrebbe essere facilmente trasportabile su C # e VSTO, 2) Il testo "cambiato" " la cosa è un po 'complicata. Posso arrivare fino a quando ti trovi in ??una casella del titolo " - il resto è più trival. Ha a che fare con la ricerca dello stato originale rispetto a qualsiasi modifica. Probabilmente fattibile, non l'ho fatto.
Per agganciare una modifica di selezione in PPT VBA, avrai bisogno di una classe e un modulo. Nella classe, metti questo:
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
Assegna un nome alla classe " clsPPTEvents " ;. Quindi, in qualsiasi modulo, inserisci quanto segue:
Public newPPTEvents As New clsPPTEvents
Sub StartEvents()
Set newPPTEvents.PPTEvent = Application
End Sub
Sub EndEvents()
Set newPPTEvents.PPTEvent = Nothing
Set newPPTEvents = Nothing
End Sub
Premi F5 su StartEvents e questo abiliterà l'hook. Premi F5 su EndEvents per disabilitarlo.