Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
0389581_E8B54_antonova_a_r_ob_ektno_orientovane...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
884.74 Кб
Скачать

1.3. Приклад створення простої віконної прикладної програми

Проілюструємо все сказане вище на прикладі створення простої віконної прикладної програми.

Завдання

Створити проект мовою Object Pascal, використовуючи стандартні об'єкти Delphi для обчислення функції:

Об'єкти: Form, Label, Edit, Button.

Рішення

Наведемо покроковий опис процесу створення віконної прикладної програми.

1. Насамперед потрібно створити нову папку, у якій ви розтащуєте всі файли, що входять у проект. Надалі завжди будемо створювати окрему папку для кожного нового проекту. Помітимо, що створити нову папку можна також і в момент збереження файлів, що входять у проект, використовуючи кнопку Создание новой папки (Створення нової папки), що є в діалоговому вікні збереження файлів.

2. Для створення нового проекту можна скористатися командою головного меню File  New  Application або, якщо ви тільки що завантажили середовище Delphi, можна відразу приступати до створення нового проекту.

3. Зі сторінки Standard палітри компонентів помістимо на форму Form1 дев'ять компонентів: Labell, Label2, Label3, Label4, Edit1, Edit2, Button1, Button2, Button3 (див. рис. 3).

Рис.3. Розташування компонентів

При розташуванні компонентів на формі можна відразу ж задавати їхні розміри. Для цього після вибору компонента в палітрі компонентів варто вказати на формі прямокутну область, що займе компонент. Лівий верхній кут області визначається щигликом лівої клавіші миші, потім, не відпускаючи клавіши миші, потрібно перемістити покажчик миші в правий нижній кут області.

Label1, Label2, Label3, Label4 – мітки – компоненти, призначені для відображення текстової інформації. Відображуваний ними текст може бути розміщений у них як на етапі конструювання форми, так і на етапі виконання програми. У мітку Label1 ми помістимо текст «Расчет выражения» («Розрахунок виразу»), у мітку Label2 – «Ввод х» («Введення х»), у мітку Label3 – «Ввод у» («Введення у»), а в мітку Label4 на етапі виконання програми будемо поміщати значення функції, яке обчислюэться.

Edit1, Edit2 – рядки введення – компоненти, призначені для введення символьного рядка. За допомогою цього компонента, ми будемо вводити значення х и у. Оскільки дані будуть вводитися у вигляді символьного рядка, у програмі необхідно передбачити перетворення рядка в дійсне число.

Button1, Button2, Button3 – кнопки – компоненти, призначені для формування події при натисканні на них. У програмі при натисканні на кнопку Button1 буде відбуватися обчислення значення функції; при натисканні на Button2 – буде відбуватися очищення мітки Label4 і компонентів Edit1, Edit2, для завдання нових значень х и у; при натисканні на Button3 – буде відбуватися завершення роботи програми.

4. Перейдемо до формування зовнішнього вигляду майбутньої програми. Для цього в інспекторі об'єктів установимо властивості форми і розташованих на ній ікомпонентів. Почнемо з форми.

Зробимо форму активною, клацнувши мишею по будь-якому її місцю, не зайнятому іншими компонентами. Надалі завжди якщо змінюємо властивості того або іншого компонента в інспекторі об'єктів попередньо треба виділити його мишею.

Виберемо в інспекторі об'єктів властивість Caption (Заголовок) і замість тексту «Form1» введемо текст «Лабораторная работа №1» («Лабораторна робота №1»). Таким чином, ми змінимо заголовок нашої форми.

Змінимо розміри форми і, отже, вікна майбутньої програми. Для цього можна підвести курсор миші до будь-якого краю форми (курсор при цьому набуває вигляду двоспрямованої стрілки) і, не відпускаючи лівої клавіші миші, змінити форму. При цьому автоматично будуть змінюватися властивості Height (Висота) і Width (Ширина), що знаходяться в інспекторі об'єктів. Це означає, що ми могли б змінити розміри форми, указавши значення властивостей Height і Width безпосередньо в інспекторі об'єктів. Але, з іншого боку, перевага візуального програмування саме і міститься в тім, щоб безпосередньо спостерігати за процесом проектування форми.

Властивості Left і Тор задають відстань від лівого верхнього кута екрана дисплея до лівого верхнього кута форми по горизонталі і вертикалі відповідно. Для цього можна скористатися інспектором об'єктів або переміщати форму, схопивши мишею за її заголовок.

Використовуючи кожен з зазначених прийомів змініть властивості Height, Width, Left, Тор.

5. Установимо властивості компонентів Labell, Label2, Label3 і Label4. Компоненти Labell, Label2, Label3 і Label4 також мають властивості Height, Width, Left і Top. Але, у відмінності від форми, властивості Left і Тор вказують відстань від лівого кута форми, на якій розташовується компонент, до лівого верхнього кута самого компонента.

Властивість Caption (Заголовок) є основним для мітки і містить текст, який відображується нею. Для мітки Label1 установимо властивість Caption рівним „Расчет выражения» («Розрахунок виразу”). Для мітки Label2 властивість Caption – „Ввод х” („Введення х”), для мітки Label3 – „Ввод у” („Введення у”), а для мітки Label4 властивість Caption буде визначаться на етапі виконання програми.

Властивість AutoSize (Автоматичний розмір) мітки визначає, чи буде розмір мітки встановлюватися автоматично у залежності від довжини символьного рядка, поміщеного туди. Якщо так, то властивість AutoSize варто установити рівним True, у протилежному випадку – False.

Властивість WordWrap (Переніс слів) дозволяє або забороняє перенс слів якщо рядок не уміщується в мітку і властивість AutoSize дорівнює False. У першому випадку властивість WordWrap повинна бути встановлена рівною True, у другому – False.

Властивість Alignment (Вирівнювання) визначає, як буде вирівняний текст усередині мітки: по лівому краю (taleftJustify), по центру (taCenter) або по правому краю (taRightJustify).

Наведемо значення цих властивостей для міток Label1, Label2, Label3 і Label4:

Властивість

Label1

Label2

Label3

Label4

AutoSize

True

True

True

False

WordWrap

False

False

False

True

Aligment

taCenter

taleftJustify

taleftJustify

taleftJustify

Як було сказано вище, символьний рядок буде присвоюватися властивості Caption мітки Label4 на етапі виконання програми, а зараз для поліпшення зовнішнього вигляду майбутньої програми можна для властивості Caption видалити значення Label4 і як значення присвоїти символьний рядок, що містить кілька пробілів, щоб компонент Label4 був краще видний на формі.

Властивість Font (Шрифт) є складною властивістю і визначає різні характеристики, що описують шрифт, який використовується при відображенні текстів, наприклад висоту шрифту, його ім'я, написання і т.д. Для того щоб установити характеристики шрифту, виберемо щигликом миші властивість Font в інспекторі об'єктів і натиснемо по кнопці з трьома крапками, що з'явилася в правому стовпчику. На екрані постане вікно для вибору шрифту.

За допомогою цього вікна установимо наступні характеристики шрифтів для міток Labell, Label2, Label3 і Label4:

Властивість

Label1

Label2

Label3

Label4

Шрифт

(Шрифт)

Arial

Times New

Roman

Times New

Roman

Times New

Roman

Начертание

(Написання)

Полужирный

(Напівжирний)

Обычный

(Звичайний)

Обычный

(Звичайний)

Обычный

(Звичайний)

Размер

(Розмір)

16

14

14

14

Помітимо, що після зміни характеристик шрифтів для міток Labell, Label2, Label3 і Label4 наявна в них властивість ParentFont змінила своє значення з True на False. Властивість ParentFont визначає, чи буде для даного компонента використовуватися шрифт (властивість Font) батьківського компонента-контейнера. Для розглянутих компонентів батьківським компонентом є форма, яка їх містить. Якщо властивість ParentFont компонента дорівнює True, то в компоненті використовується шрифт, характеристики якого задані в компоненті-батьку. У протилежному випадку батьківський і дочірній компоненти мають різні характеристики своїх шрифтів.

6. Властивості Height, Width, Left і Top для компонентів Edit1, Edit2 мають той же зміст, що і для компонентів Labell, Label2, Label3 і Label4. Установіть ці властивості, використовуючи інспектор об'єктів.

Властивість AutoSize, що є в компонентів Edit1, Edit2, визначає, чи буде рядок введення збільшувати свою висоту, якщо зміниться висота шрифту в тексті, розміщеному в компоненті. Якщо треба, щоб рядок введення автоматично збільшувався, значення властивості варто покласти рівним True, у протилежному випадку – False. У нашому прикладі залишимо для визначеності значення, задане за замовчуванням – True.

Властивість Text є основною для компонентів Edit1, Edit2 і призначена для введення (або рідше – для виведення) символьних рядків. За замовчуванням значенням цієї властивості є імена компонентів – Edit1, Edit2, але для поліпшення зовнішнього вигляду програми задамо як значення цієї властивості порожній рядок.

Установимо наступні характеристики шрифтів для компонентів Editl і Edit2:

Властивість

Editl1

Edit2

Шрифт (Шрифт)

Times New Roman

Times New Roman

Начертание

(Написання)

Обычный

(Звичайний)

Обычный

(Звичайний)

Размер (Розмір)

14

14

7. Встановимо властивості для компонентів Button1, Button2, Button3:

Властивість

Button1

Button2

Button3

Caption

Вычислить

(Обчислити)

Новое

(Нове)

Завершить

(Завершити)

Шрифт (Шрифт)

Arial

Arial

Arial

Начертание

(Написання)

Обычный

(Звичайний)

Обычный

(Звичайний)

Обычный

(Звичайний)

Размер (Розмір)

13

13

13

8. Усі компоненти, що використовуються в прикладі – форма, мітки, рядки введення і кнопки – мають імена, що задаються в наявній в них властивості Name (Ім'я): Form1, Label1, Label2, Label3, Label4, Edit1, Edit2, Button1, Button2 і Button3. Імена компонентів генеруються автоматично інтегрованим середовищем Delphi при створенні компонента, тобто, наприклад, при розміщенні компонента на формі. Для утворення імені компонента використовується ім'я класу з відкинутою першою буквою Т. Наприкінці імені додається цифра, що вказує під яким порядковим номером у своєму класі з'явився компонент. Наприклад, компонент Edit1 є екземпляром класу TEdit, а компонент Label1 є екземпляром класу TLabel.

Програміст за своїм розсудом може залишити імена, генеровані Delphi, а може дати компонентам свої імена. Для великих додатків, очевидно доцільно надавати компонентам якісь осмислені імена. Для розглянутих прикладів, з пізнавальної точки зору, зручніше скласти імена сгенеровані Delphi.

На цьому етап конструювання форми можна вважати завершеним.

9. Збережемо програму. У випадку зависання не налагодженої програми це допоможе зберегти ваш час. Для збереження проекту необхідно виконати команду головного меню File  Save All. У результаті на екрані дисплея з'явиться діалогове вікно збереження модуля.

Далі за допомогою списку, що розкривається, потрібно відшукати папку, створену заздалегідь для проекту, який розроблюється, і відкрити її. Після того як потрібна папка відкрита, у полі Имя файла (Ім'я файлу) варто вказати ім'я модуля, що зберігається. За замовчуванням модуль має ім'я Unitl. При бажанні можна замінити його більш осмисленим. Завершимо збереження модуля щигликом по кнопці Сохранить (Зберегти).

Після цього з'явиться діалогове вікно збереження файлу проекту, цілком аналогічне попередньому. За замовчуванням файлові проекту дається ім'я Projectl. Оскільки це ж ім'я буде згодом присвоєне файлові, що виконується, то бажано його змінити.

Помітимо, що імена файлу проекту і модуля повинні бути різними.

10. Переходимо до етапу написання коду програми.

Майбутня програма повинна обчислювати значення функції після того, як у рядках введення задані значення х и у і виконаний щиглик мишею по кнопці Вычислить (Обчислити). Це означає, що ми повинні написати оброблювач події OnClick для кнопки Buttonl. Подія OnClick для кнопки є подією за замовчуванням, тому, щоб створити заготовку оброблювача події, досить виконати подвійний щиглик по кнопці Buttonl. У результаті вікно редактора коду стане активним і буде містити заготовку оброблювача події (див. рис. 4).

Додамо в заготовку код для обчислення значення функції

procedure TForm1.Button1Click(Sender: TObject);

var x,y,t,t1:real;

s:string[7];

code1, code2:integer;

begin

{Введення вхідних даних, див. Додаток}

val(edit1.text,x,code1);

val(edit2.text,y,code2);

if (code1=0) and (code2=0) then

begin

{Обчислення виразу}

t1:=1/(sqr(x)+4);

t:=(x+y*t1)/(y*(x-1)+t1));

{Вивід результату, див. Додаток}

str(t:7:3,s);

label4.caption:='Решение'+chr(13)+'t='+s;

end

else

label4.caption:='Ошибка ввода исходных данных!';

end;

Зверніть увагу, як використовуються властивості компонентів у тексті програми. Для того щоб присвоїти властивості або витягти з властивості яке-небудь значення, варто вказати ім'я компонента, поставити крапку і потім указати властивість.

В оброблювач подій onClick кнопки Button2 помістимо такий код:

procedure TForm1.Button2Click(Sender: TObject);

begin

Label4.caption:=' '; //’’ – поржній рядок

edit1.Text:=' ';

edit2.Text:=' ';

end;

В оброблювач подій onClick кнопки Button3 помістимо такий код:

procedure TForm1.Button3Click(Sender: TObject);

begin

Close;

end;

На цьому етап програмування можна вважати завершеним.

11. Збережемо програму (File  Save All).

Запустимо проект на виконання. У випадку відсутності помилок на екрані дисплея з'явиться вікно нашої програми.

Введемо значення х и у в рядки введення і натиснемо кнопку „Вычислить» («Обчислити”) – у передбаченій нами частині вікна з'явиться відповідне значення функції.

Рис. 5. Результат роботи програми

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]