Si possono creare due macro:
Con la prima (qui) creiamo un segnalibro nel punto in cui siamo arrivati, il segnalibro “qui”, e questa macro la assegnamo automaticamente al salvataggio di un documento.
Con la seconda (vai_qui) andiamo esattamente al punto in cui avevamo chiuso il documento, e questa macro la assegniamo alla apertura di un documento. Abbiamo dovuto duplicare le istruzioni, altrimenti, nei documenti lunghi il cursore andava sì nel pyunto dove c’è il segnalibro, ma il focus restava su un’altra porzione del documento. Invece così va tutto a posto.
1a macro
sub qui rem ---------------------------------------------------------------------- rem define variables dim document as object dim dispatcher as object rem ---------------------------------------------------------------------- rem get access to the document document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") rem ---------------------------------------------------------------------- dim args1(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "Bookmark" args1(0).Value = "qui" dispatcher.executeDispatch(document, ".uno:DeleteBookmark", "", 0, args1()) rem ---------------------------------------------------------------------- dim args2(0) as new com.sun.star.beans.PropertyValue args2(0).Name = "Bookmark" args2(0).Value = "qui" dispatcher.executeDispatch(document, ".uno:InsertBookmark", "", 0, args2()) end sub
2a macro
sub vai_qui If NOT ThisComponent.supportsService("com.sun.star.text.TextDocument" ) Then Exit Sub End If oBookmarks = ThisComponent.getBookmarks() If NOT oBookmarks.hasByName("qui") Then Exit Sub End If ViewCursor = ThisComponent.CurrentController.getviewCursor() Bookmark = ThisComponent.Bookmarks.getByName("qui").Anchor ViewCursor.gotorange(Bookmark, False) ViewCursor = ThisComponent.CurrentController.getviewCursor() Bookmark = ThisComponent.Bookmarks.getByName("qui").Anchor ViewCursor.gotorange(Bookmark, False) end sub