Работа с uOpenOffice

Библиотеки для работы с офисными пакетами (OpenOffice, MS Office и т.п.)

Модератор: Модераторы

Re: Работа с uOpenOffice

Сообщение Владимир » 04.01.2012 16:58:20

Понял, спасиб!
Владимир
постоялец
 
Сообщения: 316
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Работа с uOpenOffice

Сообщение leo_bsv » 04.01.2012 17:00:35

давай попробуем реализовать table-column-properties, style:table-row-properties, style:table-cell-properties, там и до AppendCols в полный рост не далеко :?

Добавлено спустя 2 минуты 35 секунд:
самая убийственная это конечно cell-properties... но её можно на десерт оставить, для AppendCols вполне достаточно column-properties.... :)
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: Работа с uOpenOffice

Сообщение Владимир » 04.01.2012 19:45:36

К тесту готов (это насчет "давай попробуем")
Владимир
постоялец
 
Сообщения: 316
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Работа с uOpenOffice

Сообщение leo_bsv » 07.01.2012 12:16:14

18 ревизия
переработано свойство Table.Properties - объявлено как класс
Код: Выделить всё
var ODT: tOdt;
    T: TOdtTable;
    P: TOdtTableProperties;
    sz: TSizes = (Value: 0; Measure: mCm);
begin
   ODT:=TOdt.Create;
   ODT.LoadTemplate(FNE.Text);
   // Настроим свойства таблицы
   T:=ODT.GetTable('Таблица1');

   // установка отступов "вручную"
   // в этом случае ООо3.2 сам пересчитывает ширину таблицы
   T.Properties.Align:=taMargins;
   sz.Measure:=mCm;
   sz.Value:=1;
   T.Properties.MarginLeft:=sz;
   sz.Value:=2;
   T.Properties.MarginRight:=sz;
   sz.Value:=1.5;
   T.Properties.MarginTop:=sz;
   sz.Value:=2.5;
   T.Properties.MarginBottom:=sz;

   // установка относительной ширины таблицы
   // работает только при Align=taCenter,taLeft,taRight
   // при этом ООо3.2 сам пропорционально пересчитывает ширину колонок
{
   T.Properties.Align:=taCenter; // без этого свойства RelWidth не работает
   sz.Value:=70;
   sz.Measure:=mPercent;
   T.Properties.RelWidth:=sz;
}

   // установка абсолютной ширины таблицы
   //работает только при Align=taCenter,taLeft,taRight
   //ООо3.2 не пересчитывает ширину колонок
{
   T.Properties.Align:=taRight; // без этого свойства Width не работает
   sz.Measure:=mCm;
   sz.Value:=14.5;
   T.Properties.Width:=sz;
}
   T.SetTableProperties; // для записи внесённых изменений в хмл
   ODT.ShowDocument;
   ODT.Destroy;

в разработке классы TOdtTableColumns, TOdtTableColumnProperties, TOdtTableColsProperties
Последний раз редактировалось leo_bsv 07.01.2012 19:10:33, всего редактировалось 1 раз.
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: Работа с uOpenOffice

Сообщение Владимир » 07.01.2012 15:18:25

leo_bsv писал(а):переработано свойство Table.Properties - объявлено как класс

С рождеством!
Сделал шаблон с таблицей 2 столбца и 2 строки шириной около 7 см.
Запускаю - получаю (дважды) Message Prop=2, Cols=2, ActStyleNames=2, т.е. таблицу читает, затем валится на FreeAndNill(P) - P не определена? Заремил. Далее
Код: Выделить всё
Table.Properties.Align:=taMargins;
   sz.Measure:=mCm;
   sz.Value:=1;
   Table.Properties.MarginLeft:=sz;
   sz.Value:=2;
   Table.Properties.MarginRight:=sz;
   sz.Value:=1.5;
   Table.Properties.MarginTop:=sz;
   sz.Value:=2.5;
   Table.Properties.MarginBottom:=sz; Table.Properties.Align:=taRight;
   sz.Measure:=mCm;
   sz.Value:=14.5;
   Table.Properties.Width:=sz;
   Table.SetColsProperties;

Пытаюсь установить ширину 14.5 см - док открывается, но изменения ширины не происходит
Владимир
постоялец
 
Сообщения: 316
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Работа с uOpenOffice

Сообщение leo_bsv » 07.01.2012 19:10:04

Владимир писал(а):Пытаюсь установить ширину 14.5 см - док открывается, но изменения ширины не происходит

там ошибка вместо T.SetColsProperties; нужна строка T.SetTableProperties; :D
плюс ещё если устанавливаешь отступы то ширину устанавливать бессмысленно, или то или это...
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: Работа с uOpenOffice

Сообщение Владимир » 07.01.2012 20:24:09

leo_bsv писал(а):плюс ещё если устанавливаешь отступы то ширину устанавливать бессмысленно, или то или это...

Вопрос: ширина табл не может превышать ширины листа минус отступы?
leo_bsv писал(а):нужна строка T.SetTableProperties;

Разрэмил FreeAndNill - работает. Потестю подробнее - отпишу.
Владимир
постоялец
 
Сообщения: 316
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Работа с uOpenOffice

Сообщение leo_bsv » 07.01.2012 22:21:27

Владимир писал(а):Вопрос: ширина табл не может превышать ширины листа минус отступы?

ширина таблицы может быть шире чем по-умолчанию, тогда она рискует вылезти за границы области печати...
различные комбинации этих свойств работают по-разному, было бы не плохо описать все возможные комбинации Align, Margin, и Width.
например
Align=left, MarginLeft... и Width - даёт нужный результат
а Align=right, MarginRight... и Width - не даёт...
при этом вертикальные отступы работают всегда, не зависимо от Aligh и Width.

Добавлено спустя 24 минуты 15 секунд:
класс для свойства Shadow тоже пока не реализован... временно добавлена константа DefoultTableShadow
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: Работа с uOpenOffice

Сообщение Владимир » 08.01.2012 10:08:30

leo_bsv писал(а):описать все возможные комбинации Align, Margin, и Width.

Установка ширины вручную
Align MarginLeft MarginRight результат
taLeft_____Ok______X_______Ok (установка заданной ширины)
taRight_____X______X_______Ok (установка заданной ширины)
taCenter____X______X_______Ok (установка заданной ширины)
taMargins___X______X_______OK (автовыравние по ширине листа)

т.е. MarginRight получается в данном случае лишним (X - не оказывает влияния на результат).
p.s. пока все нравится!
Владимир
постоялец
 
Сообщения: 316
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Работа с uOpenOffice

Сообщение leo_bsv » 09.01.2012 23:29:33

19 ревизия
колонки и строки распаковываются в специальные массивы, реализация обратной операции пока отсутствует
начата реализация классов ячеек и стилей ячеек.
также есть ещё куча мелких фиксов всё здесь
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: Работа с uOpenOffice

Сообщение Владимир » 10.01.2012 15:32:08

leo_bsv писал(а):также есть ещё куча мелких фиксов

Ок, посмотрю.
Владимир
постоялец
 
Сообщения: 316
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Работа с uOpenOffice

Сообщение leo_bsv » 11.01.2012 03:42:23

Описан тип TOdtTableCell, описывается жирный тип TOdtTableCellProperties...
20 ревизия + отличия 20 от 19

Добавлено спустя 23 часа 16 минут 10 секунд:
продолжается описание типов... 21 ревизия + изменения
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: Работа с uOpenOffice

Сообщение Владимир » 15.01.2012 20:06:29

Уважаемый leo_bsv!
Вопрос как спецу по OpenOffice - как сделать ReadOnly=True для документа? Чтобы не могли редактировать документ после создания из шаблона? Обыскался - не нашел.
Владимир
постоялец
 
Сообщения: 316
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Работа с uOpenOffice

Сообщение v-t-l » 15.01.2012 20:55:07

Код: Выделить всё
soffice -view MyDocument.odt

или выставить на файл права только на чтение.

Добавлено спустя 19 минут:
Еще вариант (проверялось в LibreOffice 3.3.2):
При сохранении документа в диалоге сохранения поставить птицу "Сохранить с паролем", а затем в диалоге "Задать пароль" нажать кнопку "Детали" и поставить птицу "Открыть только для чтения" (там же можно задать пароль на редактирование).

Добавлено спустя 12 минут 28 секунд:
Кстати, за это внутри .odt-файла отвечает строчка
Код: Выделить всё
<config:config-item config:name="LoadReadonly" config:type="boolean">true</config:config-item>
в файле settings.xml, в секции
Код: Выделить всё
<config:config-item-set config:name="ooo:configuration-settings">
v-t-l
энтузиаст
 
Сообщения: 710
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Работа с uOpenOffice

Сообщение Владимир » 16.01.2012 08:07:45

Спасибо, буду пробовать.

Добавлено спустя 2 часа 41 минуту 39 секунд:
v-t-l писал(а):При сохранении документа в диалоге сохранения поставить птицу "Сохранить с паролем", а затем в диалоге "Задать пароль" нажать кнопку "Детали" и поставить птицу "Открыть только для чтения" (там же можно задать пароль на редактирование).

Класс! В рамках проекта uOpenOffice очень удобно получилось - ставим пароль на редактирование на документ шаблона - из софта заполняем, открываем и все - редактировать только по паролю.
Владимир
постоялец
 
Сообщения: 316
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Пред.След.

Вернуться в Office Lib

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru