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

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

30 Октябрь 2020, 23:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как определить, какие ячейки выделены в текстовой таблице  (Прочитано 377 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 113


« Стартовое сообщение: 6 Октябрь 2020, 16:28 »

Всем доброго дня!
Столкнулся с такой проблемой. Выделил несколько ячеек в текстовой таблице Writer.
Написал такой код:
Код:
Function IsAnythingSelected() As Boolean
Dim oSels 'Все элементы выделения
Dim oSel 'Отдельный элемент выделения
Dim oCursor 'Временный курсор
        Dim oVCurs  'view cursor
        Dim oTable
   
        On Error GoTo ExErrorHandler
IsAnythingSelected = False
If IsNull(ThisComponent) Then Exit Function
oSels = ThisComponent.getCurrentSelection()
If IsNull(oSels) Then Exit Function

oVCurs = ThisComponent.CurrentController.getViewCursor() 
  If NOT IsEmpty(oVCurs.TextTable) Then
If oSels.getCount() = 0 Then Exit Function
oSel = oSels.getByIndex(0)
oCursor = oSel.getText().CreateTextCursorByRange(oSel)
If Not oCursor.IsCollapsed() Then IsAnythingSelected = True
  EndIf
Exit Function
ExErrorHandler:
  IsAnythingSelected = False
  MsgBox "Ошибка работы функции IsAnythingSelected." + CHR$(10) + Error(), MB_ICONSTOP   
  On Error GoTo 0End Function
На операторе If oSels.getCount() = 0 Then Exit Function вылет.
Пишет свойство или метод getCount не найдены.
Код написал на основе кода Питоньяка.
Где я не прав?
Спасибо.
Записан
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 113


« Ответ #1: 6 Октябрь 2020, 16:30 »

В конце кода естественно
Код:
On Error GoTo 0
End Function
Записан
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 113


« Ответ #2: 6 Октябрь 2020, 16:32 »

И еще, мне нужно не только определить, что выделены ячейки таблицы, но и понять, какие именно.
Записан
sokol92
Форумчанин
***
Offline Offline

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


WWW
« Ответ #3: 6 Октябрь 2020, 17:25 »

Похожая тема от наших уважаемых гуру.
Если (и только если) выделены ячейки таблицы, то объект выделения должен поддерживать интерфейс com.sun.star.text.XTextTableCursor.
У этого интерфейса есть метод getRangeName, который вернет адрес выделения, например, A1:B1
Записан

Владимир.
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 113


« Ответ #4: 6 Октябрь 2020, 17:49 »

Не понимаю, где я туплю.
Написал такой код:
Код:
oSels = ThisComponent.getCurrentSelection()
If oSels.SupportsService("com.sun.star.text.XTextTableCursor") Then
     cellNames = oSels.RangeName
EndIf
Выделил ячейку, но внутрь оператора If не попадаю.
Записан
sokol92
Форумчанин
***
Offline Offline

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


WWW
« Ответ #5: 6 Октябрь 2020, 17:59 »

Попробуйте так:
Код:
If HasUnoInterfaces(oSels, "com.sun.star.text.XTextTableCursor") Then
Записан

Владимир.
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 113


« Ответ #6: 6 Октябрь 2020, 18:09 »

Да. Это работает. Огромное спасибо.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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