
- •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
2. Обробка групи компонентів
Звертання до довільного компоненту за його номером
Кожний компонент на формі має порядковий номер (нумерація починається з 0). Для звертання до компонента по його номеру використовують властивість:
tтип_компонента(controls[i])
де i – номер компонента. Наприклад:
tedit(controls[0]) – звертання до першого компонента, який є текстовим полем;
tbutton(controls[3]) – звертання до четвертого компонента, який є кнопкою;
tlistbox(controls[4]) – звертання до п'ятого компонента, який є списком.
Розпізнавання типу компонента
Обов'язково стежте за тим, щоб тип компонента з конкретним номером був вірним, а якщо ні, то буде видаватися повідомлення про помилку. Наприклад, ви вирішили очистити перший компонент на формі за допомогою команди:
tedit(controls[0]).text:=’’;
Якщо першим компонентом виявиться не текстове поле, а, наприклад, кнопка button, то видається помилка. Це відбувається тому, що кнопка не має властивості text. Для вирішення цієї проблеми необхідно перш ніж звертатися до компоненту, перевірити його тип за допомогою команди:
if controls[i].classname='TТип_компонента' then
Зверніть увагу, що верхній регістр при зазначенні типу компонента обов'язковий.
В нашому прикладі для звертання до поля можна ввести код:
if controls[0].classname='TEdit' then
tedit(controls[0]).text:=’’;
Якщо перший компонент на формі виявиться текстовим полем, то його буде очищено. Якщо ж перший компонент на формі виявиться не текстовим полем, то код не спрацює, і помилка не виникне.
Обробка набору полів у циклі
При написанні коду часто доводиться обробляти декілька компонентів на формі. В цьому випадку можна використовувати цикл:
for i:=0 to controlcount-1 do
. . .controls[i]. . .
У циклі використовується властивість форми controlcount, яка зберігає кількість усіх компонентів на формі. Так як компоненти на формі нумеруються з 0, то цикл виконується до controlcount-1.
Наведений цикл пройде по всіх компонентах на формі, але серед компонентів може бути багато різнотитпних: написи, текстові поля, прапорці і т.і. Тому, якщо треба пройти по всіх компонентах, але обробити тільки компоненти потрібного класу, то у циклі використовують оператор if.
for i:=0 to controlcount-1 do
if controls[i].classname='ТТип_компонента' then
. . .controls[i]. . .
Приклад. Нехай є форма вигляду:
Для кнопки "Очистити" напишемо код, який очищае всі текстові поля на формі.
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=0 to controlcount-1 do
if controls[i].classname='TEdit' then
tedit(controls[i]).Text:='';
end;
Помітка компонентів
Іноді при написанні універсального коду треба серед однотипних компонентів відокремити деякі з них. Наприклад, нехай на попередній формі поле з результатом очищати не потрібно. Для цього це поле треба якось помітити. Для помітки можна використовувати властивість Tag, яку має кожний компонент. Ця властивість може зберігати довільне ціле значення і за замовченням завжди дорівнює 0. Якщо у цю властивість вводити значення, відмінне від 0, і потім перевіряти значення властивості у коді, то відповідний компонент можна виключати із обробки.
Для звернення до цієї властивості у коді використовують запис:
controls[i].tag
В нашому випадку можна для поля з результатом у властивості Tag зазначити значення 1. Тоді код для кнопки "Очистити" буде мати вигляд:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=0 to controlcount-1 do
if controls[i].classname='TEdit' then
if controls[i].tag<>1 then
tedit(controls[i]).Text:='';
end;