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

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

26 Октябрь 2020, 13:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Вызов стандартного диалога для ввода данных в Calc  (Прочитано 6568 раз)
0 Пользователей и 1 Гость смотрят эту тему.
tagezi
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Finland
Сообщений: 793



WWW
« Стартовое сообщение: 21 Июнь 2016, 14:26 »

В Calc, например, когда делаешь диаграмму, для указания диапазона используется диалоговое окно (см. картинку dialog).
Меня интересует, как можно вызвать подобное окно из макроса и вернуть значение из него в переменную.
В моём диалоговом окне есть, кнопочки (см. картинку form). Нажимая на них, пользователь должен иметь возможность выбрать ячейку или диапазон. И адрес на эту ячейку (диапазон) должен вставать в текстовое поле. Пример диалога ниже.
Вот вопрос, можно ли использовать стандартное окно (и как) или нужно реализовывать своё?
Спасибо за идеи.


* dialog.png (7.49 Кб, 387x74 - просмотрено 52 раз.)

* form.png (23.39 Кб, 719x364 - просмотрено 75 раз.)
Записан

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 21 Июнь 2016, 14:44 »

Не смог найти полное решение (наверное, оно было не здесь, а на Инфра-Ресурсе). Но суть такова:
Диалог оформляется и загружается как обычно, но запускается не через execute, а через show - это делает его не модальным, позволяет потыкать мышью в лист книги. Какая-то булева переменная следит за активностью окна - если кнопкой "Закрыть" переменную сбрасывают в False, окну диалога посылается команда .Hide
Ну и по событию "изменение выделенной области" в нужное поле закидывается .getCurrentSelection().AbsoluteName.
Подробнее не расскажу, давно было. Если не сделаешь - маякни, пороюсь в архивах, может, и сохранился где-то примерчик
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
tagezi
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Finland
Сообщений: 793



WWW
« Ответ #2: 21 Июнь 2016, 14:55 »

Не смог найти полное решение (наверное, оно было не здесь, а на Инфра-Ресурсе). Но суть такова:
Диалог оформляется и загружается как обычно, но запускается не через execute, а через show - это делает его не модальным, позволяет потыкать мышью в лист книги. Какая-то булева переменная следит за активностью окна - если кнопкой "Закрыть" переменную сбрасывают в False, окну диалога посылается команда .Hide
Ну и по событию "изменение выделенной области" в нужное поле закидывается .getCurrentSelection().AbsoluteName.
Подробнее не расскажу, давно было. Если не сделаешь - маякни, пороюсь в архивах, может, и сохранился где-то примерчик
Спасибо, буду пробовать. Если не разберусь, буду маячить.  Улыбка
Записан

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #3: 21 Июнь 2016, 15:08 »

А как ты до таких окон добрался?
Записан

tagezi
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Finland
Сообщений: 793



WWW
« Ответ #4: 21 Июнь 2016, 15:13 »

А как ты до таких окон добрался?
Разрабатываю программный модуль анализа чувствительности инвестиционного проекта... Почти всё реализовано, остались мелкие штуки, типа этой, и ещё пару.
Диплом защищаю 27 числа, хочу более менее нормальную штуку отдать... Вот так и добрался... Как-то так Улыбка
Потом потихоньку допилю до нормального состояния и выложу в общий доступ.
Записан

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #5: 21 Июнь 2016, 15:29 »

Разрабатываю программный модуль анализа чувствительности инвестиционного проекта...
Ты сам сделал эти окна в редакторе диалогов? Или как?
Записан

tagezi
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Finland
Сообщений: 793



WWW
« Ответ #6: 21 Июнь 2016, 15:37 »

Ты сам сделал эти окна в редакторе диалогов? Или как?
Да, в редакторе диалогов. Что-то я не смог нормально осилить как это всё в коде делать... да и проще так, по крайне мере на этом этапе, не нужно задавать кодом позиционирование.
А маленькое окошко я пока не делал, но видимо придется.
Записан

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #7: 21 Июнь 2016, 16:15 »

Да не стоит, наверное, с мелким окном заморачиваться - возни много, а результат тот же.
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #8: 21 Июнь 2016, 22:01 »

Ага, нарыл... Не помню, для кого писал и зачем, что эта бодяга должна была делать тоже не помню - все-таки 4 года прошло. Но диалог работает, кажется, так, как ты и задумывал

* Preparing data for export to XML1.ods (18.93 Кб - загружено 34 раз.)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
tagezi
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Finland
Сообщений: 793



WWW
« Ответ #9: 21 Июнь 2016, 22:06 »

Ага, нарыл... Не помню, для кого писал и зачем, что эта бодяга должна была делать тоже не помню - все-таки 4 года прошло. Но диалог работает, кажется, так, как ты и задумывал
Спасибо большое, буду разбираться Улыбка
Записан

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha
economist
Форумчанин
***
Online Online

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


« Ответ #10: 22 Июнь 2016, 09:14 »

tagezi - по диалогу: "Неиспользовать" пишется раздельно, левый верхний контрол - меньше других.

Это я к чему: все подобные диалоги лучше реализовать прямо на Листе Calc, в ячейках. Всё будет ровно и без орфографических ошибок. И красоту можно навести неимоверную (тени, картинки, анимация). А главное - программного кода будет на порядок меньше. Ту же проверку значений, подсветку, вычисления итп - на порядок проще организовать в Листе. На производстве такой подход позволяет переложить работу на обычных пользователей - они эти "раскраски" воспринимают с благоговением :-))

Если нужно получить в ячейке текст ссылки на диапазон типа "=E4:E27", то это делается простым щелчком и протягиванием, безо всяких контролов. Но еще лучше на StarBasic проанализировать таблицу и предложить юзеру выбор из списка именованных Столбцов/Строк. Кстати, в серьезных пакетах Анализ чувствительности делается автоматически по всем ключевым факторам, интерактивно ничего выбирать не нужно, тем более что можно промахнуться и выбрать несвязанные показатели.

Кстати, "по ту сторону Excel" - тамошний контрол RefEdit.ctrl (для выделения диапазонов немодально) - настолько глючен, что сам Microsoft его не рекомендует использовать. И приходится "лепить горбатого". 
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
tagezi
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Finland
Сообщений: 793



WWW
« Ответ #11: 22 Июнь 2016, 09:19 »

... удалено ...
« Последнее редактирование: 22 Июнь 2016, 09:30 от tagezi » Записан

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #12: 22 Июнь 2016, 09:33 »

tagezi, на картинке form.png выравни надпись Диапазон факторов по вертикали по центру, а то она ломает горузонтальную линию с полем ввода.


Скажи, у тебя шорткаты (первые буквы с подчёркиванием) на русском работают? У меня если первая буква латинская — работает, а если русская, то нет.
Записан

tagezi
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Finland
Сообщений: 793



WWW
« Ответ #13: 22 Июнь 2016, 09:36 »

Короче, что-то я не догоняю до конца это. Ниже приведён очень простой пример того что нужно, но прикручено на радиокнопку. Пытался перетащить на кнопку, не получается. Видимо уже что-то не вижу.
Самое обидное, что даже скопипастить из рабочего документа JohnSUN не могу. То ли разучился, то ли уже мозги едут.

rami, посмотрю и отвечу через пару часиков... пойду погуляю, подышу свежим воздухом.

* Non-modal dialog1.1.ods (16.23 Кб - загружено 28 раз.)
Записан

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #14: 22 Июнь 2016, 10:27 »

Ну, раз уж тут все взялись тебя поправлять и корректировать, то и я свои пять копеек вставлю: "...то ли уже мозги НЕ едут" (а чё, в самом деле! Нужно же к чему-нибудь докопаться?)  Смеющийся  Смеющийся  Смеющийся
С кнопкой какая ерунда приключилась - действие "ОК", которое ты ей назначил, было бы нормально выполнено, если бы диалог запускался на выполнение (помнишь .execute?). А в случае visible/invisible нужно вешать на неё обычный обработчик.

Передохни - ты, похоже, действительно перенапрягся. В таком состоянии ничего путного не высидишь

* Non-modal dialog1.2.ods (16.9 Кб - загружено 37 раз.)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

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