Построение таблицы в LibeOffice

Автор Massaraksh7, 12 октября 2024, 01:49

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

sokol92

#30
По поводу границ ячеек.
Я использую следующие два свойства структуры BorderLine2 для построения границ ячеек.
Пример:
lBorder.LineStyle=com.sun.star.table.BorderLineStyle.THICKTHIN_LARGEGAP
lBorder.LineWidth=2     ' HairLine (0.05pt)
Еще пример:
' Sets the border of cells in oRange to Hairline width.
Sub RangeBorderHairline(ByVal oRange As Object)
  Dim tBorder, lBorder
 
  tBorder=oRange.TableBorder2
  With tBorder
    lBorder=.TopLIne
    mri lBorder
    lBorder.LineStyle=com.sun.star.table.BorderLineStyle.SOLID
    lBorder.LineWidth=2     ' HairLine (0.05pt)
   
    .TopLine=lBorder        : .IsTopLineValid=True   
    .BottomLine=lBorder     : .IsBottomLineValid=True
    .LeftLine=lBorder       : .IsLeftLineValid=True   
    .RightLine=lBorder      : .IsRightLineValid=True           
    .HorizontalLine=lBorder : .IsHorizontalLineValid=True   
    .VerticalLine=lBorder   : .IsVerticalLineValid=True           
    .IsDistanceValid=False
  End With 
  oRange.TableBorder2=tBorder
End Sub

Sub SelectionBorderHairline
  RangeBorderHairline ThisComponent.CurrentSelection
End Sub
Владимир.

Massaraksh7

Цитата: sokol92 от 15 октября 2024, 14:28Пропустил такое интересное обсуждение. Можно поподробнее?
Да нет. Я потом вспомнил, что сам записываю их через Val(). И забыл.
'---Запись массива данных, апостроф ' признак текстовой строки, числа с точкой 1.234
Sub setdata(cov)
r1 = CInt(cov(1))
c1 = CInt(cov(2))
r2 = CInt(cov(3))
c2 = CInt(cov(4))
Redim data(r2-r1,c2-c1)
for i=r1 to r2
for j=c1 to c2
s = oInputStream.readLine()
s1 = Mid(s,1,1)
if s1="'" then
    data(i-r1,j-c1) = Mid(s,2,Len(s)-1)
else
    if trim(s)="" then
      data(i-r1,j-c1) = ""
    else
      data(i-r1,j-c1) = Val(s)
    end if
end if
next j
next i
sheet.getCellRangeByPosition(c1-1,r1-1,c2-1,r2-1).setDataArray(data)
Answer("OK")
end sub

sokol92

Здесь речь идет о функциях языка Basic (не о Calc).
В LibreOffice Basic и VBA некоторые функции преобразования учитывают локализацию (для VBA - региональные настройки Windows), некоторые нет.
Несколько примеров.
Локализованы:
  • Функции преобразования типа С* (СDbl, CLng, ...), кроме CBool.
  • Функция Format (FormatDateTime, ... при VBASupport 1) в части возвращаемого результата. Символы форматирования не локализованы.
Не локализованы:
  • CBool
  • Str, Val
Владимир.

Massaraksh7


mikekaganski

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

sokol92

C Val надо быть аккуратным.
Что покажет оператор (решать без доски LO ):
Msgbox Val(123.4)?
Владимир.

Massaraksh7

Цитата: mikekaganski от 16 октября 2024, 18:37Что, как раз, документировано.
Да знаю я. И читал. И знал, когда делал. Но потом забыл, по какой причине у меня точка в массиве. Теперь вспомнил. Но, по другому сделать не получается. Любые другие решения (CDbl, CLng) удлиняют код, и увеличивают время обработки в режиме интерпретатора.
Цитата: sokol92 от 16 октября 2024, 19:18Что покажет оператор (решать без доски LO ):
Не глядя - не знаю. Я работаю со строками в данном случае. И стараюсь решать проблемы по мере поступления.