Как в макросе определить строку элемента управления

Автор Abell, 5 мая 2014, 10:40

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

Abell

Доброго времени!
Прошу прощения за ламерский вопрос.
В таблице Calc есть несколько элементов управления "Флажок", все они вызывают один макрос. Макрос обрабатывает две ячейки в одной строке.

Вопрос, как в макросе определить строку таблицы, в которой находится вызывающий элемент?
Или, в общем случае, где найти и как определить все свойства и методы вызывающего макрос элемента?

Заранее спасибо!

P.S. Вариант с перебором всех элементов и обработкой всех строк рассматривал, но получается очень неэффективно :(
P.P.S. Свойства и методы очень удобно было видеть в Delphi - там после точки сразу был список всего, или по Ctrl+Space выпадал, здесь такого нет, и документации никак не найду :(

JohnSUN

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Abell

К сожалению, такого у меня нет. Возможно, другая версия или не знаю где искать, но ничего подобного не нахожу.
У меня OpenOffice 3.2.1

JohnSUN

Это ты про "события листа"? Я не о том, я о параметре oEvent в макросе и о способе посмотреть его состав
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Abell

Спасибо, поизучаю внимательней, о результатах сообщу.

Пока обошелся следующим корявым кодом:

DIM tSheet As Object
rem Задаем начальную строку и количество строк
bRow=4
cRow=65
rem Получаем активный лист
tSheet=ThisComponent.GetCurrentController().GetActiveSheet()
For i=bRow To cRow
If tSheet.GetCellByPosition(1,i).GetString Then
  tSheet.GetCellByPosition(3,i).Value=tSheet.GetCellByPosition(2,i).Value
Else
  tSheet.GetCellByPosition(3,i).Value=0
EndIf
Next

JohnSUN

Кинул бы образец листа - уже нарисовали бы пристойное решение. Впрочем, если решение кажется корявым, но работает, значит не такое уж оно и корявое
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Abell

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

rami

Если я правильно вас понял, должно быть так, как я сделал с 5 по 30 строчку. У вас были "двухэтажные скворечники". Один "этаж" вы отредактировали, а другой все были копия первого элемента.

Abell

Спасибо, я уже тоже исправил :) Так и не нашел в среде разработки инспектора объектов и событий, так что делаю все методом проб и, естественно, ошибок.

Yakov

Цитата: Abell от  6 мая 2014, 05:04Так и не нашел в среде разработки инспектора объектов и событий
Это можно сделать с помощью расширения
http://myooo.ru/content/view/155/99/

Abell

Огромное всем спасибо! Думаю, теперь у меня есть вся необходимая информация и инструменты, так что буду осваивать этот офисный пакет на должном уровне :)

JohnSUN

Ну, вообще-то, все необходимые инструменты для решения этой конкретной задачи были под рукой с самого начала. И макрос для её решения был не обязателен.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Abell

JohnSUN, круто  :o Действительно, не стоило мне так усложнять, уперся в эти красивые флажки  :roll: Буду знать, спасибо :)