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

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

19 Сентябрь 2021, 07:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 »   Вниз
  Печать  
Автор Тема: Добрый день! Недавно познакомилась с OOo Calc. Проблема: ...  (Прочитано 16119 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Natali
Участник
**
Offline Offline

Сообщений: 9


« Ответ #15: 24 Февраль 2011, 15:59 »

Здравствуйте. Вот такие особенности:
Я установила расширение версии 0.2.3. При запуске:  и из меню и по Ctrl Shift F3 выдает ошибку --см. вложение рис1.  Когда назначаю свое сочетание клавиш--эта версия работает вроде без ошибок.
Версия 0.3.4 -работает,  что имеется ввиду:  "там есть перевод на английский язык" ?
Спасибо за ответ.

[вложение удалено Администратором]
Записан
Рыбка Рио
Форумчанин
***
Offline Offline

Сообщений: 1 678


« Ответ #16: 24 Февраль 2011, 20:11 »

Я установила расширение версии 0.2.3. При запуске:  и из меню и по Ctrl Shift F3 выдает ошибку --см. вложение рис1.
Эта версия предполагает что вы устанавливаете его только для себя, а не для всех пользователей (видите в менеджере расширений там значок с двумя желтыми фигурками?). Это недочёт.

Версия 0.3.4 -работает,  что имеется ввиду:  "там есть перевод на английский язык" ?
Т.е., если офис имеет английский интерфейс, то и расширение будет на английском.
Записан

ubuntu 12.04 + LibO3.6.0
Рыбка Рио
Форумчанин
***
Offline Offline

Сообщений: 1 678


« Ответ #17: 25 Февраль 2011, 01:10 »

Вот исправленная версия со скриптом search_in_calc.py - 0.2.9. В ней кроме самого скрипта (search_in_calc.py) теперь находится ещё файл SIC.py, который регистрируется как компонент  и служит для вызова скрипта search_in_calc.py методом, который дан тут: Использование stdout shell скриптов в OOo макросах [MEMO]).

[вложение удалено Администратором]
Записан

ubuntu 12.04 + LibO3.6.0
Рыбка Рио
Форумчанин
***
Offline Offline

Сообщений: 1 678


« Ответ #18: 25 Февраль 2011, 17:15 »

В версиях на Питоне есть ещё 1 ошибка. Если ввести регулярное выражение (типа [3|4] , т.е. "либо 3, либо 4") , то расширение ничего не найдёт. Ошибка в том, что свойство SearchRegularExpression должно писаться с заглавной буквы, а в расширении с маленькой (т.е. searchRegularExpression). В следующих  версиях исправлю (сегодня чуть позже). Кстати, в окошке можно перемещаться со строки на строку не толко мышкой но и стрелками на клавиатуре.... Наверное, можно ещё добавить вертикальный столбец для нумерации результатов? Вот так:

[вложение удалено Администратором]
Записан

ubuntu 12.04 + LibO3.6.0
Рыбка Рио
Форумчанин
***
Offline Offline

Сообщений: 1 678


« Ответ #19: 25 Февраль 2011, 20:41 »

Готово:
(теперь можно выбирать, нужно ли искать регулярное вырадение или нет)

[вложение удалено Администратором]
Записан

ubuntu 12.04 + LibO3.6.0
Kadet
Форумчанин
***
Offline Offline

Сообщений: 627


« Ответ #20: 3 Август 2021, 12:47 »

Вот нашёл старенькую тему, скопировал и переработал из неё макросы и пробую их использовать.

Однако, всё хорошо, то, что хотелось, но столкнулся с такой проблемой: при закрытии этого всплывающего окна автоматически открывается редактор Basic (по крайней мере у меня). Открывается он не всегда, но почти всегда. Иной раз бывает проскакивает, но причины я выяснить пока не могу.
Нет ли идей почему так происходит?

Второй момент. Пробовал создавать кнопки "Отмена" и "Ок", но обычно их функционал использую через поиск принадлежности нажатой кнопки к тому или иному документы, т.е.: (oEvent.Source.Model.Parent). Но, оказалось в свойствах этих кнопок просто нет такого метода Parent. Они, как бы, висят в воздухе ни к чему не прикреплённые, судя по их свойствам и методам. Нет, ну можно, конечно сохранить родителя в глобальной переменной, а потом при нажатии на кнопку брать его из этой переменной, но... это же "через одно место". А если придётся открывать несколько окон, используя одни и те же макросы - возникают сложности. Есть ли способ проще найти их "родителя"?

И третий вопрос, немного не относящийся к теме этой темы.
Как в диалоговом окне можно повесить на свойство активной кнопки выполняться по нажатии "Enter". Пробовал повесить макрос на свойство "нажатие клавиши", но тогда выполнение макроса начинается по нажатии любой клавиши клавы, а нужно только "Enter". Нужно ставить проверку какая клавиша нажата. Подскажите, пожалуйста, как это реализовать?

* Test1.ods (14.96 Кб - загружено 5 раз.)
« Последнее редактирование: 3 Август 2021, 13:01 от Kadet » Записан
sokol92
Форумчанин
***
Offline Offline

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


WWW
« Ответ #21: 3 Август 2021, 14:02 »

Измените в своем примере диалогового окна в свойствах кнопки "OK" тип кнопки на "OK".
О нажатии кнопки OK или Cancel (или соответствующих кнопок клавиатуры) обычно узнают по коду возврата метода execute.

Что касается появления окна редактора, то это, скорее всего, следствие того, что не описаны методы disposing для кнопок. Добавьте

Код:
Sub AL_disposing()
End Sub

и т.д. для всех кнопок.
« Последнее редактирование: 3 Август 2021, 14:28 от sokol92 » Записан

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

Сообщений: 627


« Ответ #22: 3 Август 2021, 15:38 »

Что касается появления окна редактора, то это, скорее всего, следствие того, что не описаны методы disposing для кнопок. Добавьте
Точно. Скорее всего так и есть. А я и не обратил внимания. Спасибо! Ведь все методы листенеров нужно описывать, даже пустые.

Тип "Ок" заработало. Спасибо!
Однако, когда-то я стал выключать эти типы. Не помню, что мне не понравилось, посмотрим. Время покажет.

обычно узнают по коду возврата метода execute.
С чем его едят? Как его отловить? По событию нажатия - Event?
Записан
sokol92
Форумчанин
***
Offline Offline

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


WWW
« Ответ #23: 3 Август 2021, 15:59 »

Метод execute использован в Вашем примере (строка 13 модуля DLG). Запишите так:

Код:
rc=oDlgVyn.execute()

где rc - код возврата метода (переменная целого типа).

Если была нажата кнопка OK (или Enter), то метод вернет 1, если Cancel (или Esc или форму закрыли нажатием на "крестик") - то 0.
Другие коды возврата можно установить с помощью метода endDialog.

Записан

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

Сообщений: 627


« Ответ #24: 3 Август 2021, 16:13 »

rc=oDlgVyn.execute()
Ну да, execute - это же "ззкарыть", "выйти".
Никогда бы не предположил, что его можно использовать подобным образом. Попробую.

Кстати, протестировал и понял, почему отказался от использования типов "Ок". Макрос завожу на событие "Нажатие кнопки мыши", а макрос тут нужен. Если его завести на "Нажатие клавиши", то он будет срабатывать по нажатию любой клавиши. Нужно ставить проверку "какая кнопка нажималась". Мало того, так как макрос один для всех случаев, то вешать его нужно и на мышу и на клаву и ставить проверку - мыша или энтер, всё остальное мимо. А это не получалось.

Ща попробую через execute. Может что получится.
Записан
Kadet
Форумчанин
***
Offline Offline

Сообщений: 627


« Ответ #25: 3 Август 2021, 16:13 »

Если была нажата кнопка OK (или Enter), то метод вернет 1, если Cancel (или Esc или форму закрыли нажатием на "крестик") - то 0.
А если ЛКМ?
Записан
Kadet
Форумчанин
***
Offline Offline

Сообщений: 627


« Ответ #26: 3 Август 2021, 16:25 »

ЛКМ - тоже выдаёт "0". Т.е. получается, он не отличается от esc, и это огорчает.

Т.е. выход - нужно делать два одинаковых макроса - на кнопку отдельно, на мышу отдельно... А это не есть хорошо... Хотя, можно сделать маленькие ссылочные макросы, которые будут  - один просто ссылаться на исполняемый нужный макрос, а другой вначале проверять что нажато и, в зависимости от результата, переходить на главный макрос или нет.
В общем... усложняет это всё.

Кстати, я использую метод endExecute(), а он в отличает от Execute() ничего не возвращает.
Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 298


« Ответ #27: 3 Август 2021, 16:30 »

Ну да, execute - это же "ззкарыть", "выйти".

Мне почему-то казалось, что execute - это "выполнить".
Записан

С уважением,
Михаил Каганский
sokol92
Форумчанин
***
Offline Offline

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


WWW
« Ответ #28: 3 Август 2021, 16:34 »

Левая кнопка мыши по какому объекту?

Для кнопок типа "OK", "Cancel", "Help" не должно быть обработчиков событий (в своем примере уберите, иначе Execute не вернет то, что надо).
Для кнопок типа Standard ("По умолчанию") нужны обработчики событий (нажатия кнопки). Из этих обработчиков при желании можно закрыть диалог с помощью упомянутого метода endDialog. Можно также вызвать endExecute (в результате которого Execute вернет 0).
« Последнее редактирование: 3 Август 2021, 16:37 от sokol92 » Записан

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

Сообщений: 627


« Ответ #29: 3 Август 2021, 16:50 »

Не. Не алё.
Почему-то на все Enter (и боковой и главный) метод:
Код:
rs = oDlgVyn.Execute()
Отвечает нулём.
Записан
Страниц: « 1 2 3 »   Вверх
  Печать  
 
Перейти в:  

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