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

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

16 Июнь 2019, 11:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Сообщений: 4


« Стартовое сообщение: 12 Октябрь 2018, 10:58 »

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

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

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

И где можно посмотреть структуру объектов и методов Calc?
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #1: 12 Октябрь 2018, 11:10 »

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

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


* MRI в работе.png (33.56 Кб, 706x570 - просмотрено 22 раз.)
Записан

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

Сообщений: 4


« Ответ #2: 12 Октябрь 2018, 15:05 »

Спасибо)

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

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
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #3: 12 Октябрь 2018, 15:24 »

Да, можно и так. При условии, что выделена одна ячейка или один диапазон. Но если зажмёшь Ctrl и выделишь несколько диапазонов, то этот код даст ошибку - .getCurrentSelection() не сможет выполнить .getCellByPosition(0, 0), там будет массив диапазонов, а у массива такого метода нет  Смеющийся
Записан

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

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 404


« Ответ #4: 12 Октябрь 2018, 15:27 »

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

А ещё сбой будет, если выделен объект.
Записан

С уважением,
Михаил Каганский
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #5: 12 Октябрь 2018, 15:36 »

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

А если не секрет, зачем тебе активная ячейка? Я так понимаю, это печка, от которой начнет плясать какой-то хитрый алгоритм? А что он будет делать?
Записан

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

Сообщений: 4


« Ответ #6: 13 Октябрь 2018, 07:53 »

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

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #7: 13 Октябрь 2018, 10:43 »

Мне просто нужно ткнуть мышкой в строку таблицы и нажать кнопку чтобы раскидать часть данных этой строки по другим таблицам.
Давайте образец документа с пояснениями. А заодно ваш вариант решения.
Записан

Andrej23
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #8: 13 Октябрь 2018, 13:38 »

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

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!