Перейти на найденный текст

Автор vitalukalo, 24 мая 2021, 15:08

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

vitalukalo

И чтобы не плодить тем задам еще вопрос. Если можно.
Стандартный поиск не переходит на найденный текст (только подсвечивает его). Можно как-то перейти на найденый текст (спозиционировать по центру экрана). Найти вроде можно.


Sub MyFind

Dim Doc As Object
Dim Page As Object
Dim SearchDesc As Object
Dim I As Integer
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
SearchDesc = Page.createSearchDescriptor
SearchDesc.SearchString="490"

Found = Page.findFirst(SearchDesc)
ThisComponent.CurrentController.Select(Found) ' оно не работает правда
End Sub

Просто документ большой (схема района около 1000 подстанций и найти на нем проблематично что-то)

mikekaganski

Sub MyFind

Dim Doc As Object, dispatcher As Object, docFrame As Object
Dim Page As Object
Dim SearchDesc As Object
Dim I As Integer, zoom As Integer
Doc = ThisComponent
Page = Doc.drawPages(0)
SearchDesc = Page.createSearchDescriptor
SearchDesc.SearchString="490"

Found = Page.findFirst(SearchDesc)
Doc.CurrentController.Select(Found.Text)
zoom = Doc.CurrentController.ZoomValue
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
docFrame = Doc.CurrentController.Frame
dispatcher.executeDispatch(docFrame, ".uno:ZoomObjects", "", 0, Array())
Doc.CurrentController.ZoomValue = zoom
End Sub


Не смешивайте ThisComponent и StarDesktop.CurrentComponent (для Basic первый предпочтительнее). Старайтесь получить значение текущего компонента один раз вначале, и потом уже пользоваться им (в процессе исполнения макроса текущий компонент может меняться).
С уважением,
Михаил Каганский

vitalukalo

Спасибо.

Doc.CurrentController.Select(Found.Text)

Объектная переменная говорит не установлена...


mikekaganski

Цитата: vitalukalo от 25 мая 2021, 11:52

Doc.CurrentController.Select(Found.Text)

Объектная переменная говорит не установлена...

Ну так выделено может быть что угодно. Я пробовал с простым прямоугольником с текстом. Вам надо в отладчике посмотреть, какие свойства найденного текста указывают на родительский объект.
С уважением,
Михаил Каганский

vitalukalo

 :-\И правда. Там нет 490.... Спасибо большое. Я бы неделю на это потратил.