2

В Writer я хотел бы найти текст и при обнаружении позиции в верхней части окна просмотра/окна.Открыть/Libre Office макрос для прокрутки в соответствии с выбором

Используя следующий код,

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()) 

изменяется вид и показывает выбор, но это не в любом определенном месте. Я хочу, чтобы это было в верхней части окна/вида.

Я также нашел в другом месте использование ThisComponent.currentController.getViewData() и restoreViewData(). Поэтому я экспериментировал и определял, как изменить возвращаемые данные, чтобы получить вертикальный свиток, но ничего не происходит. Например ...

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

Любые предложения?

PS: Я бегу версии 5.0.5.2 на Windows 7 x64

ответ

1

Электронные таблицы имеют View Panes, что можно манипулировать, но это не выглядит как есть подобный интерфейс в Writer.

Вместо этого используйте View Cursor, чтобы спуститься на одну или две страницы, а затем вернитесь к месту поиска.

Кроме того, не используйте диспетчер для поиска. Вместо этого используйте API, как в разделе 7.14 от Andrew Pitonyak's macro document.

+0

Thx Jim. Я попробовал курсор, но в моих экспериментах курсор обзора не изменил вид, чтобы отобразить выделение. Затем я вспомнил примеры диспетчера и подумал попробовать, и я был приятно удивлен, что это произошло. – Vic

+0

После публикации предыдущего комментария и просмотра вашего предложения Джима, сделанного другими, я понял, что представление не обновляется, когда макрос запускается из редактора. Мне пришлось назначить ярлык клавиатуры и запустить макрос таким образом, чтобы он мог изменить вид ... ошибка дизайна? – Vic

+0

Я обычно не запускаю макросы из редактора, потому что это делает редактор текущим компонентом (который может быть полезным, но не тем, что мы хотим в этом случае). Вместо этого я обычно перехожу в «Инструменты -> Макросы -> Запустить макрос» с помощью сочетаний клавиш. Чтобы можно было запустить из редактора вместо использования этого компонента, используйте компонент текстового документа, начиная с [desktop.getComponents()] (https://www.openoffice.org/api/docs/common/ref /com/sun/star/frame/XDesktop.html#getComponents). –

Смежные вопросы