Работа с uOpenOffice
Модератор: Модераторы
Понял, спасиб!
- leo_bsv
- постоялец
- Сообщения: 276
- Зарегистрирован: 04.08.2010 16:26:10
- Откуда: Йошкар-Ола
- Контактная информация:
давай попробуем реализовать table-column-properties, style:table-row-properties, style:table-cell-properties, там и до AppendCols в полный рост не далеко 
Добавлено спустя 2 минуты 35 секунд:
самая убийственная это конечно cell-properties... но её можно на десерт оставить, для AppendCols вполне достаточно column-properties....
Добавлено спустя 2 минуты 35 секунд:
самая убийственная это конечно cell-properties... но её можно на десерт оставить, для AppendCols вполне достаточно column-properties....
К тесту готов (это насчет "давай попробуем")
- leo_bsv
- постоялец
- Сообщения: 276
- Зарегистрирован: 04.08.2010 16:26:10
- Откуда: Йошкар-Ола
- Контактная информация:
18 ревизия
переработано свойство Table.Properties - объявлено как класс
в разработке классы TOdtTableColumns, TOdtTableColumnProperties, TOdtTableColsProperties
переработано свойство 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 писал(а):переработано свойство 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 см - док открывается, но изменения ширины не происходит
- leo_bsv
- постоялец
- Сообщения: 276
- Зарегистрирован: 04.08.2010 16:26:10
- Откуда: Йошкар-Ола
- Контактная информация:
Владимир писал(а):Пытаюсь установить ширину 14.5 см - док открывается, но изменения ширины не происходит
там ошибка вместо T.SetColsProperties; нужна строка T.SetTableProperties;
плюс ещё если устанавливаешь отступы то ширину устанавливать бессмысленно, или то или это...
leo_bsv писал(а):плюс ещё если устанавливаешь отступы то ширину устанавливать бессмысленно, или то или это...
Вопрос: ширина табл не может превышать ширины листа минус отступы?
leo_bsv писал(а):нужна строка T.SetTableProperties;
Разрэмил FreeAndNill - работает. Потестю подробнее - отпишу.
- leo_bsv
- постоялец
- Сообщения: 276
- Зарегистрирован: 04.08.2010 16:26:10
- Откуда: Йошкар-Ола
- Контактная информация:
Владимир писал(а):Вопрос: ширина табл не может превышать ширины листа минус отступы?
ширина таблицы может быть шире чем по-умолчанию, тогда она рискует вылезти за границы области печати...
различные комбинации этих свойств работают по-разному, было бы не плохо описать все возможные комбинации Align, Margin, и Width.
например
Align=left, MarginLeft... и Width - даёт нужный результат
а Align=right, MarginRight... и Width - не даёт...
при этом вертикальные отступы работают всегда, не зависимо от Aligh и Width.
Добавлено спустя 24 минуты 15 секунд:
класс для свойства Shadow тоже пока не реализован... временно добавлена константа DefoultTableShadow
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. пока все нравится!
- leo_bsv
- постоялец
- Сообщения: 276
- Зарегистрирован: 04.08.2010 16:26:10
- Откуда: Йошкар-Ола
- Контактная информация:
19 ревизия
колонки и строки распаковываются в специальные массивы, реализация обратной операции пока отсутствует
начата реализация классов ячеек и стилей ячеек.
также есть ещё куча мелких фиксов всё здесь
колонки и строки распаковываются в специальные массивы, реализация обратной операции пока отсутствует
начата реализация классов ячеек и стилей ячеек.
также есть ещё куча мелких фиксов всё здесь
leo_bsv писал(а):также есть ещё куча мелких фиксов
Ок, посмотрю.
- leo_bsv
- постоялец
- Сообщения: 276
- Зарегистрирован: 04.08.2010 16:26:10
- Откуда: Йошкар-Ола
- Контактная информация:
Описан тип TOdtTableCell, описывается жирный тип TOdtTableCellProperties...
20 ревизия + отличия 20 от 19
Добавлено спустя 23 часа 16 минут 10 секунд:
продолжается описание типов... 21 ревизия + изменения
20 ревизия + отличия 20 от 19
Добавлено спустя 23 часа 16 минут 10 секунд:
продолжается описание типов... 21 ревизия + изменения
Уважаемый leo_bsv!
Вопрос как спецу по OpenOffice - как сделать ReadOnly=True для документа? Чтобы не могли редактировать документ после создания из шаблона? Обыскался - не нашел.
Вопрос как спецу по OpenOffice - как сделать ReadOnly=True для документа? Чтобы не могли редактировать документ после создания из шаблона? Обыскался - не нашел.
Код: Выделить всё
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>Код: Выделить всё
<config:config-item-set config:name="ooo:configuration-settings">Спасибо, буду пробовать.
Добавлено спустя 2 часа 41 минуту 39 секунд:
Класс! В рамках проекта uOpenOffice очень удобно получилось - ставим пароль на редактирование на документ шаблона - из софта заполняем, открываем и все - редактировать только по паролю.
Добавлено спустя 2 часа 41 минуту 39 секунд:
v-t-l писал(а):При сохранении документа в диалоге сохранения поставить птицу "Сохранить с паролем", а затем в диалоге "Задать пароль" нажать кнопку "Детали" и поставить птицу "Открыть только для чтения" (там же можно задать пароль на редактирование).
Класс! В рамках проекта uOpenOffice очень удобно получилось - ставим пароль на редактирование на документ шаблона - из софта заполняем, открываем и все - редактировать только по паролю.
