Calc: Как скрыть сетку активного листа без диспетчера?

Автор eeigor, 11 апреля 2021, 11:12

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

eeigor

Какой метод дублирует .uno:ToggleSheetGrid? Как узнать, отображаются ли линии сетки в данный момент?
Sub ToggleSheetGrid
Dim document As Object, dispatcher As Object

document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:ToggleSheetGrid", "", 0, Array())
End Sub


ThisComponent.CurrentController.ShowGrid = False  'скрывает сетку на всех листах (?)

Updated
Это выглядит устрашающе (ссылка)... 2011. Прошло 10 лет.
Кстати, в функции от @sokol92 (файл прикреплён), которая выводит на лист все методы диспетчера с параметрами, этого метода (ToggleSheetGrid) почему-то нет...

В этом есть какая-то непоследовательность...
Напр., этот метод затрагивает все листы:
>>> ThisComponent.CurrentController.ShowGrid = True
А этот только активный лист:
>>> ThisComponent.CurrentController.freezeAtPosition(0, 1)
А объект один и то же! Баг, что ли?.. Неужели для такой задачки нужно отдельное расширение?
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

В формате .ods в файле settings.xml тег с именем (атрибутом имени) "Showgrid" формируется для каждого листа отдельно. Соответствующее свойство контроллера документа тоже, по идее, должно работать с активным листом, а меняет отображение сетки сразу всех листов. Я склонен рассматривать это как баг.

Что касается упомянутого файла DispCommands.ods, то в него включены только "слоты методов" (method slots) в соответствии с описанием разработчика. "Слоты свойств" (property slots) не включались, так как мне неизвесты критерии для их отбора. Команда ToggleSheetGrid относится к слоту свойств.
Владимир.

eeigor

Похоже, баг с 10-летним стажем. Файл settings.xml посмотрел. Может, напишу позднее...
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

#4
Баг или не баг?
Цитата: sokol92 от 11 апреля 2021, 14:21В формате .ods в файле settings.xml тег с именем (атрибутом имени) "Showgrid" формируется для каждого листа отдельно.

Меню "View/View Grid Lines" управляет не той сеткой, что на скриншотах ниже (или той, но отдельным образом). А ниже - это ThisComponent.CurrentController.ShowGrid.
В чём разница? Выходит, что баг был не по теме. Однако одинаковое название свойств "ShowGrid" сбивает с толку. И как в коде заменить команду диспетчера ".uno:ToggleSheetGrid", которое соответствует команде меню, а не свойству приложения, что выбирано на скриншоте 2 (и отображено на скриншоте 1, позиция 11)?

А вот и разница с путаницей в именах: ToggleSheetGrid и ShowGrid. И в файле settings.xml тоже ShowGrid, однако, но не то (а то, что управляется командой uno:ToggleSheetGrid).

Примечание. Команда меню и команда диспетчера управляют активным листом. Похожее свойство приложения управляет всеми листами и содержит дополнительный параметр "Show on colored cells", помимо Show/Hide.

Updated
Свойство приложения в файле конфигурации registrymodifications.xcu именуется GridLine и, похоже, оно задаётся в коде так: ThisComponent.CurrentController.ShowGrid. Могу ошибаться.
<.../Layout/Line"><prop oor:name="GridLine" oor:op="fuse"><value>true</value></prop></item>

<.../Layout/Line"><prop oor:name="GridOnColoredCells" oor:op="fuse"><value>false</value></prop></item>

Подытожим:
1. Команда меню <View/View Grid Lines> и диспетчера .uno:ToggleSheetGrid управляют свойством активного листа, а результат записывается в параметр ShowGrid в settings.xml электронной таблицы (в файл).
2. ThisComponent.CurrentController.ShowGrid и свойство приложения <View/Grid lines> управляют параметром GridLine в файле конфигурации registrymodifications.xcu и распространяются на все листы электронной таблицы. Так ли это?

Как получить ответ на вопрос, отображается ли сетка заданного листа в данный момент, не ясно... Я не знаю, как обратиться к вложенному файлу settings.xml
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

Цитата: eeigor от  5 июня 2021, 13:53Как получить ответ на вопрос, отображается ли сетка заданного листа в данный момент, не ясно...
В моих записях тоже стоит вопросительный знак.
Владимир.

eeigor

Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

20 лет месяцев спустя.  :)
Поскольку в меню (Menu / View / View Grid Lines) видно, установлен ли для листа признак показа сетки, то можно попробовать спросить у меню (надеюсь, без тяжелой артиллерии в виде AccessibleContext). У меня такие универсальные сервисные функции не написаны, потребуется некоторое время (если нет готовых решений).
Владимир.

eeigor

Готовых нет. А с этим контекстом разбирались только Вы один: я так до конца его и не понял.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community