Крім тексту і таблиць документи можуть мати деякі графічні елементи – малюнки. Для вставки малюнка в документ використовують метод:
w.activedocument.range.inlineshapes.addpicture(filename:='ім'я_файлу', linktofile:=false, savewithdocument:=true);
Даний метод вставить зазначений малюнок у місце положення курсору. Якщо ж потрібно, щоб малюнок вставився в потрібне місце, то доцільно вставляти малюнок у чарунку таблиці, яка повинна бути попередньо створена у файлі шаблону. Вставка малюнка в чарунку таблиці виконується за допомогою методу:
w.activedocument.tables.item(i).cell(n,m).range.inlineshapes.addpicture(filename:='ім'я_файлу', linktofile:=false, savewithdocument:=true);
Вставлений малюнок має оригінальний розмір. Для завдання потрібного розміру малюнку використовують властивості:
w.activedocument.inlineshapes.item(i).width:=число;
w.activedocument.inlineshapes.item(i).height:=число;
де i – номер малюнка в документі (нумерація з 1).
Приклад. Нехай у таблиці БД є поле foto. Потрібно створити документ на підставі шаблону spisok.dot з теки shablon, у якому у вигляді таблиці видати поля fam, imya, otch і foto.
Для видачі поля foto вміст поля потрібно зберігати на диску у вигляді файлу, а потім файл вставляти в чарунку таблиці.
Код має вигляд:
//r – номер поточного рядка, p – номер малюнка в таблиці
var r,p:integer;
begin
//запускаємо word
w:=createoleobject('word.application');
//створюємо новий документ на основі шаблону
w.documents.add(extractfilepath(application.exename)+'shablon\anketa.dot');
//переходимо на перший запис таблиці
ztable1.first;
//спочатку таблиця має один рядок (шапку)
r:=1;
//спочатку таблиця не має малюнків
p:=0;
//у циклі проходимо по записах таблиці
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;
//перевіряємо наявність даних у полі foto
if ztable1.fieldbyname('foto').asstring <>'' then
//якщо дані в полі є, то
begin
//збільшуємо лічильник малюнків документа
p:=p+1;
//зберігаємо вміст поля у файл із ім'ям pictN
tblobfield(ztable1.fieldbyname('foto')).savetofile(extractfilepath(application.exename)+'pict'+inttostr(p));
//відображаємо вміст файлу у 4 чарунці таблиці
w.activedocument.tables.item(1).cell(r,4).range.inlineshapes.addpicture(filename:=extractfilepath(application.exename)+'pict'+inttostr(p), linktofile:=false, savewithdocument:=true);
//задаємо ширину малюнка
w.activedocument.inlineshapes.item(p).width:=60;
//задаємо висоту малюнка
w.activedocument.inlineshapes.item(p).height:=40;
//видаляємо файл із малюнком
deletefile(extractfilepath(application.exename)+'pict'+inttostr(p));
end;
//переходимо на наступний запис
ztable1.next;
end;
Питання для самоконтролю
1. Опишіть загальні поняття технології COM.
2. Опишіть принципи роботи з COM сервером Microsoft Word. Приведіть приклад коду, який або підключається до запущеного екземпляра Word або запускає його.
3. Опишіть принципи роботи з документами Word.
4. Опишіть принципи формування звіту в Word за допомогою шаблонів.
5. Які властивості й методи об'єкта Word ви знаєте для формування табличних документів?
6. Які властивості використовуються для форматування таблиць Word? Як вставити зображення в документ Word?
Лекція №15, 16
Тема: Операції з COM-сервером Microsoft Excel. Робота із книгами в Microsoft Excel. Робота з аркушами книги в Microsoft Excel. Використання шаблону для формування книги.
Мета: Придбати знання та практичні навички при розробці програми з використанням технологій COM.
Перелік питань, що розглядаються на лекції:
1. Операції з COM-сервером Microsoft Excel
2. Робота із книгами в Microsoft Excel
3. Робота з аркушами книги в Microsoft Excel
4. Використання шаблону для формування книги
5. Формування таблиці
6. Форматування чарунок