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

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

29 Июнь 2017, 01:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Сообщений: 2


« Стартовое сообщение: 23 Март 2017, 10:15 »

Добрый день!
В Draw нужно нарисовать таблицу. Для отрисовки таблицы использую макрос из книги Питоньяка. И есть вот какой вопрос.
После выполнения данного макроса на листе появляется таблица. С заливкой. Как изменить цвет заливки у данного объекта?Можно ли это сделать
для объекта TableShape?

Код:
Sub DrawTableShape
Dim oSize as New com.sun.star.awt.Size
Dim oPos as New com.sun.star.awt.Point
Dim oPage
Dim oTable
Dim oCell
Dim oDrawDoc ' Temporary draw document.
oDrawDoc = ThisComponent
' Set a size and table position.
oSize.Width = 6000 : oSize.Height = 6100
oPos.X = 6000 : oPos.Y = 5000
' Get the first draw page
oPage = oDrawDoc.DrawPages.getByIndex(0)
oTable = oDrawDoc.createInstance("com.sun.star.drawing.TableShape")
oPage.add(oTable)
oTable.Model.Rows.InsertByIndex(1,4)
oTable.Model.Columns.InsertByIndex(1,4)
oTable.setSize(oSize)
oTable.setPosition(oPos)
'получаем стиль объекта
oStyle=oTable.Style
'пытаемся изменить цвет заливки
oStyle.FillColor = 16711680
oCell = oTable.Model.getCellByPosition(0,1)
oCell.getText().setString("X")

End Sub

При этом если использовать OCell.FillColor = 16711680 то цвет конкретной ячейки изменится.
Или для формирования таблицы в Draw лучше использовать другой объект?Если да, то какой?
Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 564


« Ответ #1: 23 Март 2017, 11:08 »

Я тоже как-то хотел рисовать в Draw всё макросами (точнее в Impress, но это одно и то же приложение).

Оказалось это геморрой размером с кулак и в десятки(!) раз быстрее нарисовать готовую табличку в Calc/Excel, затем вставить её в Draw/Impress как OLE-связь или экспортировать в граф. файл и вставить (со связью/без), чем вырисоваться километрами кода все хотелки прекрасненького. Короче, геморрой...  Даже просто из Calc экспортировать готовый рисунок макросом проще, чем "рисовать"  макросом в Draw. Подумайте хорошо.   
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
kinnder
Новичок
*
Offline Offline

Сообщений: 2


« Ответ #2: 23 Март 2017, 11:16 »

Да на самом деле все еще веселее. Проект пишется на С# . Часть кода удалось по крупицам собрать из интернета и примеров в SDK. А часть сначала приходится делать методом изучения макросов в самом Draw. Но даже с макросами проблемы возникают.
Записан
Yakov
Администратор
*
Offline Offline

Сообщений: 2 206


WWW
« Ответ #3: 23 Март 2017, 11:52 »

Посмотрите эту тему:
http://forumooo.ru/index.php/topic,2981.15.html

Проблема в том, что API по таблицам в Draw/Impress был не документирован (по крайней мере на момент написания предыдущего поста).
« Последнее редактирование: 23 Март 2017, 12:07 от Yakov » Записан

Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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