
- •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
1. Використання підпрограм в оброблювачах подій
Додатки можна розробляти в будь-якій послідовності. Компонентів безліч, функції багатьох з них зрозумілі. Так що чи стоїть мудрувати: переноси компоненти на форму, пиши оброблювачі їх подій і отримуй нагороду за прекрасно зроблений додаток.
Чесно кажучи, створювані нами раніше програми так і будувалися. Це були тестові додатки, єдиним завданням яких було показати можливості різних компонентів. Але справжній додаток так проектувати не можна. Безсистемно створений додаток, навіть дуже гарний, через якийсь час стає незрозумілим і самому розроблювачу, не говорячи вже про проблеми супроводу такого додатка кимось із колег. Подібний додаток, якщо виникає необхідність його доробки, простіше створити заново, чим розбиратися в його хітросплетіннях.
Вирішенням проблеми є створення універсальних підпрограм для виконання тих або інших дій у системі. Маючи готову підпрограму в оброблювачі події потрібного компонента достатньо буде просто викликати цю підпрограму по її імені. При цьому, якщо яка-небудь дія викликається декількома компонентами (кнопкою, командою меню й т.п.), то для всіх цих компонентів можна створити один оброблювач із викликом підпрограми.
У такий спосіб код не містить дублюючих фрагментів, а у випадку внесення змін досить змінити код підпрограми один раз.
2. Звертання до активного компонента не за ім’ям
Для створення універсальних підпрограм-оброблювачів подій однією з умов є звертання до компонентів не не за ім’ям. Наприклад: нехай є форма реєстрації із чотирма полями й кнопкою.
Потрібно написати оброблювач, який при введенні пароля переводить курсор на наступне поле, якщо в поточному полі введено 5 символів.
Для першого поля в події Onchange напишемо код:
procedure tform1.edit1change(sender: tobject);
begin
//якщо в перше поле введено 5 символів
if length(edit1.text)=5 then
//то переходимо в друге поле
edit2.setfocus;
end;
Для другого поля в події Onchange напишемо код:
procedure tform1.edit2change(sender: tobject);
begin
//якщо в друге поле введено 5 символів
if length(edit2.text)=5 then
//то переходимо в третє поле
edit3.setfocus;
end;
Для третього поля в події Onchange напишемо код:
procedure tform1.edit3change(sender: tobject);
begin
//якщо в третьому полі введено 5 символів
if length(edit3.text)=5 then
//то переходимо в четверте поле
edit4.setfocus;
end;
Для четвертого поля в події Onchange напишемо код:
procedure tform1.edit4change(sender: tobject);
begin
//якщо в четвертому полі введено 5 символів
if length(edit4.text)=5 then
//то переходимо на кнопку
button1.setfocus;
end;
Як видно із прикладу, код оброблювачів схожий, але він не може бути універсальним для всіх полів, тому що імена компонентів різні. Щоб цей код був універсальним потрібно звертатися до компонентів не за ім’ям, а використовуючи додаткові можливості Delphi. Розглянемо ці можливості.
Звертання до поточного компонента
Для звертання до поточного компонента можна використовувати запис:
tтип_компонента(activecontrol)
де тип компонента – це назва компонента на панелі компонентів. Якщо ви не пам'ятайте назву компонента, наведіть покажчик миші на його кнопку на панелі й у підказці прочитайте його назву.
Наприклад:
tedit(activecontrol) – звертання до поточного компонента як до текстового поля;
tbutton(activecontrol) - звертання до поточного компонента як до кнопки;
tlistbox(activecontrol) - звертання до поточного компонента як до списку;
Перехід між компонентами
Для переходу на потрібний компонент існує стандартний метод:
ім'я_компонента.setfocus; //не рекомендується
Але цей метод потребує зазначення імені компонента, що не рекомендується робити в універсальних процедурах. В Delphi існує метод для переходу на наступний компонент відносно поточного:
selectnext(activecontrol,true,true);
Створення універсального коду для форми реєстрації
Повернемося до нашої форми реєстрації і спробуємо написати універсальний код для пролів форми.
Для першого поля у події OnChange введіть код:
procedure TForm1.Edit1Click(Sender: TObject);
begin
//якщо довжина тексту поточного поля=5
if length(tedit(activecontrol).Text)=5 then
//перейти на наступний компонент
selectnext(activecontrol,true,true);
end;
Для того, щоби для інших полів виконувався такий самий код, виділіть ці поля і у події OnChange виберіть зі списку подію Edit1Change.