[Решено] Что-то не так со свойством Calc: AnnotationShape.TextAutoGrowHeight

Автор eeigor, 11 июня 2020, 20:31

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

eeigor

А как у вас?
У меня на Ubuntu Linux 18.04 LTS : LibreOffice 6.4.4.2 не работает подстройка фигуры под высоту комментария к ячейке при создании комментария через интерфейс пользователя, и это некрасиво выглядит. На скриншоте: после установке флажка "Подогнать ширину по тексту" (флажок "Подогнать высоту по тексту" уже установлен) ширина фигуры подгоняется под текст (текст будет занимать меньше строк, чем изначально), а высота фигуры не обновляется.

Пришлось "поставить заплатку"... (но это неудобно).

Свойство <AnnotationShape.TextAutoGrowHeight [Default is True]> работает не так, как ожидалось. Поэтому вставляем комментарий с пробелом (создать просто пустой комментарий нельзя) вместо текста, а полное значение вводим после установки свойства <AnnotationShape.TextAutoGrowWidth:=True [Default is False]>.

Так работает, а вот через интерфейс пользователя нет. Или что я делаю не так? Под Windows 10 такая же фигня.

' Creates a new annotation.
' oCell - the cell object that will contain the annotation.
' sText - contains the annotation text.
Sub CreateAnnot(oCell As Object, sText As String)
Dim oAnnot As Object

With ThisComponent.Sheets(oCell.CellAddress.Sheet).Annotations
.insertNew(oCell.CellAddress, " ")  'just passing a space instead of sText
oAnnot = .getByIndex(.Count - 1)  'last added item
With oAnnot.AnnotationShape
.TextAutoGrowWidth = True
.Text.String = sText
End With
End With
End Sub
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

mikekaganski

С уважением,
Михаил Каганский

eeigor

#2
Нет, я только предположил (возможно, неточно выразился).
Создайте многострочный комментарий у себя, выйдите из режима редактирования.
Потом попробуйте изменить его так, чтобы он стал однострочным. Высота фигуры должна равняться одной строке. У меня этого не происходит почему-то, как описал выше...
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

#3
В тексте макроса выше допущена ошибка в ссылке на добавленное примечание: оказалось, что только что добавленное примечание может не быть последним в коллекции примечаний (зависит от расположения ячейки на листе). Но всё просто...
Sub CreateAnnot(oCell As Object, sText As String)
' At first pass a space instead of sText.
ThisComponent.Sheets(oCell.CellAddress.Sheet).Annotations.insertNew(oCell.CellAddress, " ")
With oCell.Annotation.AnnotationShape
' On edit, the auto grow feature will not grow the objects wider than the value of TextMaximumFrameWidth property.
.TextMaximumFrameWidth = 24000
.TextAutoGrowWidth = True
.String = sText
End With
End Sub


В итоге примечание ложится в одну строку, без переноса. Свойство "TextMaximumFrameWidth" позволяет задать минимальный размер, который учитывается.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community