Как определить, какие ячейки выделены в текстовой таблице

Автор Борис_С, 6 октября 2020, 16:28

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

Борис_С

Всем доброго дня!
Столкнулся с такой проблемой. Выделил несколько ячеек в текстовой таблице 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 не найдены.
Код написал на основе кода Питоньяка.
Где я не прав?
Спасибо.

Борис_С


Борис_С

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

sokol92

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

Борис_С

Не понимаю, где я туплю.
Написал такой код:

oSels = ThisComponent.getCurrentSelection()
If oSels.SupportsService("com.sun.star.text.XTextTableCursor") Then
     cellNames = oSels.RangeName
EndIf

Выделил ячейку, но внутрь оператора If не попадаю.

sokol92

Владимир.

Борис_С