Всплывающий календарь.

Автор VAR, 27 февраля 2011, 01:51

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

raptor

Все работает.
Или я что-то не понял?

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

VAR

поменяйте в насройках календаря формат даты и проверьте работает или нет!

посмотрите есть ли календарь в Сервис-Дополнения.

raptor

формат даты работает
календарь в Сервис-Дополнения есть

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

VAR

пашанцавала!(бел. т.е. - "повезло") у меня нифига не получается! онли с версией 1.9!
буду пытаться разобраться! ???

Рыбка Рио

Посмотрите видео, как у меня с быстрым запуском устанавливается:
YouTube - Установка расширений при включенном быстром запуске
ubuntu 12.04 + LibO3.6.0

VAR

спасибо, все заработало! :beer:

oleg

А как календарь вызвать с кнопки?
ubuntu 14.04 + LO 4.2.4

ArsKam

#52
Здравствуйте.
не устанавливается на Windows XP с сообщением:
(com.sun.star.lang.DisposedException) { { { Message = "Binary URP bridge disposed during call", Context = (com.sun.star.uno.XInterface) @6f654a8 } } }}

economist

Данная тема с кучей удаленных вложений и проблемами с расширениями - "не раскрыта". На самом деле аккуратный, всплывающий, очень удобный контрол "Поле даты" - это готовый Календарь с "листалкой" дней/месяцев/годов.

Он есть во Writer/Calc/Base/Impress "из коробки" (скрин вложен). Важно лишь задать ему св-во Раскрываемый и Счетчик (оба - Да).

Для отражения его значения в ячейке ODS или в тексте/поле/таблице ODT - нужен небольшой макрос, который нужно назначить на событие "Текст изменен". Вот пример для Calc:


Option VBASupport 1

Sub SetCellDateFromCalend
dt = ThisComponent.CurrentController.ActiveSheet.DrawPage.Forms(0).getByName("ПолеДаты")
ActiveSheet.[C4].Value = DateSerial(dt.Date.Year, dt.Date.Month, dt.Date.Day)
End Sub
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

eeigor

#54
@economist, требуется больше информации: я не могу найти календарь (не работал с ним здесь) и не вижу, откуда взялось имя "ПолеДаты":
.DrawPage.Forms(0).getByName("ПолеДаты")
Если не трудно, поясните.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

economist

#55
Как вставить встроенный контрол "календаря" в документ OpenOffice|LibreOffice:

0) Включим: Вид - Панели инструментов - Элементы управления (они же контролы)

1) Если нам нужно дату из "календаря" куда-то подставлять в документ (в ячейку, текст, таблицу) - придется добавить макрос на событие "Изменение текста". Связать по ссылка вида "A1" контрол с ячейкой, как в Excel, - тут нельзя, поэтому макрос. Создаем новый модуль по Alt+F11 и вставляем макрос из #53. Модуль лучше Новый - потому что в нем разрешен запуск VBA-макросов, для Calc это легкий путь писать/читать из ячеек в стиле [A1]="Ромашка". На родном LO Basic эта же команда будет в 5 раз длиннее. Исправьте в макросе адрес [C4] на нужный. Для Writer/ODT-файлоа макрос нужно немного изменить - ThisComponent.DrawPage.Forms(0).getByName("ПолеДаты") Но вот куда вставлять во Writer - в позиции Видимого или Текстовых курсоров, как её задать - это оставим "за кадром", на Форуме полно примеров курсорных команд.

2) Жмем на изображение Угольника (Режим разработки) - становятся активными кнопки для вставки контролов. Иконки зависят от тем/настроек итп. Поэтому наводим на каждый и ждем подсказки вида, нам нужно "Поле даты".  

3) Если его нет - жмем на кнопку Еще/Дополнительные или правой кн мыши - Показать кнопки - Поле даты

4) Жмем на Поле даты и "рисуем" контрол в документе. Нарисованный контрол может быть привязан как символ, к ячейке, к странице итп, у него как и у рисунка - куча свойств обтекания итд. Настраивайте по ситуации.

5) Щелкаем пр. кн. мыши на контроле - Свойства элемента... - вкладка Общие. В диалоге поля Счетчик и Раскрываемый - ставим Да. А вверху задаем имя "ПолеДаты" Оно м.б. и с пробелами, но лучше без.

6) На вкладке События в поле Текст изменен через кнопку [...] - находим наш макрос.  

7) Теперь смена даты в контроле изменит дату в ячейке или тексте в нужном месте.  
     
PS для Writer:

Часто на практике делают так: контрол "календаря" привязан как символ в нужном месте дока ODT, "плавает" поверх текста, но не печатается, а макрос - считывает эту "привязку" контрола (Anchor), шагает влево и вставляет выбранную дату прямо в текст. Получается красиво (переносы текста, обтекания, орфография итд - всё сохраняется). Привязку контрола не так-то просто узнать в макросе, т.к. сам Control, Model этой кнопки и её View - три разные сущности. В библиотеки Tools для этого есть макросы GetControlModel, GetControlView, GetControlShape - и с ними придется вам разобраться.  

Еще один популярный сценарий во Writer - записать дату из календаря в Поле пользователя (Ctrl+F2) или в Файл-Свойства-Свойства пользователя. Их можно вставить в кучу мест документа, и они обновятся при смене даты. Текстовые поля-клоны - тоже самообновляются везде, но у них нет красивой формы "календаря", из которой видны выходные, длинные феврали и 30/31-хвосты месяцев.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

eeigor

Спасибо, всё в порядке. Не работал раньше. Спасибо.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

Владимир.