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

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

22 Январь 2022, 20:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 4 »   Вниз
  Печать  
Автор Тема: Счётчик нажатий мышки  (Прочитано 3141 раз)
0 Пользователей и 1 Гость смотрят эту тему.
eeigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 845



« Ответ #30: 7 Январь 2022, 16:44 »

Спасибо! Беру на заметку.
Записан

Ubuntu 18.04 LTS • LO 7.2.4.1 Community
Tigrik
Форумчанин
***
Offline Offline

Сообщений: 117


« Ответ #31: 7 Январь 2022, 17:29 »

sokol92, Большое спасибо - всё отлично работает.
Макрос поддерживает сервисы только Фигуры (Основные и Фигуры-символы) и ячейки. Честно говоря, у меня будут, в основном, мини-картинки.
Пришлось поискать сервис, который может обращаться с картинками. Правильно ли я нашёл, что это - "com.sun.star.drawing.GraphicObjectShape"?
Дополненный файл во вложении.

* ==Определение фигур в Calc2+картинка.ods (111.31 Кб - загружено 3 раз.)
Записан
Tigrik
Форумчанин
***
Offline Offline

Сообщений: 117


« Ответ #32: 7 Январь 2022, 17:34 »

Rami, ещё раз огромная благодарность Вам за помощь.
Но тогда не будет записывать результат в ячейку "A1". Это нужно или это побочный эффект?
Нет, это не очень важно, но более конкретно Ваш макрос я буду тестировать завтра - сил больше нет - всю ночь за компом.
Записан
Tigrik
Форумчанин
***
Offline Offline

Сообщений: 117


« Ответ #33: 7 Январь 2022, 17:51 »

Ваш макрос я буду тестировать завтра
Всё-таки не удержался - потестил чуть-чуть - отлично!
Спасибо.

Записан
sokol92
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 704


WWW
« Ответ #34: 7 Январь 2022, 17:55 »

всю ночь за компом
Все мы этим грешили. У меня в среднем уходило лет 10 на устранение последствий ночного творчества.   Улыбка
Записан

Владимир.
sokol92
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 704


WWW
« Ответ #35: 7 Январь 2022, 18:06 »

"com.sun.star.drawing.GraphicObjectShape"
Попробуйте (выспавшись!) sheet.Shape.

Код:
    ElseIf obj.supportsService("com.sun.star.sheet.Shape") Then  '
Записан

Владимир.
Tigrik
Форумчанин
***
Offline Offline

Сообщений: 117


« Ответ #36: 8 Январь 2022, 20:30 »

Попробуйте (выспавшись!) sheet.Shape.
Спасибо, sokol92 - ВСЁ (картинки и все виды фигур) определяются!

Записан
sokol92
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 704


WWW
« Ответ #37: 9 Январь 2022, 17:25 »

Это логично, поскольку именно к сервису sheet.Shape относится свойство anchor - объект (ячейка или лист), к которому "прикрепляется" фигура (Shape).
Записан

Владимир.
sokol92
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 704


WWW
« Ответ #38: 9 Январь 2022, 20:37 »

И еще один штрих в тему.

(Псевдо) свойство CurrentController для документа Calc довольно коварное, так как при переходе в режим предварительного просмотра печати документа и обратно этот объект создается заново. Соответственно, наш слушатель мыши, для которого CurrentController является вещателем (генерирует события), после возврата из режима предварительного просмотра, увы, перестанет реагировать на щелчки мыши (проверьте!).

Узнать, находится ли документ Calc в режиме предварительного просмотра печати можно с помощью конструкции

Код:
  If HasUnoInterfaces(ThisComponent.CurrentController, "com.sun.star.sheet.XSpreadsheetView") Then  ' обычный режим (не предварительный просмотр печати)

В прилагаемом документе учтено это соображение. При возврате из режима предварительного просмотра печати слушатель мыши регистрируется повторно. Обратите внимание на обработчик события OnViewCreated, которое генерируется при указанной смене режима просмотра.

* Oпределение фигур в Calc+.ods (113.98 Кб - загружено 2 раз.)
Записан

Владимир.
eeigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 845



« Ответ #39: 9 Январь 2022, 22:26 »

(Псевдо) свойство CurrentController для документа Calc довольно коварное, так как при переходе в режим предварительного просмотра печати документа и обратно этот объект создается заново.
Ну что ж, @sokol92, Вы нашли объяснение ошибки, которая поднималась в этом исследовании в 2008 году (ooBUGG: Stops after a print-preview). Респект.

Возможно, такой стиль именования будет более прозрачным:
    Sub Document_OnViewCreated()  'View created/Просмотр создан

А может, это действительно баг: слишком много возлагается на того, кто программирует слушателя.
Тот случай, когда форум становится носителем знаний, в поисках которых гуглить бесполезно...
« Последнее редактирование: 9 Январь 2022, 23:07 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.2.4.1 Community
Tigrik
Форумчанин
***
Offline Offline

Сообщений: 117


« Ответ #40: 10 Январь 2022, 00:17 »

Обратите внимание на обработчик события OnViewCreated, которое генерируется при указанной смене режима просмотра.
Всё работает просто замечательно.
Возможно, такой стиль именования будет более прозрачным:
    Sub Document_OnViewCreated()  'View created/Просмотр создан
Может быть нужно что-то ещё добавить или изменить, но такое название процедуры вызывает ошибку при входе в режим предварительного просмотра печати и при выходе из него (фото во вложении).


* Ошибка при исполнение макроса=2022-01-09_23-49-23.png (132.1 Кб, 1360x741 - просмотрено 1 раз.)
Записан
eeigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 845



« Ответ #41: 10 Январь 2022, 01:36 »

Правильно! Ответьте на вопрос: как и откуда осуществляется вызов этой процедуры? Где (в каком диалоге) это задано? Потому что это событие документа (Spreadsheet Document). Надо не просто изменить имя процедуры в модуле. И "Document" наводит на мысль… то есть делает код самодокументированным. Но не будем придираться: @sokol92 прекрасно решил задачу.
« Последнее редактирование: 10 Январь 2022, 01:45 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.2.4.1 Community
Tigrik
Форумчанин
***
Offline Offline

Сообщений: 117


« Ответ #42: 10 Январь 2022, 01:47 »

Ответьте на вопрос: как и откуда осуществляется вызов этой процедуры?
Да, я хорошо представляю, что эту процедуру необходимо как-то (и откуда-то) вызвать (мой полувопрос: "что-то ещё добавить или изменить"), но я только учусь программировать макросы (при том, получается это с большими перерывами).
А объясните, пожалуйста, что дает вызов этой процедуры для пользы макроса?
Записан
eeigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 845



« Ответ #43: 10 Январь 2022, 01:57 »

Сервис >> Настройки >> События
Это даёт то, о чём написал автор: после входа в/выхода из режима просмотра перед печатью заново зарегистрировать соответствующий слушатель, иначе он будет остановлен.
Записан

Ubuntu 18.04 LTS • LO 7.2.4.1 Community
Tigrik
Форумчанин
***
Offline Offline

Сообщений: 117


« Ответ #44: 10 Январь 2022, 02:03 »

Понял, спасибо за пояснение.
Записан
Страниц: « 1 2 3 4 »   Вверх
  Печать  
 
Перейти в:  

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