Не совсем точный перевод наименования действия, которое может быть отменено через ThisComponent.UndoManager (com.sun.star.document.XUndoManagerListener):
en: "Clear Outline"
ru: "Очистить разметку"
В меню это соответствует команде: "Убрать структуру".
Если это имеет какое-то значение, конечно...
Remove Outline
Убрать структуру
Clear outline
Очистить структуру
Хотя, если это одно и то же действие, стоило бы и английское название менять...
Поменять надо соотв. русское наименование заголовка действия. По-английски всё верно везде, как и по-русски в меню.
Вот "Очистить разметку" следует заменить на "Убрать структуру".
Ну, да: Remove/Clear, не заметил... :)
@bormant, может и вряд ли кто с этим столкнётся, но я решал конкретную задачу, а именно изменение имени листа пользователем.
Так, в Excel, помимо имени листа и его номера, которые легко можно изменить, существует возможность обращения по "кодовому имени", т.е. напрямую (например, лист <shData> с именем "Лист2"). Насколько я знаю, в LO такой возможности нет. Значит, пользователь может переставить листы, изменить имя, как ему угодно. В этом случае надо перехватить событие действие "Rename Sheet"/"Переименовать лист", чтобы не нарушить работу программы.
Просто дополнительно проанализировал ряд других заголовков (titles) действий (с целью их перехвата и возможности некоторой реакции на них, когда это требуется).
Upd
Можно скрыть лист и не давать его показать, ведь здесь нет, в отличие от Excel, состояния листа "VeryHidden", когда отобразить лист можно только программными средствами.
Цитата: eeigor от 13 июня 2021, 12:36Насколько я знаю, в LO такой возможности нет.
Не совсем так. У листа документа Calc есть (неописанное?) свойство CodeName, которое не изменяется при переименовании листа (аналогично Excel).
@sokol92, не хочу создавать отдельную тему (эта, в принципе, обсуждена), но приведите здесь пример кода. На самом деле это важный момент
Есть подводные камни?
Sub testCodeName
Dim oDoc
oDoc=StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, Array()) ' новая книга Calc
With ODoc.Sheets(0)
.CodeName= "MyName"
.Name="Новое имя"
Msgbox .CodeName & " - " & .Name
End With
End Sub
LO 7.1.4.2
Спасибо. Нигде не встречал в примерах. Этим надо пользоваться. Правда, в Excel имя листу можно присвоить прямо в редакторе щелчком мыши по соотв. узлу дерева объектов.
И я не встречал в примерах.
Цитата: eeigor от 13 июня 2021, 17:21Excel имя листу можно присвоить прямо в редакторе
Зато не все знают, как изменить программным путем. :)
Да, это очень хорошо. Всё работает, как и предполагается. Этим надо пользоваться.
Это был маленький OFFTOPIС
Upd
Добавлю, что в Excel по кодовому имени можно обращаться непосредственно: это объектная ссылка.
Например: shName.Range("A1")
Здесь CodeName - это строка.
Поэтому пришлось реализовать простую функцию GetSheetByCodeName(), которая перебирает листы требуемой или активной (по умолчанию) электронной таблицы и возвращает ссылку на заданный лист по его кодовому имени. Это даёт больше свободы от действий пользователя: имена листов и их индексы (позиции) больше не имеют значения.
https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=72231&p=325120&hilit=CodeName#p325120
CodeName не задокументировано
Документы тоже могут переименовывать в ходе одного сеанса LO. Поэтому для временного хранения информации о документе можно использовать RuntimeUID (https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1document_1_1OfficeDocument.html#a8959688177fa85080566a227efc5e181).