Добавляемое выделение

Автор ssj, 25 сентября 2014, 15:05

0 Пользователи и 1 гость просматривают эту тему.

ssj

Как в Writer через Basic включить режим добавляемого выделения?

JohnSUN

А если не так лаконично? Третий вопрос задаёшь и, скорее всего, опять ответа не получишь...
Переведи, изложи другими словами... Что пытаешься сделать, почему не получается и т.д.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

ssj

Глобальная задача: выделить программно несколько кусков текста (см. вложение 1.png).

Самое близкое что я cмог найти это:
1) Вручную включить режим "добавляемое выделение" (в строке статуса есть кнопка, см. вложение 2.png)
2) Программно выделить нужные фрагменты:
ThisComponent.CurrentController.getViewCursor().goRight(3, True)
ThisComponent.CurrentController.getViewCursor().goRight(3, False)
ThisComponent.CurrentController.getViewCursor().goRight(3, True)


Собственно вопрос такой: как программно включить режим "добавляемое выделение"?
Хотя, меня устроят и другие способы решение глобальной задачи.

JohnSUN

Ну, это что-то вроде
createUnoService("com.sun.star.frame.DispatchHelper")._
executeDispatch(ThisComponent.CurrentController.Frame, _
".uno:SetMultiSelection", "", 0, Array())

Про "глобальную задачу" можешь подробнее? Выделить текст и остановиться, чтобы пользователь увидел подкрашенные фрагменты? Или программно их на что-то изменить? Скопипастить?..
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

ssj

Работает, спасибо. Делаю на C++ расширение, которое ищет текст хитрым образом (типа "поиск подобных", только иначе). Кроме обычных "найти вперед" и "найти назад" решил предусмотреть возможность "найти все".

P.S. Где можно посмотреть полный список команд для executeDispatch?

JohnSUN

#5
Где-то здесь или здесь
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

ssj

К сожалению плохо получается. ThisComponent.CurrentController.select и ThisComponent.CurrentController.getViewCursor().gotoRange переключают режим обратно в "обычное выделение", а на одном ThisComponent.CurrentController.getViewCursor().go* трудно сделать.

Есть еще идет? Сам офис-то поддерживает такую возможность...

JohnSUN

Задумка какая? После окончания "поиска" показать все найденные варианты выделением? Так, может быть, стоит попробовать альтернативы?
Поиск по форумам показал, что решения этой задачи через .Select() народ не нашёл до сих пор.
Здесь было несколько более-менее приемлемых вариантов.
Есть еще одна идейка: помечать отобранные фрагменты текста каким-нибудь редко используемым эффектом, например, "тень". Когда просмотр документа закончен, натравить глобальный поиск на этот атрибут. Содрать всех найденных через getCurrentSelection(). И для каждого выделенного сбросить этот временный атрибут...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне