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

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

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

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Статус ячейки  (Прочитано 1695 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Стартовое сообщение: 8 Декабрь 2016, 08:40 »

Доброе время! Как узнать что какая-то ячейка находится в режиме редактирования?
т.е. нужно в начале макроса узнать а не редактируется ли какая-нибудь ячейка на листе и если да, то сохранить в ней данные.
Что-то типа так

Код:
sub TestEditCell
 if ThisComponent.Sheets(0) is CellEditing then ???
.....
end sub
Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 761


« Ответ #1: 8 Декабрь 2016, 08:48 »

Кто-то забывает нажать на [Enter]?
Так это лечится само - многократным повторным вводом...

Какая-то надуманная "проблема".
Записан

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

Сообщений: 114


« Ответ #2: 8 Декабрь 2016, 09:06 »

Так это лечится само - многократным повторным вводом...

Какая-то надуманная "проблема".
Да нет. У меня на листе данные отчета подгружаются(сохраняются) при изменении комбобокса(списка)
Так вот обратил внимание, что если ячейка находилась в режиме редактирования и в этот момент выбрать отчет другого пользователя в списке, то эта ячейка(которая редактировалась у предыдущего пользователя, сохраняется уже новому. Это косяк Улыбка

Цитата:
Кто-то забывает нажать на [Enter]?
Ну в общем-то да.
Записан
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 2 127



« Ответ #3: 8 Декабрь 2016, 09:41 »

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

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Ответ #4: 8 Декабрь 2016, 12:32 »

Временно (а может и постоянно:)) решил это так:
Упс... Не работает Грустный
« Последнее редактирование: 8 Декабрь 2016, 12:42 от Alex16 » Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 761


« Ответ #5: 8 Декабрь 2016, 13:02 »

Это не режим общего доступа?

Если монопольно - можно в макросе обработки комбо-бокса выключить режим редактирования или передать приложению нажатие клавиши Enter.
Записан

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

Сообщений: 114


« Ответ #6: 8 Декабрь 2016, 13:05 »

Это не режим общего доступа?
Нет, файл открыт в один момент времени одним оператором.
Если монопольно - можно в макросе обработки комбо-бокса выключить режим редактирования
Как это сделать?

Вот тестовый файлик, может это баг? ...небольшой)

* TestEditCell.ods (13.23 Кб - загружено 6 раз.)
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #7: 8 Декабрь 2016, 14:50 »

Да нет. У меня на листе данные отчета подгружаются(сохраняются) при изменении комбобокса(списка)
Так вот обратил внимание, что если ячейка находилась в режиме редактирования и в этот момент выбрать отчет другого пользователя в списке, то эта ячейка(которая редактировалась у предыдущего пользователя, сохраняется уже новому. Это косяк
Да, нет, может быть, точно, кто бы подумал Смеющийся , выполните в начале макроса:
Код:
ThisComponent.calculate
Записан

Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Ответ #8: 8 Декабрь 2016, 15:29 »

выполните в начале макроса:
Хм.. В тестовом файле это сработало. А в рабочем - нет Грустный
И я догадываюсь почему. Не вызывается событие листа "Содержимое изменено". А у меня в этом событии идет сохранение ячейки на другой лист.
Но с ThisReport.Calculate теперь просто данные редактируемой ячейки теряются, т.е. хоть в чужой отчет не пишутся.
« Последнее редактирование: 8 Декабрь 2016, 15:31 от Alex16 » Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #9: 8 Декабрь 2016, 15:42 »

И я догадываюсь почему. Не вызывается событие листа "Содержимое изменено". А у меня в этом событии идет сохранение ячейки на другой лист.
Событие листа "Содержимое изменено" вызывается, даже раньше, чем показывает print от кнопки. Проблема в чём-то другом.
Записан

Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Ответ #10: 8 Декабрь 2016, 15:58 »

Событие листа "Содержимое изменено" вызывается, даже раньше, чем показывает print от кнопки. Проблема в чём-то другом
Странно. В тестовый файл который выше, добавил макрос с одной строкой print "changelist" на событие событие изменения. У меня оно не показывается. Т.е. ввел в A1 значение и находясь в режиме редактирования нажал кнопку. Вылезло сообщение с предыдущим значением из А1. Закрыл сообщение, и снова нажал кнопку, и опять показалось сообщение со старым значением из А1 И так можно долго нажимать. Но если потом кликнуть по листу, то сразу вылетает сообщение "changelist".
Стоп, забыл вернуть Calculate в тестовый файл. Да, с ним все в порядке.... Буду искать у себя значит. Спасибо.
« Последнее редактирование: 8 Декабрь 2016, 16:03 от Alex16 » Записан
Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Ответ #11: 9 Декабрь 2016, 15:19 »

У меня селектлистбокс срабатывает раньше чем событие листа "содержимое изменено" отсюда этот косяк.
И в голову ничего не приходит как с этим бороться?
Дело в том, что в событии изменения листбокса(селектлистбокс) уже другой индекс (новый оператор), а следом идет событие "содержимое изменено" в котором идет сохранение данных но еще старого оператора. Вот поэтому эта последняя ячейка, если она в режиме редактирования записывается другому оператору Грустный
По идеи, даже по логике, событие изменения листа должно произойти быстрее чем событие изменение списка. Там же наверное еще события потери фокуса, получение фокуса идут....
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #12: 9 Декабрь 2016, 15:52 »

По идеи, даже по логике, событие изменения листа должно произойти быстрее чем событие изменение списка. Там же наверное еще события потери фокуса, получение фокуса идут....
Нам эти идеи чужды Крутой, элементы управления находятся на рисованной странице, поэтому сначала срабатывает элемент управления (если вы с ним работаете), а затем если есть связь с листом, идут события листа.
Записан

Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Ответ #13: 9 Декабрь 2016, 16:25 »

поэтому сначала срабатывает элемент управления (если вы с ним работаете), а затем если есть связь с листом, идут события листа.
Ну тогда понятно поведение. Значит попрошу нажимать Ентер. Хотя вот пришла мысль в событии при получении фокуса списком делать calculate...
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Online Online

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


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


WWW
« Ответ #14: 9 Декабрь 2016, 16:31 »

И в голову ничего не приходит как с этим бороться?
О, если бы ты только догадывался, что иногда приходит в голову!..  Смеющийся
Например, отказаться от элемента управления (как ни крути - чужеродного внедрения в вычислительном листе) и заменить его выбором из списка, который делается обычным "Данные-Проверка-Диапазон ячеек". Куча народу поступает именно так и (почти!) никто не жалуется. В моем примере с быстрым перекрашиванием и защитой именно так и сделано. Отпадает необходимость формировать макросом список пользователей и - опять же макросом - анализировать кто выбран в этот раз и кто был раньше, и раскрашивать, и защищать-разрешать, итд-итп-лтд-лтп...
Записан

Владислав Орлов 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!