
Конспект уроку з основ інформатики в 10 класі
Тема Поняття проекту при об'єктно-орієнтованому програмуванні. Створення простих проектів. Екранна форма. Призначення основних об'єктів форми. Властивості форм.
Мета: Ознайомити учнів з поняттям об’єктно-орієнтовного програмування. Формувати навички роботи в середовищі програмування Delphi. Виховувати самостійність та відповідальність.
Тип уроку: вивчення нового матеріалу.
Обладнання: персональний комп’ютер, середовище програмування Borland Delphi7.
Хід уроку
Організаційний момент.
Мотивація навчальної діяльності учнів, оголошення теми, мети уроку.
Вивчення нового матеріалу.
В якому вигляді зберігаються створені програми? Це питання виникає у будь-якого починаючого програміста. Ця тема заслуговує окремої уваги. Як відомо, в Windows будь-яка програма являє собою exe-файл, який є виконуваним, тобто може бути запущений як окреме застосування. Зрозуміло, що розробляючи програму, в підсумку потрібно отримати саме exe-файл, щоб його можна було запустити на комп'ютері, де не встановлена середу, в якій ця програма була створена. У мовах програмування для DOS, зокрема Turbo Pascal, все досить просто - весь програмний код зберігається в один-єдиний файл, а в підсумку виходить exe-файл. Досить просто і зручно. При переході в Windows все стає набагато складніше. Віконне додаток Windows не може бути збережено в одному файлі. Якщо в середовищі DOS програми можна називати саме програмами, то в об'єктно-орієнтованому програмуванні вони називаються проектами. Чому проектами? Все досить просто - програма являє собою сукупність деякого числа файлів різного типу, певним чином пов'язаних між собою. Очевидно, що всю цю групу логічно назвати проектом.
У цій статті ми познайомимося з самими основними типами файлів, які включені в будь-який проект, створений на Delphi. Насправді типів файлів набагато більше, але ці - базові.
*. Dpr - файл проекту
Це головний файл всього проекту. Якщо цей файл відсутній, запустити програму буде неможливо. У файлі зберігаються всі основні параметри програми, а також інформація про вікнах, які в додаток включені. Файл являє собою вільно читається код. Подивитися вміст цього файлу можна командою меню Project -> View Source. У більш нових версіях Delphi файл проекту має інше розширення -. Bdsproj (в Borland Developer Studio 2006),. Dproj (в Delphi 2007 і далі). Зворотна сумісність підтримується.
*. Dfm - файл опису форми
У цьому файлі міститься опис всіх об'єктів, які розташовані на формі, а також інформація про всі їхні властивості. При цьому в цей файл зберігаються тільки ті властивості об'єктів, які були примусово змінені. Це пояснюється тим, що всі властивості будь-якого об'єкта мають значення за замовчуванням (тобто заздалегідь встановлені). Відповідно немає сенсу зберігати значення абсолютно всіх властивостей - досить запам'ятати тільки ті, які мають значення, отліное від початкового. Всі інші властивості приймають своє початкове значення і таким чином вся форма відновлюється.
*. Pas - модуль (самостійний, або модуль форми)
Саме цей файл найбільше схожий на файл програм Turbo Pascal. У цьому файлі знаходиться код програми. Модулі можуть бути окремими від конкретних проектів - в цьому випадку їх можна підключити до будь-якого проекту і використовувати. Як правило, в окремих модулях знаходяться допоміжні функції, або які-небудь об'єкти. Крім цього модуль є в кожної форми. В результаті *. Pas-файл нерозривно пов'язаний з файлом *. Dfm, а форма відповідно описується цими двома файлами - один містить її стан і об'єкти, а другий - код програми, що відноситься до цієї форми. Слід зазначити, що модулі значно полегшують процес написання програми та орієнтацію у великих модулях - окремі елементи великого модуля можна винести в кілька модулів і просто підключити їх до проекту.
*. Res - файл ресурсів
Це додатковий файл. У ньому знаходяться дані різних типів - це можуть бути тексти, зображення, звуки і т.д. Наприклад, для проекту цей файл створюється автоматично і в ньому зберігається ікона (значок) додатки, а також деяка інформація про проект.
Ось і всі основні файли, інформацію про яких обов'язково потрібно знати. Щоб перенести проект, досить наступних файлів: *. Dpr, *. Dfm і *. Pas. Маючи ці файли проект можна відновити, а програму - запустити. Бажано також наявність *. Res-файлу (ів), але тим не менше це не обов'язково. Якщо *. Res-файл, співставлений проекту буде відсутній, то при відкритті проекту Delphi попередить, що файл не знайдений і запитає, що потрібно зробити. Досить проігнорувати повідомлення і файл буде створено автоматично при наступному запуску програми.
*. Dof, *. Cfg - файли конфігурації проекту
У цих файлах зберігаються опції поточного проекту (які настроюються у вікні Project - Options). При відсутності цих файлів будуть використовуватися стандартні параметри.
*. Dcu, *. Obj - об'єктні файли
Ці файли являють собою вже скомпільовані модулі. При черговій компіляції Delphi створює для кожного pas-файлу відповідний dcu-файл. Це істотно прискорює компіляцію надалі, тому наявні файли просто включаються в кінцевий exe-файл, а не обробляються заново. OBJ-файли - це теж скомпільовані модулі, але застосовуються в С + +. При роботі в Delphi ці файли не використовуються, але при необхідності їх можна сформувати.
*. ~ * - Тимчасові файли
Файли, розширення яких починається зі знака тильди ("~"), є тимчасовими. Це означає, що вони не несуть якої-небудь важливої інформації і використовуються в інших цілях (наприклад, для прискорення компіляції). Ці файли можна сміливо видаляти, якщо вони заважають. Чим більше проект, тим зазвичай більше з'являється тимчасових файлів.
Робота з проектом
Ну а тепер прийшов час розповісти про базові операціях з проектом, оскільки раніше мова про це не йшла. Розглянемо все по порядку.
Створення нового проекту
Для створення "чистого аркуша" слід вибрати в меню File -> New -> Application. У різних версіях Delphi вміст підменю New може трохи відрізнятися, але все основне присутній завжди. Після цього створюється новий проект, такий, який з'являється при запуску Delphi.
Відкриття існуючого проекту (або файлу)
Для цього існує команда File -> Open ... Вибравши файл *. Dpr, відкриється проект, а вибравши який-небудь інший файл (наприклад, *. Pas або *. Dfm) відкриється небудь інше (наприклад, окрема форма).
Збереження
Із збереженням є кілька тонкощів. Виходячи з того, що проект являє собою сукупність декількох файлів, можна зробити висновок, що зберігати потрібно всі ці файли, а не якийсь окремо. Вибравши File -> Save, Ви збережете тільки поточну форму, але не більше того, а проект залишиться "висіти в повітрі". File -> Save As ... - Стандартний пункт, який робить те ж саме, що і Save, тільки дозволяє пересохраніть файл (форму) під іншим ім'ям. Команда Save Project As ... зберігає файл проекту (*. dpr). Таким чином, щоб зберегти проект повністю, потрібно зберегти кожну з форм і сам проект. Робити це по окремості досить незручно, тому існує команда, яка полегшує цей процес: File -> Save All. При виклику цієї команди спочатку з'явиться діалог для збереження форми (якщо форм кілька, то і діалогів буде кілька), а потім діалог для збереження проекту. Після того, як всі діалоги відпрацювали, можна з упевненістю сказати, що проект збережений повністю.
Меню File містить всі основні команди управління проектом
Залізне правило: кожен проект повинен бути збережений в окремому каталозі!
Якщо в один каталог зберегти кілька проектів, то всі файли перемішаються і можна відправляти всі в корзину. Цього не можна робити ні в якому разі!
Запуск і зупинка програми
Тепер, коли проект збережений, програму можна і запустити і подивитися, що ж вийшло. Ще одне правило, яке бажано дотримуватися: перед запуском програми проект потрібно зберегти. Миттєвий питання: навіщо? Звичайно, робити це чи ні - вирішувати Вам, але бувають випадки, коли програма зависає (з вини самого програміста наприклад), а з нею зависає і оболонка Delphi. У цьому випадку нічого не залишається робити, як "вбивати" Delphi через Диспетчер завдань Windows. Зрозуміло, що зміни, які були внесені в проект, втрачаються. Однак не все так погано. Випадки зависання Delphi IDE досить рідкісні. Як правило, якщо програма зависає, Delphi дозволяє її просто знищити з пам'яті і продовжити роботу. Процес збереження проекту перед запуском можна доручити оболонці: меню Tools -> Environment Options ..., вкладка Preferences, блок Autosave options - опція Editor files.
Запам'ятайте наступні основні гарячі клавіші:
Ctrl + F9 - компіляція програми. Що таке компіляція? Говорячи простою мовою - створення вихідного (exe) файлу програми. Слід зазначити, що ім'я вихідного файлу співпадає з ім'ям проекту, тобто ім'ям *. dpr-файла і не може бути змінене. Вихідний файл створюється в тому ж каталозі, де розташування *. Dpr-файл. Однак компіляція просто "збирає" всю програму, але не запускає її.
F9 - запуск. На відміну від компіляції, це вже повноцінний запуск програми з оболонки Delphi, проте не зовсім такий, яким є запуск програми з Windows. Запуск відбувається під відладчиком. Але про це пізніше.
Ctrl + F2 - зупинення виконання програми. Це саме те, про що сказано трохи вище. Якщо потрібно екстрено завершити роботу програми, потрібно активувати яке =-небудь з вікон оболонки Delphi і натиснути це сполучення клавіш. Програма буде зупинена і можна буде безболісно продовжити роботу.
Всі ці команди доступні і безпосередньо з меню: Run -> Run, Project -> Compile, Run -> Program Reset.
Всі основні команди управління проектом винесені також у вигляді кнопок на панелі інструментів:
Властивості проекту
Прийшов час докладніше ознайомитися з властивостями компонент. І почнемо ми з базового елементу будь-якого віконного додатка - форми. Властивостей у форми досить багато, і в різних версіях Delphi їх набір може трохи відрізнятися. Тут буде розгляд властивостей на основі Delphi 7.
Action - визначає об'єкт TAction. Це об'єкт служить для швидкої прив'язки дій до компонентів, особливо - до пунктів меню і панелям інструментів. Але може бути прив'язаний і до форми. Для управління TAction служать редактори TActionList зі сторінки Standard і TActionManager зі сторінки Additional.
ActiveControl - визначає елемент, який має в даний момент фокус введення. Якщо вибрати який-небудь об'єкт під час розробки (design-time), то при запуску додатка цей об'єкт і матиме фокус введення. Також властивість може бути корисно і під час виконання (run-time) - можна дізнатися, який об'єкт "тримає" фокус в даний момент, а також можна перемістити фокус на будь-який з об'єктів. Приклад: розмістимо на формі 2 кнопки - Button1 і Button2, а також TTimer (сторінка System). Вибравши елемент Timer1, двічі клацнемо в Інспектора об'єктів навпроти напису OnTimer на вкладці Events, тобто створимо обробник події і напишемо наступне: ActiveControl: = Button2; Тепер, запустивши програму, кожну секунду фокус буде переміщатися на Button2.
Align - визначає вирівнювання форми на екрані. Властивість приймає одне з наступних значень:
alBottom - по нижньому краю;
alClient - вся користувальницька (клієнтська) область;
alCustom - вирівнювання визначається викликом методом об'єкта-батька;
alLeft - по лівому краю;
alNone - без вирівнювання;
alRight - по правому краю;
alTop - по верхньому краю.
AlphaBlend - включає / вимикає прозорість форми.
AlphaBlendValue - задає ступінь непрозорості форми: 0 - форма повністю невидима, 255 - повністю видима. Прозорість активується тільки при установці властивості AlphaBlend в True.
Anchors - визначає напрямки, за якими компоненти "прив'язуються" до форми. Приклад: якщо встановити у форми значення akLeft і akRight цієї властивості в True, і точно також зробити у кнопки, то при зміні ширини форми розмір кнопки (ширина) також буде змінюватися.
AutoScroll - включає автоматичне поява смуг прокрутки (Scroll bars) на формі, коли розмірів форми недостатньо для відображення всіх елементів.
AutoSize - включає автоматичне зміна розмірів форми згідно з позиціями розміщених на ній елементів.
BiDiMode - визначає двонаправлене відображення елемента. У деяких мовах лист здійснюється не ліворуч-праворуч, а навпаки. Це властивість створено якраз для цієї мети.
BorderIcons - визначає безліч кнопок, які відображаються в заголовку вікна:
biSystemMenu - єдиний елемент, який не є кнопкою - відповідає за системне меню вікна, яке викликається комбінацією клавіш [Alt] + [Пробіл].
biMinimize - кнопка згортання (мінімізації) вікна;
biMaximize - кнопка розгортання вікна;
biHelp - кнопка довідки.
Якщо хоча б одна з кнопок згортання і розгортання включена, то незалежно від стану іншої, відображаються обидві (але друга природно неактивна). Якщо вимкнені обидві, вони не відображаються взагалі. Це не залежить від Delphi - так влаштована ОС Windows.
BorderStyle - визначає поведінку меж вікна і загальний тип вікна:
bsDialog - діалогове вікно (з кнопок - лише "Закрити", іконки в заголовку вікна немає);
bsNone - "чистий аркуш" (відсутність у вікна кордонів і заголовка) - застосовується зазвичай для створення заставок під час запуску програми;
bsSingle - звичайне вікно, але із забороною зміни розмірів;
bsSizeable - звичайне вікно (за замовчуванням) - розміри форми можна змінювати;
bsSizeToolWin - спрощене вікно із зменшеним заголовком;
bsToolWindow - спрощене вікно із зменшеним заголовком без можливості зміни розмірів.
BorderWidth - ширина кордону вікна в пікселах. Кордон є невидимий і розташований в призначеній для користувача частині форми.
Caption - текст заголовка форми.
ClientHeight, ClientWidth - розмір клієнтської (користувацької) частини форми, тобто тої, на якій розташовуються компоненти.
Color - колір форми.
Constraints - визначає мінімальні та максимальні розміри висоти і ширини форми в пікселах. 0 - будь-яке значення, тобто без обмежень.
Ctl3D - властивість визначає 3D-вид форми. При вимкненому - "плоске" зображення.
Cursor - курсор миші в той момент, коли він знаходиться над формою.
DefaultMonitor - визначає, на якому моніторі з'явиться форма. Має сенс застосовувати цю властивість тільки при наявності більш, ніж одного монітора (наприклад, якщо кілька екранів).
DockSite, DragKing і DragMode - визначають поведінку форми при здійсненні операцій Drag & Drop.
Enabled - відповідає за загальну активність форми. Якщо встановлено в False, форма недоступна.
Font - шрифт, використовуваний на формі.
FormStyle - стиль форми або її поведінку в MDI-додатку (багатовіконний додаток, де додаткові форми розташовуються "всередині" основної форми). Значення:
fsNormal - звичайна форма (значення за замовчуванням);
fsMDIChild - дочірня (підпорядкована) форма MDI-додатку;
fsMDIForm - головна форма MDI-додатку;
fsStayOnTop - форма знаходиться поверх всіх вікон на екрані.
Height - висота форми в пікселах. На відміну від ClientWidth є висотою з урахуванням заголовка і кордонів форми.
HelpContext, HelpFile, HelpKeyword, HelpType - властивості для зв'язку форми із файлом довідки у форматі *.Hlp.
Hint - текст спливаючої підказки.
HorzScrollBar - властивість визначає зовнішній вигляд і поведінку горизонтальної смуги прокрутки вікна.
Icon - значок (іконка) форми. Відображається в заголовку зліва від заголовка. Задається файлом у форматі *.Ico.
KeyPreview - якщо властивість встановлено в True, то при натисканні клавіш спочатку будуть викликатися обробники форми, а тільки потім обробники того компонента, який в даний момент має фокус вводу. Події, пов'язані з натисканням клавіш - OnKeyDown (), OnKeyPress (), OnKeyUp ().
Left - позиція форми на екрані (лівого верхнього кута) в пікселах.
Menu - дозволяє вибрати один з компонентів-меню, який стане головним меню вікна, тобто буде відображатися вгорі.
Name - ім'я форми як об'єкта. Може містити тільки латинські букви, цифри та знак підкреслення, і не може починатися з цифри. Фактично, це те ім'я, по якому в програмі можна звернутися до форми.
ObjectMenuItem - використовується при роботі з OLE-об'єктами і дозволяє зв'язати пункт меню і OLE-об'єкт: коли об'єкт виділений, пункт меню активний і навпаки.
OldCreateOrder - визначає, коли відбуваються події OnCreate () і OnDestroy () форми. Якщо встановлено в False, то OnCreate () станеться після виклику всіх конструкторів, а OnDestroy () - після виклику всіх деструкторів. Початкове значення - False, змінювати не рекомендується.
ParentBiDiMode - зміна властивості BiDiMode згідно значенню об'єкта-предка форми.
ParentFont - зміна шрифту (Font) згідно значенню об'єкта-предка.
PixelsPerInch - пропорції шрифту в системі (точок на дюйм).
PopupMenu - дозволяє вказати контекстне меню (об'єкт TPopupMenu) для форми. Це меню викликається натисненням правої кнопки миші.
Position - визначає початкову позицію форми на екрані, тобто в момент її появи. Основні значення:
poDesigned - поява в тому місці, в якому форма розташована в design-time;
poDesktopCenter - по центру робочого столу (рекомендоване значення);
poScreenCenter - по центру екрану;
poMainFormCenter - по центру головної форми додатка (для головної форми не має сенсу).
PrintScale - визначає розміри форми при виведенні її зображення на друк.
Scaled - включає масштабування форми відповідно по заданим значенням властивості PixelsPerInch.
ScreenSnap - якщо встановлено в True, то форма буде автоматично "прилипати" до країв екрану у момент переміщення.
SnapBuffer - визначає відстань (у пікселах), на якому форма буде "прилипати" до краю екрана.
ShowHint - включає / вимикає показ спливаючої підказки (Hint).
Tag - спеціальна властивість, яка є у всіх об'єктів. Спеціального застосування для цієї властивості немає, тому воно використовується для різних цілей в конкретній ситуації. Властивість зручна в тому випадку, якщо потрібно зберігати деяке ціле число - не доведеться заводити додаткову змінну.
Top - позиція форми (лівого верхнього кута) на екрані в пікселах.
TransparentColor - включає / вимикає прозорість певного кольору форми.
TransparentColorValue - задає колір, який буде прозорим.
UseDockManager - використовується при реалізації Drag & Drop технології, надаючи додаткові можливості цього методу взаємодії.
VertScrollBar - визначає зовнішній вигляд і поведінку вертикальної смуги прокрутки вікна.
Visible - визначає видимість форми на екрані.
Width - ширина вікна в пікселах, включаючи кордону.
WindowMenu - властивість-аналог властивості Menu, але використовуване при створенні MDI-форм.
WindowState - один зі станів вікна:
wsNormal - звичайний стан (займає частину екрану);
wsMinimized - вікно згорнуто;
wsMaximized - вікно розгорнуте на весь екран.
У результаті ми отримуємо величезну кількість властивостей, здатних змінити як зовнішній вигляд форми, так і її поведінку, а також поведінку компонент, розташованих на ній. Але дана стаття непомітно познайомила Вас не тільки з властивостями форми, але і з властивостями більшості компонент. Справа в тому, що компоненти мають спільних "предків", тобто тих об'єктів, від яких вони утворені, тому властивості компонент дуже схожі і велика їх частина просто-напросто збігається. Якщо подивитися на властивості кнопки (TButton), то відразу можна помітити, що більшість властивостей - ті ж самі, що і у форми. Це дозволяє швидко навчитися працювати з будь-яким незнайомим об'єктом.
Варто зробити кілька приміток щодо властивостей.
Властивості прозорості форми (AlphaBlend, AlphaBlendValue, TransparentColor і TransparentColorValue) коректно працюють тільки на ОС Windows XP і наступних версіях. У попередніх версіях ОС зміна значення цих властивостей не виробляє візуального зміни форми.
Властивості, назви яких починаються зі слова Parent (англ. - батько), в більшості випадків пов'язують значення деяких властивостей із значеннями відповідних властивостей об'єкта-батька. Так, кнопка (TButton) має властивість ParentFont і властивість Font, що відповідає за шрифт тексту на цій кнопці. Але й сама форма має властивість Font. У результаті, якщо у кнопки встановити ParentFont в True, а потім змінити шрифт у форми, то шрифт у кнопки зміниться відповідним чином. Це дозволяє швидко змінювати одні й ті ж властивості у великої кількості компонент. Інші подібні властивості - ParentShowHint, ParentColor, ParentBiDiMode.
Властивість Cursor, що відповідає за курсор, є у більшості компонент. Але при переміщенні курсора його вид змінюється на той, який заданий у самого "дальнього" об'єкта. Тобто якщо і у форми і у кнопки задані різні форми курсору, то при переміщенні над кнопкою буде використовуватися курсор, заданий у самій кнопці. Число "вкладень" одних компонент в інші може бути досить великим.