Страница 8 из 13

Re: Работа с uOpenOffice

СообщениеДобавлено: 04.01.2012 16:58:20
Владимир
Понял, спасиб!

Re: Работа с uOpenOffice

СообщениеДобавлено: 04.01.2012 17:00:35
leo_bsv
давай попробуем реализовать table-column-properties, style:table-row-properties, style:table-cell-properties, там и до AppendCols в полный рост не далеко :?

Добавлено спустя 2 минуты 35 секунд:
самая убийственная это конечно cell-properties... но её можно на десерт оставить, для AppendCols вполне достаточно column-properties.... :)

Re: Работа с uOpenOffice

СообщениеДобавлено: 04.01.2012 19:45:36
Владимир
К тесту готов (это насчет "давай попробуем")

Re: Работа с uOpenOffice

СообщениеДобавлено: 07.01.2012 12:16:14
leo_bsv
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

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 см - док открывается, но изменения ширины не происходит

Re: Работа с uOpenOffice

СообщениеДобавлено: 07.01.2012 19:10:04
leo_bsv
Владимир писал(а):Пытаюсь установить ширину 14.5 см - док открывается, но изменения ширины не происходит

там ошибка вместо T.SetColsProperties; нужна строка T.SetTableProperties; :D
плюс ещё если устанавливаешь отступы то ширину устанавливать бессмысленно, или то или это...

Re: Работа с uOpenOffice

СообщениеДобавлено: 07.01.2012 20:24:09
Владимир
leo_bsv писал(а):плюс ещё если устанавливаешь отступы то ширину устанавливать бессмысленно, или то или это...

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

Разрэмил FreeAndNill - работает. Потестю подробнее - отпишу.

Re: Работа с uOpenOffice

СообщениеДобавлено: 07.01.2012 22:21:27
leo_bsv
Владимир писал(а):Вопрос: ширина табл не может превышать ширины листа минус отступы?

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

Добавлено спустя 24 минуты 15 секунд:
класс для свойства Shadow тоже пока не реализован... временно добавлена константа DefoultTableShadow

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. пока все нравится!

Re: Работа с uOpenOffice

СообщениеДобавлено: 09.01.2012 23:29:33
leo_bsv
19 ревизия
колонки и строки распаковываются в специальные массивы, реализация обратной операции пока отсутствует
начата реализация классов ячеек и стилей ячеек.
также есть ещё куча мелких фиксов всё здесь

Re: Работа с uOpenOffice

СообщениеДобавлено: 10.01.2012 15:32:08
Владимир
leo_bsv писал(а):также есть ещё куча мелких фиксов

Ок, посмотрю.

Re: Работа с uOpenOffice

СообщениеДобавлено: 11.01.2012 03:42:23
leo_bsv
Описан тип TOdtTableCell, описывается жирный тип TOdtTableCellProperties...
20 ревизия + отличия 20 от 19

Добавлено спустя 23 часа 16 минут 10 секунд:
продолжается описание типов... 21 ревизия + изменения

Re: Работа с uOpenOffice

СообщениеДобавлено: 15.01.2012 20:06:29
Владимир
Уважаемый leo_bsv!
Вопрос как спецу по OpenOffice - как сделать ReadOnly=True для документа? Чтобы не могли редактировать документ после создания из шаблона? Обыскался - не нашел.

Re: Работа с uOpenOffice

СообщениеДобавлено: 15.01.2012 20:55:07
v-t-l
Код: Выделить всё
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">

Re: Работа с uOpenOffice

СообщениеДобавлено: 16.01.2012 08:07:45
Владимир
Спасибо, буду пробовать.

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

Класс! В рамках проекта uOpenOffice очень удобно получилось - ставим пароль на редактирование на документ шаблона - из софта заполняем, открываем и все - редактировать только по паролю.