powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / OpenOffice Writer как установить/снять обрамление ячеек таблицы.
2 сообщений из 2, страница 1 из 1
OpenOffice Writer как установить/снять обрамление ячеек таблицы.
    #39275392
FoxProg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Зашел в тупик при попытке установить обрамление ячеек таблицы во Врайтере.
Макрос показал
dim args2(12) as new com.sun.star.beans.PropertyValue
args2(0).Name = "OuterBorder.LeftBorder"
args2(0).Value = Array(0,0,0,0)
args2(1).Name = "OuterBorder.LeftDistance"
args2(1).Value = 97
args2(2).Name = "OuterBorder.RightBorder"
args2(2).Value = Array(0,0,0,0)
args2(3).Name = "OuterBorder.RightDistance"
args2(3).Value = 97
args2(4).Name = "OuterBorder.TopBorder"
args2(4).Value = Array(0,0,0,0)
args2(5).Name = "OuterBorder.TopDistance"
args2(5).Value = 97
args2(6).Name = "OuterBorder.BottomBorder"
args2(6).Value = Array(0,0,0,0)
args2(7).Name = "OuterBorder.BottomDistance"
args2(7).Value = 97
args2(8).Name = "InnerBorder.Horizontal"
args2(8).Value = Array(0,0,0,0)
args2(9).Name = "InnerBorder.Vertical"
args2(9).Value = Array(0,0,0,0)
args2(10).Name = "InnerBorder.Flags"
args2(10).Value = 0
args2(11).Name = "InnerBorder.ValidFlags"
args2(11).Value = 127
args2(12).Name = "InnerBorder.DefaultDistance"
args2(12).Value = 0

dispatcher.executeDispatch(document, ".uno:SetBorderStyle", "", 0, args2())
Это для снятия выделения. Тут вместо Array(0,0,0,0) можно подставлять 0 и все отлично работает.
А вот для установки должно быть Array(0,0,2,0) для соответсвующей линии. Проблема в том, что Фокс не может загнать массив в ячейку массива. Решения пока не нашел. Может тут есть знатоки, которые подскажут.
...
Рейтинг: 0 / 0
OpenOffice Writer как установить/снять обрамление ячеек таблицы.
    #39275396
FoxProg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю, что возможно без uno. Для Calca куча примеров в интернете.
Например, несколько передланный для моих нужд пример из http://www.sql.ru/forum/159867/openoffice-org-kak-com-obekt?hl=openoffice прорисовывает только горизонтальные нижнюю и верхнюю линии.

oServiceManager = CREATEOBJECT( "com.sun.star.ServiceManager")
oDesktop = oServiceManager.createInstance("com.sun.star.frame.Desktop")
COMARRAY(oDesktop,10)
DIMENSION args1[1]
args1[1] = oServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
args1[1].Name="Hidden"
args1[1].Value=.F.

oDocument = oDesktop.LoadComponentFromURL("private:factory/scalc","_blank",0,@args1)
oSheet = oDocument.getSheets().getByIndex(0)
*tmp_cell=oSheet.getCellByPosition(2,2) && для одной ячейки
tmp_cell=oSheet.getCellRangeByPosition(2,2, 4,6) && для группы ячеек

oBorder = tmp_cell.Tableborder

* Сначала устанавливаем все линии
oBorderline = oBorder.TopLine
oBorderline.outerlinewidth = 2
oBorderline.innerlinewidth = 0
oBorderline.linedistance = 0
oBorderline.color = RGB(0,0,0)

oBorder.Topline = oBorderline
oBorder.Bottomline = oBorderline
oBorder.Leftline = oBorderline
oBorder.Rightline = oBorderline
oBorder.Horizontalline = oBorderline
oBorder.Verticalline = oBorderLine
oBorder.Distance = 100

tmp_cell.Tableborder = oBorder

SUSPEND && убеждаемся, что они прорисовались

* устанавливаем только верхнюю и нижнюю, остальные стираем
oBorderline1 = oBorder.TopLine
oBorderline1.outerlinewidth = 2
oBorderline1.innerlinewidth = 0
oBorderline1.linedistance = 0
oBorderline1.color = RGB(0,0,0)

oBorderline2 = oBorder.TopLine
oBorderline2.outerlinewidth = 0
oBorderline2.innerlinewidth = 0
oBorderline2.linedistance = 0
oBorderline2.color = RGB(0,0,0)

oBorder.Topline = oBorderline1
oBorder.Bottomline = oBorderline1
oBorder.Leftline = oBorderline2
oBorder.Rightline = oBorderline2
oBorder.Horizontalline = oBorderline2
oBorder.Verticalline = oBorderLine2
oBorder.Distance = 100

tmp_cell.Tableborder = oBorder

Тут все отлично работает. Должно работать и во врайтере, но не могу выйти на аналог tmp_cell. Нужно, чтобы работало для выделенных ячеек, а не ячеек по номерам. Подозреваю, что вначале нужно определить номера выделенных ячеек и их сюда подставить.
Но у врайтера нет Sheet.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / OpenOffice Writer как установить/снять обрамление ячеек таблицы.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]