Класс определяет интерфейс для работы с шаблонами в формате OpenOffice. Наследует iTemplate.
Подробнее...
Класс определяет интерфейс для работы с шаблонами в формате OpenOffice. Наследует iTemplate.
Описание шаблона:
Шаблон представляет собой обычный документ OpenOffice. Он предназначен для того, чтобы быстро создавать отчеты. Внешне шаблон отличается от того документа, который необходимо сгенерировать только наличием специальных тегов. Эти теги при генерации заменяются на конкретные значения.
Предусмотрено два типа тегов:
1) Тег секции
С помощью него можно размножать строки таблицы. Для этого надо просто записать его в любую ячейку строки.
Формат тега [:имя тега:]
В имени допустимы любые символы.
При вызове exec() с параметром = имени этого тега к таблице будет добавлена еще одна строка. Если в этой строке есть простые теги, то произойдет замена тега на значение, заданное с помощью функции setValue()
2) Простой тег.
С помощью него можно вставлять в документ обычный текст, дату, и т.п.
формат тега <:имя тега:>
При вызове exec() с параметром = имени этого тега, рядом допишется значение, предварительно заданное с помощью функции setValue()
Функция setValue() задает значения для подстановки. Для прстых тегов надо задавать setValue("param",значение для подстановки); после чего надо выполнить exec(имя простого тега)
Для тегов секции setValue(имя простого тега, значение для подстановки); после чего выполнить exec(имя секции);
| bool aOOTemplate::getNodeTags |
( |
QDomNode | node, |
|
|
const QString & | tagname, |
|
|
bool | params ) |
|
protectedvirtual |
Рекурсивная функция поиска и замены тегов на их значения в node. Не заменяет теги, а дописывает значения в конец. Для удаления тэгов используйте функцию cleanUpTags()
- Аргументы
-
| node | - узел, с которого осуществляется поиск. |
| sname | - имя тега для поиска |
- См. также
- cleanUpTags() getNodeTags() insertRowValues() */ void aOOTemplate::searchTags(QDomNode node, const QString &sname ) { QDomNode n = node.lastChild(); while( !n.isNull() ) {
printf("n->name=%s\n",n.nodeName().ascii()); bool res = getNodeTags(n, sname, false); if( res ) { insertRowValues(n); } else { res = getNodeTags(n, sname, true); if(res) { insertTagsValues(n, sname); } else { searchTags(n, sname); } } n = n.previousSibling(); } } /**
Возвращает истину, когда текст ноды содержит тег с заданным именем.
- Аргументы
-
| node | - узел, с которого осуществляется поиск. |
| sname | - имя тега для поиска |
| params | - true, если ищется обычный тег и false, если ищется тег секции |
Переопределяется в aCalcTemplate.
| void aOOTemplate::insertRowValues |
( |
QDomNode | node | ) |
|
|
protected |
Вставляет новую строку в таблицу, заменяет теги на значения, удаляет тег секции из строки таблицы. Выполняет рекурсивный поиск узла, содержащего строку таблицы. У этого узла в OpenOffic'е есть специальное имя, которое распознается функцией. После того, как узел найден, строка строка дублируется, а из текущей строки удаляются все теги секции, чтобы избежать мнократного размножения строк таблицы.
- См. также
- searchTags()
Перекрестные ссылки clearTags().
| void aOOTemplate::insertTagsValues |
( |
QDomNode | node, |
|
|
const QString & | tagName ) |
|
protectedvirtual |
Добавляет к тегу значение параметра tagName. После вызова этой функции тег не исчезает, и к нему можно добавить еще значения, которые добавятся к концу текста, содержащего тег.
- Аргументы
-
| node | - узел к которому добавляется значение |
| sname | - имя тега |
Переопределяется в aCalcTemplate.
Перекрестные ссылки getValue().