русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Використання шаблону для формування документів


Дата додавання: 2014-10-07; переглядів: 841.


 

Шаблони є самим зручним способом формування документів Word. Розроблювач може створити багато шаблонів, у яких задати розташування текстових блоків і їх форматування. Шаблон може містити як постійні елементи, так і елементи-змінні, на місце яких буде підставлятися інший текст при формуванні документа. Такі змінні повинні мати якісь унікальні в межах шаблону імена (наприклад: #fam#, #imya#, #otch# і т.п.).

Програма може знайти ці імена змінних і замінити їх на зазначений текст за допомогою коду:

 

w.selection.find.text:=ім'я_змінної;

w.selection.find.replacement.text:=нове_значення;

w.selection.find.execute(replace:=2);

 

Наприклад, нехай у шаблоні anketa.dot з теки shablon є змінні: #fam#, #imya#, #otch#, #datar#. Необхідно на їхнє місце підставити значення Іванов, Іван, Іванович.

 

//запускаємо Word

w:=createoleobject('word.application');

//створюємо новий документ на підставі шаблону

w.documents.add(extractfilepath(application.Exename)+'shablon\anketa.dot');

//заміняємо #fam# на Іванов

w.selection.find.text:=’#fam#’;

w.selection.find.replacement.text:=’Іванов’;

w.selection.find.execute(replace:=2);

//заміняємо #imya# на Іван

w.selection.find.text:=’#imya#’;

w.selection.find.replacement.text:=’Іван’;

w.selection.find.execute(replace:=2);

//заміняємо #otch# на Іванович

w.selection.find.text:=’#otch#’;

w.selection.find.replacement.text:=’Іванович’;

w.selection.find.execute(replace:=2);

//робимо документ видимим

w.visible:=true;

 

Замість змінних у шаблон можна підставляти не тільки конкретні значення, а й уміст полів БД. Такий підхід дозволяє створювати звіти по БД із експортом їх в Word.

Приклад. Нехай у шаблоні anketa.dot з теки shablon є змінні: #fam#, #imya#, #otch#, #datar#. Необхідно на їхнє місце підставити значення полів fam, tab, otch, datar з поточного запису таблиці БД. Для цього напишемо код:

 

//запускаємо Word

w:=createoleobject('word.application');

//створюємо новий документ на підставі шаблону

w.documents.add(extractfilepath(application.Exename)+'shablon\anketa.dot');

//заміняємо #fam# на поле fam

w.selection.find.text:=’#fam#’;

w.selection.find.replacement.text:=ztable1.fieldbyname(‘fam’).asstring;

w.selection.find.execute(replace:=2);

//заміняємо #imya# на поле imya

w.selection.find.text:=’#imya#’;

w.selection.find.replacement.text:=ztable1.fieldbyname(‘imya’).asstring;

w.selection.find.execute(replace:=2);

//заміняємо #otch# на поле otch

w.selection.find.text:=’#otch#’;

w.selection.find.replacement.text:=ztable1.fieldbyname(‘otch’).asstring;

w.selection.find.execute(replace:=2);

//заміняємо #datar# на поле datar

w.selection.find.text:=’#datar#’;

w.selection.find.replacement.text:=ztable1.fieldbyname(‘datar’).asstring;

w.selection.find.execute(replace:=2);

//робимо документ видимим

w.visible:=true;

 

Приклад. Нехай за допомогою компонента ZQuery1 на формі відібрані потрібні записи (виконана фільтрація). Необхідно для кожного знайденого запису сформувати свій окремий файл на підставі шаблону anketa.dot.

 

//запускаємо Word

w:=createoleobject('word.application');

//стаємо на перший знайдений запис

zquery1.first;.

//у циклі проходимо по всіх знайдених записах

while not zquery1.eof do

begin

//створюємо новий документ на підставі шаблону

w.documents.add(extractfilepath(application.Exename)+'shablon\anketa.dot');

//заміняємо #fam# на поле fam

w.selection.find.text:=’#fam#’;

w.selection.find.replacement.text:=zquery1.fieldbyname(‘fam’).asstring;

w.selection.find.execute(replace:=2);

//заміняємо #imya# на поле imya

w.selection.find.text:=’#imya#’;

w.selection.find.replacement.text:=zquery1.fieldbyname(‘imya’).asstring;

w.selection.find.execute(replace:=2);

//заміняємо #otch# на поле otch

w.selection.find.text:=’#otch#’;

w.selection.find.replacement.text:=zquery1.fieldbyname(‘otch’).asstring;

w.selection.find.execute(replace:=2);

//заміняємо #datar# на поле datar

w.selection.find.text:=’#datar#’;

w.selection.find.replacement.text:=zquery1.fieldbyname(‘datar’).asstring;

w.selection.find.execute(replace:=2);

//переходимо на наступний знайдений запис

zquery1.next;

end;

//робимо документ видимим

w.visible:=true;

 

Робота з таблицями

 

Розглянутий вище спосіб роботи із шаблонами підходить для формування звіту по одному запису: в одному документі відображаються дані про окремий запис із БД.

Частіше доводиться формувати звіти по набору записів. У цьому випадку такий набір відображається у вигляді таблиці, у кожному рядку якої знаходиться інформація про окремий запис.

Формування такого документа також можна виконувати за допомогою шаблону, у якому потрібно підготувати тільки шапку таблиці, задавши потрібну ширину стовпчиків, вирівнювання й формат символів.

Для роботи з таблицею є багато методів і властивостей. Для формування звітів розглянемо деякі з них.

Для звертання до таблиці використовують запис:

 

w.activedocument.tables.item(i)

 

де i – номер таблиці (нумерація починається з 1)

Звернутися до рядка таблиці можна за допомогою запису:

 

w.activedocument.tables.item(i).rows.item(j)

 

де i – номер таблиці (нумерація починається з 1)

j – номер рядка (нумерація з 1).

Звернутися до стовпчика таблиці можна за допомогою запису:

 

w.activedocument.tables.item(i).columns.item(j)

 

де i – номер таблиці (нумерація починається з 1;)

j – номер стовпчика (нумерація з 1).

Звернутися до чарунки таблиці можна за допомогою запису:

 

w.activedocument.tables.item(i).cell(m,n)

 

де i – номер таблиці (нумерація починається з 1)

m,n – номер рядка й стовпчика (нумерація з 1).

Звернутися до тексту чарунки таблиці можна за допомогою запису:

 

w.activedocument.tables.item(i).cell(m,n).range.text

 

Для додавання рядка в кінець таблиці використовують команду:

 

w.activedocument.tables.item(i).rows.add;

 

Довідатися кількість рядків або стовпців у таблиці можна за допомогою властивості:

 

w.activedocument.tables.item(i).rows.count

w.activedocument.tables.item(i).columns.count

 

На підставі цих властивостей і методів можна сформувати табличний документ.

Приклад. Нехай у теці shablon є шаблон spisok.dot . Шаблон має шапку таблиці із заголовками стовпців: № з/п, Прізвище, Ім'я, По батькові, Дата народження. Необхідно в документі відобразити дані з таблиці БД. Для цього напишемо код:

 

//опишемо змінну для зберігання номера рядка

var r:integer;

begin

//запускаємо word

w:=createoleobject('word.application');

//створюємо новий документ на підставі шаблону

w.documents.add(extractfilepath(application.exename)+'shablon\spisok.dot');

//стаємо на перший запис у таблиці

ztable1.first;

//спочатку таблиця має один рядок (шапку)

r:=1;

//у циклі проходимо по всіх записах таблиці

while not ztable1.eof do

begin

//додаємо в кінець таблиці рядок

w.activedocument.tables.item(1).rows.add;

//збільшуємо кількість рядків у таблиці

r:=r+1;

//у 1 чарунку нового рядка записуємо значення № з/п

w.activedocument.tables.item(1).cell(r,1).range.text:=inttostr(r-1);

//у 2 чарунку нового рядка записуємо значення поля fam

w.activedocument.tables.item(1).cell(r,2).range.text:=ztable1.fieldbyname('fam').asstring;

//у 3 чарунку нового рядка записуємо значення поля imya

w.activedocument.tables.item(1).cell(r,3).range.text:=ztable1.fieldbyname('imya').asstring;

//у 4 чарунку нового рядка записуємо значення поля otch

w.activedocument.tables.item(12).cell(r,4).range.text:=ztable1.fieldbyname('otch').asstring;

//у 5 чарунку нового рядка записуємо значення поля datar

w.activedocument.tables.item(1).cell(r,5).range.text:=ztable1.fieldbyname('datar').asstring;

//переходимо на наступний запис

ztable1.next;

end;

//робимо вікно word видимим для перегляду результату

w.visible:=true;

end;

 

Форматування таблиці

 

Таблицю можна відформатувати, задавши їй тип, товщину й колір лінії границі, а також колір тла й параметри шрифту.

Кожний елемент таблиці: сама таблиці, рядок, стовпчик, чарунка мають ряд властивостей для форматування:

  • borders. outsidelinewidth (2, 4, 6, 8,12, 18, 24, 36, 48) – ширина зовнішньої границі;
  • borders.outsidecolorindex (0-16) – колір лінії зовнішньої границі;
  • borders.outsidelinestyle (0-24) – тип лінії зовнішньої границі;
  • borders. insidelinewidth (2, 4, 6, 8,12, 18, 24, 36, 48) – ширина внутрішньої границі;
  • borders.insidecolorindex (0-16) – колір лінії внутрішньої границі;
  • borders.insidelinestyle (0-24) – тип лінії внутрішньої границі;
  • shading.backgroundpatterncolorindex (0-16) – колір тла.

Приклад. Нехай на сторінці документа є таблиця. У кінець таблиці потрібно додати ще один рядок. У передостанній чарунці цього рядка потрібно відобразити текст «Усього», а в останній чарунці відобразити суму окладів по підприємству. Сума окладів розраховується за допомогою компонента ZQuery1.

При цьому доданий рядок обрамляється товстою суцільною лінією синього кольору й заливається сірим кольором.

 

//змінні для зберігання кількості рядків і стовпчиків

var c,r:integer;

. . .

//формуємо запит на розрахунки суми окладів

zquery1.active:=false;

zquery1.sql.clear;

zquery1.sql.add('select sum(oklad) as summa from sotr');

//виконуємо запит, відбираємо потрібну суму

zquery1.active:=true;

//додаємо в кінець таблиці новий рядок

w.activedocument.tables.item(1).rows.add;

//у змінні записуємо кількість рядків й стовпчиків таблиці

r:=w.activedocument.tables.item(1).rows.count;

c:=w.activedocument.tables.item(1).columns.count;

//задаємо товщину лінії останнього рядка

w.activedocument.tables.item(1).rows.item(r).borders.outsidelinewidth:=12;

//задаємо колір лінії останнього рядка

w.activedocument.tables.item(1).rows.item(r).borders.outsidecolorindex:=2;

//задаємо колір тла останнього рядка

w.activedocument.tables.item(1).rows.item(r).shading.backgroundpatterncolorindex:=16;

// у передостанній чарунці останнього рядка виводимо текст

w.activedocument.tables.item(1).cell(r,c-1).range.text:='Усього';

//в останній чарунці останнього рядка виводимо знайдену суму

w.activedocument.tables.item(1).cell(r,c).range.text:=zquery1.fieldbyname('summa').asstring;

 

Приклад. У таблиці парні рядки зафарбувати одним кольором, а непарні іншим (шапку не фарбувати).

 

//описуємо лічильник циклу

var i:integer;

. . .

//цикл починаємо з 2, тому що шапку не фарбуємо

for i:=2 to w.activedocument.tables.item(1).rows.count do

//якщо індекс рядка непарний

if i mod 2 <>0 then

//фарбуємо рядок сірим кольором

w.activedocument.tables.item(1).rows.item(i).shading.backgroundpatterncolorindex:=16

//якщо ж індекс рядка парний

else

//фарбуємо рядок синім кольором

w.activedocument.tables.item(1).rows.item(i).shading.backgroundpatterncolorindex:=2;

 


 


<== попередня лекція | наступна лекція ==>
Робота з документами в Microsoft Word | Вставка малюнків і їх форматування


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн