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

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

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

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

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


« Ответ #30: 11 Апрель 2020, 15:51 »

Не сразу нашел окошко с разделителями в параметрах.

На всякий случай:


* separators.png (28.08 Кб, 696x520 - просмотрено 9 раз.)
Записан

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

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


« Ответ #31: 11 Апрель 2020, 16:22 »

mike, в приведенном мной примере почему-то файл открывается с установленном режимом разработки. Кнопка с макросом не работает.
Я написал:
"Кстати, в прилагаемом примере почему-то при загрузке включается режим разработки (и кнопка не работает), а в других случаях сохраняется ранее выбранный режим. Что я делаю не так? Как зафиксировать режим выполнения (а не разработки) при старте программы?
См. Сервис - Формы - Режим разработки".

Другие файлы открываются, и режим разработки выключен. Как этим управлять?

Конечно же я эту проблему "поборол" вызовом метода SwitchControlDesignMode при загрузке файла (см. ниже), однако это требуется не всегда: при загрузке других файлов режим разработки отключен. Что бы это значило? Не могу уловить различия.

'  Used by: Событие "Активизация документа".
Sub Main
    Call SwitchControlDesignMode(False)
End Sub

'  Purpose: Переключает или устанавливает режим разработки (Сервис/Формы/Режим разработки).
'  Used by: Main
Sub SwitchControlDesignMode(Optional vState)
    Dim document   as object
    Dim dispatcher as object

    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    Dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "SwitchControlDesignMode"
    args1(0).Value = IIf(IsMissing(vState), Not args1(0).Value, CBool(vState))

    dispatcher.executeDispatch(document, ".uno:SwitchControlDesignMode", "", 0, args1())
End Sub
Записан
mikekaganski
Гуру
*******
Offline Offline

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


« Ответ #32: 11 Апрель 2020, 16:26 »

Вообще режим просто записывается в файл. Поэтому если Вы активировали режим разработки и сохранили файл, он откроется в этом режиме.

Если оно так не работает, значит, надо искать последовательность действий, которая приводит к другому поведению, и писать баг.
Записан

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

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


« Ответ #33: 11 Апрель 2020, 16:32 »

Так именно с файлом моего примера и есть такая проблема: не могу отключить режим разработки. Как он открывается у Вас?
Другие файлы такой проблемы не создают.
Записан
mikekaganski
Гуру
*******
Offline Offline

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


« Ответ #34: 11 Апрель 2020, 16:41 »

Он открывается в режиме разработки, да. Это записано в content.xml (см. <office:forms form:automatic-focus="false" form:apply-design-mode="true">).

Если отключить "Tools">"Forms">"Open in Design Mode" и сохранить, оно естественно начинает открываться в другом режиме.
Записан

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

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


« Ответ #35: 11 Апрель 2020, 16:49 »

К сожалению, у меня на Linux Ubuntu 18.04 Calc 6.4 не получается достичь желаемого эффекта. И только с этим файлом. Файл всегда открывается в режиме разработки, поэтому я и поставил заплатку с переключением режима программно при активации документа. Можно ли добраться до этого свойства иначе (это похоже на баг) или вышлите мне мой собственный файл примера с отключенным режимом разработки.
Записан
eeigor
Ubuntu 18.04 LTS
Форумчанин
***
Offline Offline

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


« Ответ #36: 11 Апрель 2020, 16:52 »

Всё, спасибо. Разобрался.
Помимо флага "Режим разработки", который я сбрасывал, есть ещё один: "Открыть в режиме проектирования". Его сбросил, и всё заработало, как надо.
Записан
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #37: 11 Апрель 2020, 17:10 »

Нет, окошки будут заполнены. А настройка будет пустой - по крайней мере у меня в русской Win 10 и версии 6.4.3.1
Поставил новую версию 6.4.3.2 и до открытия сбросил профиль, окошки заполнены, а макрос возвращает пустую строку.


По видимому, если пользователь не изменил настройки, провайдер выдаёт пустую строку, а используются разделители по умолчанию. Тогда в макросе, проверяем, если получили пустую строку — значит пользователь не менял настройки, — назначаем по умолчанию.
Записан

mikekaganski
Гуру
*******
Offline Offline

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


« Ответ #38: 11 Апрель 2020, 17:15 »

По видимому, если пользователь не изменил настройки, провайдер выдаёт пустую строку, а используются разделители по умолчанию.

Именно так.

Тогда в макросе, проверяем, если получили пустую строку — значит пользователь не менял настройки, — назначаем по умолчанию.
Но вот тут как раз то самое головоломное поведение начинается, когда "умолчания" разные для разных локалей. А локали могут быть настроены пользователем или браться из системы. И для правильного воспроизведения поведения калька мало знать текущую локаль, так ещё надо и иметь доступ к данным разделителей локалей, зашитым в ЛО.
Записан

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

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


« Ответ #39: 11 Апрель 2020, 17:19 »

И каким будет окончательное и универсальное (кроссплатформенное) решение, кроме использования константы, как у меня в примере?
Записан
mikekaganski
Гуру
*******
Offline Offline

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


« Ответ #40: 11 Апрель 2020, 17:27 »

Например, такой костыль. В листе создать служебный столбец (скажем, A; можно скрытый), в нём в A1 записать формулу "=SUM(1;1)", а в A2 - "=LEFT(RIGHT(FORMULA(A1);3);1)". И в коде брать значение из A2.

Вообще по-моему эта чехарда с разделителями здесь - это баг.
Записан

С уважением,
Михаил Каганский
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #41: 11 Апрель 2020, 17:30 »

Кстати, если изменить другую настройку, например, "Использовать английские имена функций", то провайдер выдаёт разделители, а не пустую строку и они записываются в файл registrymodifications.xcu (и вместе с ними ещё почти 140 КБ настроек).

Я не заметил, чтобы разделители изначально зависели от локали, скорей всего они зашиты в LibreOffice.
Записан

mikekaganski
Гуру
*******
Offline Offline

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


« Ответ #42: 11 Апрель 2020, 17:33 »

@rami: см. ответ #18 - там я привёл ссылку на исходный код, который даёт дефолт для этой настройки.
Записан

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

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


« Ответ #43: 11 Апрель 2020, 17:43 »

Ну, в моем конкретном примере можно прогнать строку дважды со вставкой пробела после разделителя: сначала точки с запятой, а потом просто запятой. Что-то одно да сработает.

Но если среди сторонников Calc’а есть перфекционисты, то их такое положение дел вряд ли устроит, и тогда, возможно, надо писать, куда следует…
Записан
economist
Форумчанин
***
Offline Offline

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


« Ответ #44: 11 Апрель 2020, 21:39 »

сначала точки с запятой, а потом просто запятой.
- так и делаем. Настоящих перфекционистов в Calc нет.
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Страниц: « 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!