2

In Writer möchte ich nach einem Text suchen und wenn er gefunden wurde, positionieren Sie die Ansicht an den Anfang der Ansicht/des Fensters.Open/Libre Office-Makro, um die Ansicht zur Auswahl zu blättern

Verwendung des folgenden Codes,

document = ThisComponent.CurrentController.Frame 
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 

dim args1(1) as new com.sun.star.beans.PropertyValue 
args1(0).Name = "SearchItem.SearchString" 
args1(0).Value = ":" 

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1()) 

wechselt die Ansicht und zeigt die Auswahl aber es ist nicht an einem bestimmten Ort. Ich möchte, dass es oben im Fenster/Ansicht angezeigt wird.

Ich habe auch an anderer Stelle die Verwendung von ThisComponent.currentController.getViewData() und restoreViewData() gefunden. Also habe ich experimentiert und festgestellt, wie man die zurückgegebenen Daten ändert, um einen vertikalen Bildlauf zu erhalten, aber nichts passiert. Zum Beispiel ...

vd = ThisComponent.currentController.getViewData() 
vdParts = Split(vd, ";") 
vdParts(6) = CLng(vdParts(6)) + 1000 
vd = join(vdParts, ";") 
ThisComponent.currentController.restoreViewData(vd) 

Irgendwelche Vorschläge?

PS: Ich bin mit Version 5.0.5.2 unter Windows 7 x64

Antwort

1

Tabellen haben View Panes, die manipuliert werden kann, aber es sieht nicht wie es eine ähnliche Schnittstelle in Writer ist.

Verwenden Sie stattdessen die View Cursor, um ein oder zwei Seiten nach unten zu gehen und dann zum Ort des Suchergebnisses zurückzukehren.

Verwenden Sie den Dispatcher auch nicht für die Suche. Verwenden Sie stattdessen die API, wie in Abschnitt 7.14 von Andrew Pitonyak's macro document beschrieben.

+0

Thx Jim. Ich habe versucht, einen Ansichts-Cursor, aber in meinen Experimenten der Ansichts-Cursor änderte nicht die Ansicht, um die Auswahl anzuzeigen. Ich erinnerte mich dann an die Dispatcher Beispiele und dachte, es zu versuchen, und ich war angenehm überrascht, dass es tat. – Vic

+0

Nachdem ich den vorherigen Kommentar gepostet und Ihren Vorschlag von anderen gesehen habe, habe ich festgestellt, dass die Ansicht nicht aktualisiert wird, wenn ein Makro vom Editor aus ausgeführt wird. Ich musste eine Tastenkombination zuweisen und das Makro so ausführen, dass es die Ansicht änderte ... ein Designfehler ??? – Vic

+0

Normalerweise führe ich keine Makros aus dem Editor aus, da dies den Editor zur aktuellen Komponente macht (was nützlich sein kann, aber nicht das, was wir in diesem Fall wollen). Stattdessen gehe ich normalerweise zu "Extras -> Makros -> Makro ausführen" mit Tastaturkürzeln. Um es zu ermöglichen, vom Editor aus zu starten, anstatt ThisComponent zu verwenden, verwenden Sie die Komponente des Textdokuments, beginnend mit [desktop.getComponents()] (https://www.openoffice.org/api/docs/common/ref /com/sun/star/frame/XDesktop.html#getComponents). –