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

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

5 Август 2021, 00:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Как получить имя поименованной ячейки?  (Прочитано 1358 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kadet
Форумчанин
***
Offline Offline

Сообщений: 517


« Ответ #58540: 26 Май 2021, 11:57 »

Просто, по поводу перебора у меня есть печальный опыт.
В этом же проекте все размеры проставлены с помощью врезок:
Код:
'**** Создать ТЕКСТОВЫЙ ФРЕЙМ ***************************************************************
Sub DrawTextField(xDoc, index%, Xpoz&, Ypoz&, lState, width, color&, oKegl, iRotAngle, sName$, tText)
Dim xPage as object, xShape as object, oSheet, oRange, oTCursor, oStart, sText, oText
Dim aPosition As New com.sun.star.awt.Point
Dim TheSize As New com.sun.star.awt.Size
Dim aFrameRect As New com.sun.star.awt.Rectangle
Dim oLineDash As New com.sun.star.drawing.LineDash

xPage = xDoc.DrawPages(index)
If IsNumeric(tText) Then
oSheet = xDoc.sheets(index)
oRange = oSheet.getCellByPosition(100,0)
oRange.NumberFormat = getNumberFormat(xDoc, "# ##0;[RED]-# ##0")
oSheet.getCellByPosition(100,0).Value = tText
sText = oSheet.getCellByPosition(100,0).String
oSheet.getCellByPosition(100,0).String = ""
Else
sText = tText
End If
' Первая линия ********************************
xShape = xDoc.createInstance("com.sun.star.drawing.TextShape")
xShape.LineColor = color
xShape.LineWidth = width
aPosition.X = Xpoz
aPosition.Y = Ypoz
xShape.setPosition(aPosition)
TheSize.width = 100
TheSize.height=100
xShape.setSize(TheSize)
aFrameRect.X = Xpoz
aFrameRect.Y = Ypoz
aFrameRect.width = 100
aFrameRect.height=100
xShape.FrameRect = aFrameRect
' xShape.FillColor = RGB(200, 200, 200)
' xShape.LineTransparence = 0
xShape.FillTransparence = 100
' xShape.LayerID = 0

If sName="" Then
xShape.Name = "Врезка"
Else
xShape.Name = sName
End If
xShape.RotateAngle = iRotAngle
xShape.CornerRadius = 20
xShape.LineStyle = lState

xShape.TextAutoGrowHeight = True
xShape.TextAutoGrowWidth = True
xShape.TextContourFrame = True

xPage.add(xShape)
oText = xShape.getText()
oTCursor = oText.createTextCursor()
oStart = oText.getStart() 'Курсор в начало текста, от него и пляшем
oStart.CharHeight = oKegl

' xShape.TextUpperDistance = 100
xShape.TextLeftDistance = 100
xShape.TextRightDistance = 100
' xShape.TextLowerDistance = 100
' xShape.LineEndCenter = True
xShape.TextHorizontalAdjust = 3
xShape.TextVerticalAdjust = 3
xShape.ParaAdjust = 3

' oStart.ParaTopMargin=100
oStart.ParaLeftMargin=100
oStart.ParaRightMargin=100
' oStart.ParaBottomMargin=100
oStart.ParaAdjust=3
oStart.ParaIsCharacterDistance=True
oStart.ParaIsForbiddenRules=True

oText.insertString(oStart, sText, False )
' xShape.String = sText

End Sub


Все эти врезки тоже поименованы. Однако, в отличие от ячеек calc достучавться к ним по имени нет никакой возможности. getByName - не работает, хотя имена их прекрасно получаются по oTextField.Name. При этом по getByIndex прекрасно достукивается. Поэтому приходится искать перебором.
Если это одиночный перебор, то куда ни шло. А вот когда включаешь сохранение всего проекта, и программа начинает перебирать все размеры перебором каждой врезки - это нечто.
В общем - долго приходится ждать.
Записан
Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

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