как считать координаты курсора в calc

Автор Andrej23, 12 октября 2018, 10:58

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

Andrej23

Доброго времени суток!

Подскажите пожалуйста, как определить в макросе текущий столбец и строку в листе калк.

Хочу сделать считалку, чтобы при нажатии мышкой на кнопку происходила обработка строки, в которой сейчас находится курсор.

И где можно посмотреть структуру объектов и методов Calc?

JohnSUN

Добро пожаловать на форум!
Ты про текущую активную ячейку спрашиваешь? Ту, что одна на листе, жирной рамкой обведена? Посмотри здесь

А свойства и методы объектов лучше всего щупать руками с помощью MRI - мало того, что можешь зарываться в дерево всё глубже и глубже, так ещё и все твои передвижения "протоколируются" в виде кода на Basic (или каком другом из поддерживаемых языков программирования)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Andrej23

Спасибо)

Сейчас еще порылся, поискал, нашел что еще вот так можно:

DIM oSel As Object
DIM oCellAddress As Object

oSel = ThisComponent.getCurrentSelection()
oCellAddress = oSel.getCellByPosition(0, 0).getCellAddress()
x = oCellAddress.Column
y = oCellAddress.Row
msgbox ("x = "+x+", y = "+y)

JohnSUN

Да, можно и так. При условии, что выделена одна ячейка или один диапазон. Но если зажмёшь Ctrl и выделишь несколько диапазонов, то этот код даст ошибку - .getCurrentSelection() не сможет выполнить .getCellByPosition(0, 0), там будет массив диапазонов, а у массива такого метода нет  ;D
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

mikekaganski

... и даже если выделен один диапазон, но, например, снизу вверх, то верхняя левая ячейка не будет активной.

А ещё сбой будет, если выделен объект.
С уважением,
Михаил Каганский

JohnSUN

Цитата: mikekaganski от 12 октября 2018, 15:27
... например, снизу вверх, то верхняя левая ячейка не будет активной.
И это поведение отличается в OpenOffice и LibreOffice, и это нужно учитывать при программировании, потому что в другом Calc'е макрос начнет работать неправильно и т.д., и т.п. "Знаем - плавали..." (с)

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

Andrej23

Мне просто нужно ткнуть мышкой в строку таблицы и нажать кнопку чтобы раскидать часть данных этой строки по другим таблицам.
Во втором случае нужно ткнуть в ячейку с текстом [по сути ячейка-таблица] чтобы пересобрать содержимое (привести к нужному формату).
Это для себя, просто чтобы время сэкономить на рутине.

rami

Цитата: Andrej23 от 13 октября 2018, 05:53Мне просто нужно ткнуть мышкой в строку таблицы и нажать кнопку чтобы раскидать часть данных этой строки по другим таблицам.
Давайте образец документа с пояснениями. А заодно ваш вариант решения.

Andrej23

Это будет мой первый макрос в libreoffice basic.
Уже думаю что в 1 случае вообще проще будет cгенерировать не одну строку, а сразу всю вторую таблицу из первой (она будет небольшая).
Да, конечно скину как сделаю.