ISt es das, wofür man diese Listener braucht?
Ja, genau. Ein Listener wäre jetzt nötig um dieses Makro zu starten. Allerdings müßte der Listener zuerst prüfen, ob da wirklich ein Link ist, weil sonst jedesmal der Text markiert würde egal was da steht. Außerdem müßte ganz zu Anfang geprüft werden ob es überhaupt Text und nicht ein Bild ist. Für diese Prüfung reicht es aber aus z.B. den Fehler abzufangen, der entsteht wenn Du z.B. Zeiger.gotoStartofWord ausführst, was ja bei einer Grafik nicht geht.
Ein Listener wäre im Prinzip so (aus Pitoyak):
Code: Alles auswählen
Global vSelChangeListener
Global vSelChangeBroadCast
Sub StartListeningToSelChangeEvents
Dim sPrefix$
Dim sService$
sPrefix = "sel_change_"
sService = "com.sun.star.view.XSelectionChangeListener"
REM to register for a selection change, you must register with the
REM current controller
vSelChangeBroadCast = ThisComponent.getCurrentController
'create a listener to intercept the selection change events
vSelChangeListener = CreateUnoListener(sPrefix, sService)
' register the listener to the document controller
vSelChangeBroadCast.addSelectionChangeListener(vSelChangeListener)
End Sub
Sub StopListeningToSelChangeEvents
' removes the listener
vSelChangeBroadCast.removeSelectionChangeListener(vSelChangeListener)
End Sub
Sub sel_change_selectionChanged(vEvent)
Dim vCurrentSelection As Object
Print "Number of selected areas = " &_
vCurrentSelection.getSelection().getCount()
End Sub
Zuerst das Dokument laden und dann Sub StartListeningToSelChangeEvents starten. Danach kannst Du klicken in den Text oder auf andere Objekte. Immer wenn sich die Selection ändert kommt hier im Beispiel eine "Meldungsbox" (Print), an dieser Stelle muß nun der Code der den Link auswertet ergänzt werden.
Wenn Du die Auswertung beenden willst, starte StopListeningToSelChangeEvents und alles ist wieder "normal".
Und nun frage ich mich, wie ich einen TextCursor hinkriege, der an der Stelle Text selektiert, an der ich auf den Link klicke.
Indem Du für den virtuellen Cursor:
den sichtbaren verwendest:
Übrigens: ich bin nicht Thomas.
Gruß
Stephan