Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект_укр.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.07 Mб
Скачать
  1. Використання шаблону для формування документів

Шаблони є самим зручним способом формування документів 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;

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]