Страница 2 из 3

Re: OpenOffice, Calc и события.

Добавлено: 23 сен 2010, 17:29
heaven87
Вся таблица представляет собой следующее:
Наименование | Цена, руб | Цена, грн | Цена дол | Сумма... и т.д.
Меня интересует диапазон с ценами, т.е. когда я ввожу цену в рублях нужно сразу конвертировать ее в остальные валюты и менять значения в соответствующих ячейках. Все это я уже как бы сделал, но все портится если я захочу добавить новую строку в таблицу, т.е. при добавлении нового товара.

То есть теоретически все просто. Есть область ячеек:
————|————|————|————|————
————|————|————|————|————
————|————|————|————|————
————|————|————|————|————
————|————|————|————|————
————|————|————|————|————

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

Я думал, что логично будет всю эту область нужных мне ячеек выделить отдельно:

Код: Выделить всё

ValuesListener.oRange = FindSheet.getCellRangeByPosition(startCol, startRow, endCol, endRow)
А потом каким то макаром отслеживать изменения в ValuesListener.oRange, но я понятия не имею каким :) Т.е. тоже как бы не охота все перерегистрировать когда новые строки вставлены ниже моей таблицы и ничего здесь не затронули. Но это такое, если допустить что можно как то отследить вставку новых строк и получить экземпляр события со ссылкой на эту строку, то можно определить где она вставлена, в интересующей меня области или нет. То есть по сути не важно на какой объект регистрировать слушатель события, лиш бы он вообще такой существовал :)

Пока что все слушатели убрал и добавил одну кнопку — "Пересчитать" :) Но появились новые вопросы, например: возможно ли слушать события, когда я делаю двойной щелчок по ячейке, то есть когда она открывается для редактирования и когда закрывается, соответственно.

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

Re: OpenOffice, Calc и события.

Добавлено: 23 сен 2010, 17:49
Terminators
На каждую ячейку в этой области повешен слушатель
что за слушатель?

Re: OpenOffice, Calc и события.

Добавлено: 23 сен 2010, 18:15
heaven87

Код: Выделить всё

PricesListeners(col, row).oListener = CreateUnoListener(prefix, "com.sun.star.util.XModifyListener")

Re: OpenOffice, Calc и события.

Добавлено: 25 сен 2010, 17:54
Busine2009
heaven87
т.е. весь смысл заключается в конвертировании валют?

Re: OpenOffice, Calc и события.

Добавлено: 25 сен 2010, 18:06
heaven87
Busine2009 писал(а):heaven87
т.е. весь смысл заключается в конвертировании валют?

Ну как бы да. Но решить это простой вставкой формулы в ячейку нельзя, потому как должна быть возможность указать цену в любой доступной валюте. То есть если устройство покупается, к примеру, в России, за рубли, то я добавляю в таблицу новую строку, указываю название устройства и т.д., а потом указываю цену в рублях, а значения в соответствующие ячейки в остальных валютах вписываются автоматически. Так же в следующей строке может быть товар, приобретаемый за доллары и т.д.

Важно то, что механизм работает таким образом, что запоминает в какой валюте приобретается товар когда мы вводим его стоимость вручную, и при смене курса вычисляются только значения для остальных валют, так как сама то стоимость товара не изменилась. То есть компрессор как стоил 60 000 рублей, так и стоит, и макрос на основе именно этой ячейки пересчитывает цену в остальных валютах. В таком духе.

Единственное чего мне не хватило для нормальной реализации — возможности отслеживания модификации самой таблицы. А именно — вставки новых строк и столбцов и это так тупо со стороны разработчиков, что не реализованы такие банальные вещи.

Возможно кто то знает как это сделать в exel, может хоть это помогло бы. Хотя бы дало направление для поисков, возможно...

Re: OpenOffice, Calc и события.

Добавлено: 25 сен 2010, 18:56
Busine2009
heaven87
то я добавляю в таблицу новую строку, указываю название устройства и т.д., а потом указываю цену в рублях
это всё вручную делается, т.е. кто-то печатает на клавиатуре?

Re: OpenOffice, Calc и события.

Добавлено: 25 сен 2010, 19:31
Busine2009
heaven87
а где котировки записаны и как ты их меняешь?

Re: OpenOffice, Calc и события.

Добавлено: 25 сен 2010, 19:46
heaven87
Busine2009 писал(а):heaven87
это всё вручную делается, т.е. кто-то печатает на клавиатуре?

Угу, вставляю строку, заполняю все нужные ячейки, как то название, сроки доставки и цену. Цену указываю в какой то конкретной валюте, в которой приобретается техника. Всего доступно три — рубли, доллары и гривны (украинские, если кто не в курсе :) ). Вот значит я указываю цену в рублях, а в долларах и гривнах цена определяется автоматически.

Получается очень удобно и наглядно. На данный момент все отключил и добавил кнопку "пересчитать", макрос в размере сократился в 10 раз, но теперь приходится так же вручную заполнять еще один столбик. В нем указывается за какую валюту приобретается техника. Это надо для того, чтобы при смене курса валюты не терялась цена. То есть чтобы не получалось что я указал цену в 10 000, а после изменения курса валют она превращалась во что то вроде 9 997, 76, потому как независимо от курса стоимость техники в рублях не изменилась и по прежнему составляет 10 000 рублей.
Busine2009 писал(а):heaven87
а где котировки записаны и как ты их меняешь?
Они прям в последнем столбике таблицы и записаны, содержат номер столбика, по которому пользователь вписывал цену (т.е. если цена указывалась в рублях, то там сохранится 3 — номер колонки, если в долларах — 4) Да, знаю, приспособление так себе :) но раньше я этот столбик прятал, когда менял его значения из макроса. То есть одновременно когда я вписывал цену, допустим, в рублях, макрос сохранял номер колонки с рублями в том отдельном столбике.

Re: OpenOffice, Calc и события.

Добавлено: 25 сен 2010, 20:19
Busine2009
heaven87
а чем такой вариант не устраивает?

Re: OpenOffice, Calc и события.

Добавлено: 25 сен 2010, 20:51
heaven87
Busine2009 писал(а):heaven87
а чем такой вариант не устраивает?

Вот так примерно оно сейчас есть.