Re: OpenOffice, Calc и события.
Добавлено: 23 сен 2010, 17:29
Вся таблица представляет собой следующее:
Наименование | Цена, руб | Цена, грн | Цена дол | Сумма... и т.д.
Меня интересует диапазон с ценами, т.е. когда я ввожу цену в рублях нужно сразу конвертировать ее в остальные валюты и менять значения в соответствующих ячейках. Все это я уже как бы сделал, но все портится если я захочу добавить новую строку в таблицу, т.е. при добавлении нового товара.
То есть теоретически все просто. Есть область ячеек:
————|————|————|————|————
————|————|————|————|————
————|————|————|————|————
————|————|————|————|————
————|————|————|————|————
————|————|————|————|————
На каждую ячейку в этой области повешен слушатель, который реагирует на изменение значения внутри ячейки. Меня интересует как отловить событие, кгда в таблицу добавляются строки/столбцы. То есть когда пользователь открывает контекстное меню и выбирает пункт "вставить ячейки..." (либо жмет кнопку на панели инструментов "вставить строки"). Когда это происходит мне надо перерегистрировать все слушатели событий для ячеек. То есть фактически мне надо отключить существующие слушатели прежде, чем новая строка будет вставлена, расширить свой массив (включить в него добавленные строки) и повесить слушатели обратно.
Я думал, что логично будет всю эту область нужных мне ячеек выделить отдельно:
А потом каким то макаром отслеживать изменения в ValuesListener.oRange, но я понятия не имею каким
Т.е. тоже как бы не охота все перерегистрировать когда новые строки вставлены ниже моей таблицы и ничего здесь не затронули. Но это такое, если допустить что можно как то отследить вставку новых строк и получить экземпляр события со ссылкой на эту строку, то можно определить где она вставлена, в интересующей меня области или нет. То есть по сути не важно на какой объект регистрировать слушатель события, лиш бы он вообще такой существовал 
Пока что все слушатели убрал и добавил одну кнопку — "Пересчитать"
Но появились новые вопросы, например: возможно ли слушать события, когда я делаю двойной щелчок по ячейке, то есть когда она открывается для редактирования и когда закрывается, соответственно.
Хух, надеюсь объяснил
Наименование | Цена, руб | Цена, грн | Цена дол | Сумма... и т.д.
Меня интересует диапазон с ценами, т.е. когда я ввожу цену в рублях нужно сразу конвертировать ее в остальные валюты и менять значения в соответствующих ячейках. Все это я уже как бы сделал, но все портится если я захочу добавить новую строку в таблицу, т.е. при добавлении нового товара.
То есть теоретически все просто. Есть область ячеек:
————|————|————|————|————
————|————|————|————|————
————|————|————|————|————
————|————|————|————|————
————|————|————|————|————
————|————|————|————|————
На каждую ячейку в этой области повешен слушатель, который реагирует на изменение значения внутри ячейки. Меня интересует как отловить событие, кгда в таблицу добавляются строки/столбцы. То есть когда пользователь открывает контекстное меню и выбирает пункт "вставить ячейки..." (либо жмет кнопку на панели инструментов "вставить строки"). Когда это происходит мне надо перерегистрировать все слушатели событий для ячеек. То есть фактически мне надо отключить существующие слушатели прежде, чем новая строка будет вставлена, расширить свой массив (включить в него добавленные строки) и повесить слушатели обратно.
Я думал, что логично будет всю эту область нужных мне ячеек выделить отдельно:
Код: Выделить всё
ValuesListener.oRange = FindSheet.getCellRangeByPosition(startCol, startRow, endCol, endRow)


Пока что все слушатели убрал и добавил одну кнопку — "Пересчитать"

Хух, надеюсь объяснил
