Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

12 Апрель 2021, 18:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Добавляемое выделение  (Прочитано 4063 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ssj
Участник
**
Offline Offline

Сообщений: 6


« Стартовое сообщение: 25 Сентябрь 2014, 14:05 »

Как в Writer через Basic включить режим добавляемого выделения?
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 25 Сентябрь 2014, 14:16 »

А если не так лаконично? Третий вопрос задаёшь и, скорее всего, опять ответа не получишь...
Переведи, изложи другими словами... Что пытаешься сделать, почему не получается и т.д.
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
ssj
Участник
**
Offline Offline

Сообщений: 6


« Ответ #2: 25 Сентябрь 2014, 14:38 »

Глобальная задача: выделить программно несколько кусков текста (см. вложение 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)

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


* 1.png (3.1 Кб, 254x93 - просмотрено 19 раз.)

* 2.png (3.91 Кб, 267x123 - просмотрено 18 раз.)
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #3: 25 Сентябрь 2014, 14:49 »

Ну, это что-то вроде
Код:
createUnoService("com.sun.star.frame.DispatchHelper")._
executeDispatch(ThisComponent.CurrentController.Frame, _
".uno:SetMultiSelection", "", 0, Array())
Про "глобальную задачу" можешь подробнее? Выделить текст и остановиться, чтобы пользователь увидел подкрашенные фрагменты? Или программно их на что-то изменить? Скопипастить?..
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
ssj
Участник
**
Offline Offline

Сообщений: 6


« Ответ #4: 25 Сентябрь 2014, 16:41 »

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

P.S. Где можно посмотреть полный список команд для executeDispatch?
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #5: 25 Сентябрь 2014, 17:12 »

Где-то здесь или здесь
« Последнее редактирование: 25 Сентябрь 2014, 17:25 от JohnSUN » Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
ssj
Участник
**
Offline Offline

Сообщений: 6


« Ответ #6: 26 Сентябрь 2014, 13:10 »

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

Есть еще идет? Сам офис-то поддерживает такую возможность...
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #7: 26 Сентябрь 2014, 15:49 »

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

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!