
- •1. Основні терміни технології програмування
- •2. Класифікація програмного забезпечення
- •Поняття життєвого циклу розробки програмного забезпечення.
- •Етапи розробки
- •Базові моделі розробки програмних продуктів.
- •Вимоги до методології та технології розробки пп
- •Каскадна модель
- •3. Модель прототипування програмного продукту
- •4. Спіральна модель
- •5. Модель rad
- •6. Модель екстремального програмування (xp)
- •7. Модель msf (Microsoft Solutions Framework)
- •Принципи й види налагодження.
- •Аксіоми налагодження.
- •Автономне налагодження модуля.
- •Комплексне налагодження програмного засобу.
- •Інструменти розробки програмних засобів.
- •Інструментальні середовища розробки й супроводу програмних засобів.
- •Інструментальні середовища програмування.
- •Поняття комп'ютерної технології розробки програмних засобів і її робочі місця.
- •Інструментальні системи технології програмування.
- •Приклад реалізації класу Log.
- •Розробка програмного продукту з двома потоками
- •Визначення крапок контролю програмного продукту.
- •Визначення кількості викликів
- •Визначення ступеня покриття
- •Фундаментальні проблеми профілювання.
- •Причини рефакторингу
- •Підстави для проведення рефакторингу
- •Прийоми рефакторингу
- •Автоматизований рефакторинг
- •1. Принципи повторного використання елементів програм
- •2. Створення шаблонів форм у вигляді файлів
- •3. Використання шаблонів форм у новому проекті
- •4. Збереження шаблонів форм в депозитарії
- •5. Використання шаблонів форм із депозитарію
- •Шаблони класів на мові програмування с#.
- •Приклади шаблонів (класів шаблонів).
- •1. Використання підпрограм в оброблювачах подій
- •2. Звертання до активного компонента не за ім’ям
- •2. Обробка групи компонентів
- •4. Обробка компонентів як масиву
- •5. Сортування даних у компонентах
- •1. Принципи модульного програмування
- •2. Принцип «приховання даних»
- •3. Поняття модуля в Object Pascal
- •4. Структура модульного файлу
- •5. Створення модуля в Object Pascal
- •6. Створення модуля з переліком стандартних діалогів
- •7. Використання текстових констант у модулях
- •8. Створення підпрограм для обробки компонентів
- •1. Поняття dll
- •2. Створення dll бібліотеки в Delphi
- •3. Внесення форм в dll
- •4. Використання dll бібліотеки
- •Питання для самоконтролю
- •Використання регулярних виразів у програмах.
- •1. Призначення зовнішніх компонентів
- •2. Установка й видалення зовнішніх компонентів
- •3. Установка й видалення бібліотек компонентів
- •4. Запуск зовнішніх програм і файлів
- •Питання для самоконтролю
- •1. Загальні принципи технології com
- •2. Робота з com-сервером Microsoft Word
- •Робота з документами в Microsoft Word
- •Використання шаблону для формування документів
- •Робота з таблицями
- •Вставка малюнків і їх форматування
- •1. Операції з Com-Сервером Microsoft Excel
- •Робота із книгами в Microsoft Excel
- •Робота з аркушами книги в Microsoft Excel
- •Використання шаблону для формування книги
- •Формування таблиці
- •6. Форматування чарунок
- •Види довідкових систем
- •Інші засоби підтримки користувача
- •2.Формати довідників
- •3.Створення довідки у форматі html Help
- •4.Створення контекстної довідки
- •5.Інтеграція довідкового файлу в додаток
- •Перелік шаблонів, що породжують
- •Перелік структурних шаблонів
- •Перелік шаблонів поведінки
- •Призначення патерну Singleton
- •Реалізація патерну Singleton
- •Результати застосування патерну Singleton
- •Призначення патерна Observer
- •Постановка проблеми, що вирішується за допомогою патерна
- •Структура патерна Observer
- •Приклад патерна Observer
- •Реалізація патерна Observer
- •Реалізація патерну Observer: до та після
- •Призначення патерну Strategy
- •Опис патерну Strategy
- •Реалізація патерну Strategy
- •Призначення патерна Factory Method
- •Опис патерну Factory Method
- •Реалізація патерна Factory Method
Робота з таблицями
Розглянутий вище спосіб роботи із шаблонами підходить для формування звіту по одному запису: в одному документі відображаються дані про окремий запис із БД.
Частіше доводиться формувати звіти по набору записів. У цьому випадку такий набір відображається у вигляді таблиці, у кожному рядку якої знаходиться інформація про окремий запис.
Формування такого документа також можна виконувати за допомогою шаблону, у якому потрібно підготувати тільки шапку таблиці, задавши потрібну ширину стовпчиків, вирівнювання й формат символів.
Для роботи з таблицею є багато методів і властивостей. Для формування звітів розглянемо деякі з них.
Для звертання до таблиці використовують запис:
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;