LO Writer Создать закладку на диапазон текста

Автор Massaraksh7, 13 сентября 2026, 05:18

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

Massaraksh7

Можно ли LO Writer Basic создать именованную закладку (bookmark) на диапазон текста? Если да, то как.

Massaraksh7

Идея заключается в поиске блоков текста типа { .... } и установкой закладок, с последующим заполнением значениями. Вот так не работает:
Sub Bmarks
dim oDoc as Object
dim oSearch as Object
Dim oResult As Object
Dim sContent As String
Dim oBookmarks as Object
Dim nCount As Long

oDoc = ThisComponent
oSearch = oDoc.createReplaceDescriptor()
oSearch.SearchString = "\{.*?\}"
oSearch.SearchCaseSensitive = False
oSearch.SearchWords = False
oSearch.SearchRegularExpression = True
oBookmarks = oDoc.getBookmarks()
oResult = oDoc.findFirst(oSearch)
 nCount = 0
 Do
  sContent = oResult.String
  oBookmarks.insertByName("bm" & CStr(nCount),oResult.Start)
  nCount = nCount + 1
  oBookmarks.insertByName("bm" & CStr(nCount),oResult.End)
  nCount = nCount + 1
  oResult = oDoc.findNext(oResult.End, oSearch)
 Loop While Not (oResult Is Nothing)

end sub

Ципихович Эндрю

Sub Bmarks
    Dim oDoc As Object
    Dim oSearch As Object
    Dim oFound As Object
    Dim oBookmark As Object
    Dim nCount As Long

    oDoc = ThisComponent
   
    ' Создаём дескриптор поиска
    oSearch = oDoc.createSearchDescriptor()
    oSearch.SearchString = "\{[^}]*\}"   ' Ищем блоки { ... }
    oSearch.SearchRegularExpression = True
    oSearch.SearchCaseSensitive = False
    oSearch.SearchWords = False

    oFound = oDoc.findFirst(oSearch)
    nCount = 0

    While Not IsNull(oFound)
        ' Создаём объект закладки
        oBookmark = oDoc.createInstance("com.sun.star.text.Bookmark")
        oBookmark.Name = "bm" & CStr(nCount)
       
        ' Вставляем закладку на найденный диапазон
        oDoc.Text.insertTextContent(oFound, oBookmark, True)
       
        nCount = nCount + 1
       
        ' Переходим к следующему совпадению
        oFound = oDoc.findNext(oFound, oSearch)
    Wend
End Sub

sokol92

В книге Питоньяка OOME_4_1.odt в разделе "14.11. Bookmarks" показано, как установить закладку на "Text range"
Владимир.

Massaraksh7

Цитата: sokol92 от 13 сентября 2026, 15:36В книге Питоньяка OOME_4_1.odt в разделе "14.11. Bookmarks" показано, как установить закладку на "Text range"
Да, спасибо, везде, вроде, посмотрел, а про книгу Питоньяка забыл.

Ципихович Эндрю

ответ на вопрос: можно ли ставить закладки [...] разного цвета, в данном случае красного?
уверен, что нельзя, но мало-ли..
это вопрос чисто как на площадке "Форум поддержки пользователей LibreOffice" спасибо

sokol92

Цитата: Ципихович Эндрю от 15 сентября 2026, 10:15можно ли ставить закладки [...] разного цвета, в данном случае красного?
Закладки используются в соответствии с названием - переход к нужному месту документа.
Говорить о цвете закладки имеет смысл в контексте панели "Навигатора". Такого механизма, насколько я знаю, нет (и нет в MS Word).
Владимир.