№27. Windows Forms
.pdfСпеціальність: 6.050202 |
«Автоматизація та комп’ютерно- |
ВНТУ, ІнАЕКСУ, каф. КСУ |
інтегровані технології» |
|
|
Курс: Комп’ютерні технології та програмування. Частина 1 |
2014 р. |
|
Автор: к.т.н. Грищук Т. В. |
|
|
Лекція. Вступ у Windows Forms
Питання:
1.Основні поняття.
2.Інструменти середовища Visual Studio.
3.Властивості основних об’єктів візуального інтерфейсу.
4. Приклад розробки Windows Forms додатку обчислення факторіалу.
1. Основні поняття
Технологія роботи у середовищі Visual Studio базується на ідеях об’єктно-
орієнтованого та візуального програмування.
Ідея об’єктно-орієнтованого програмування полягає в інкапсуляції
(об’єднанні) даних і засобів їх опрацювання (методів) у тип, який називається
класом.
Конкретної змінною певного класу є об’єкт (екземпляр класу).
Прикладами об’єктів можуть бути елементи керування у вікні: кнопки, списки, текстові поля тощо.
Візуальне програмування – це спосіб розробки програмного забезпечення шляхом маніпулювання графічними об’єктами замість написання програмного коду.
В інтегрованому середовищі розробки Visual Studio візуальне програмування переважно застосовується на етапі розробки інтерфейсу користувача.
Якщо у процедурному програмуванні структурними одиницями є дані та команди, то у візуальному програмуванні структурною одиницею є візуальний об’єкт, який називається компонентом. Автоматизація програмування досягається завдяки можливості переносити компонент на форму (у програму) з палітри компонентів і змінювати його властивості, не вносячи вручну змін до програмного коду.
Формою називають компонент, який володіє властивостями вікна ОС Windows і призначений для розташування інших компонентів.
2. Інструменти середовища Visual Studio
Вікно середовища Visual Studio містить головне меню, панелі інструментів,
атакож:
-палітру компонентів;
-вікно властивостей об’єктів;
1
Спеціальність: 6.050202 |
«Автоматизація та комп’ютерно- |
ВНТУ, ІнАЕКСУ, каф. КСУ |
інтегровані технології» |
|
|
Курс: Комп’ютерні технології та програмування. Частина 1 |
2014 р. |
|
Автор: к.т.н. Грищук Т. В. |
|
|
-вікно форми;
-редактор коду програми.
Ці інструменти стають доступні після створення Windows Forms проекту. Щоб зробити такий проект, оберіть варіант Приложение Windows Forms у вікні створення нового проекту (меню Файл Создать Проект), як показано на рисунку.
Якщо деякі компоненти не відображаються на екрані, перейдіть у меню Вид та оберіть потрібний компонент. В цьому ж меню можна також обирати режими розробки програми: код та конструктор. В режимі Код розробник змінює безпосередньо код програми, а в режимі Конструктор – працює з формою та елементами керування на ній.
Прилад налаштованого середовища показано на рисунку нижче.
2
Спеціальність: 6.050202 |
«Автоматизація та комп’ютерно- |
ВНТУ, ІнАЕКСУ, каф. КСУ |
інтегровані технології» |
|
|
Курс: Комп’ютерні технології та програмування. Частина 1 |
2014 р. |
|
Автор: к.т.н. Грищук Т. В. |
|
|
Палітра компонентів містить перелік елементів керування, об’єднаних за призначенням у групи: стандартні, контейнери, меню і панелі інструментів, дані, компоненти, друк, діалогові вікна, загальні.
Щоб помістити компонент у вікно форми, двічі клацають на його піктограмі. Щоб обрати точне місце на формі, де має розташовуватись компонент, спочатку клацають на піктограмі компонента, а потім на потрібному місті форми. Вибраний компонент можна переміщати на формі, а також змінювати розміри, перетягуючи його маркери.
За допомогою інспектора об’єктів можна задавати початкові значення властивостей об’єкта та їхню реакцію на стандартні події.
3
Спеціальність: 6.050202 |
«Автоматизація та комп’ютерно- |
ВНТУ, ІнАЕКСУ, каф. КСУ |
інтегровані технології» |
|
|
Курс: Комп’ютерні технології та програмування. Частина 1 |
2014 р. |
|
Автор: к.т.н. Грищук Т. В. |
|
|
Перелік властивостей має два стовпці: лівий містить назви властивостей компонентів, а правий – їхні значення. Властивості можуть бути простими або комплексними. Комплексні властивості складаються з набору інших властивостей. Такі властивості позначені символом «+», наприклад +Font.
Для введення значень властивостей числового і текстового типу (Width, Name тощо) використовується стандартне поле введення. Значення властивостей перерахованого типу (Align, Cursor тощо) задаються комбінованим списком, звідки вибирають потрібне. Деякі комплексні властивості (Font, Picture, Glyph тощо) використовують діалогові вікна, набір керуючих елементів яких залежить від певної властивості.
Події також подано у вигляді двох стовпців. У лівому відображаються імена стандартних подій, на які об’єкт може реагувати, а в правому – імена методівобробників (функцій), які реалізовуватимуть реакцію на подію. Кожній стандартній події відповідає назва методу, яка з’являється після подвійного клацання мишею у правому стовпці. У цей момент у вікно тексту програми додається шаблон базового коду (функції) для відповідного методу, який треба заповнити.
Форма – це вікно Windows, яке утворюється в одному з можливих для вікон стилів. Увесь внутрішній простір форми є робочою областю, яка має сітку вирівнювання для зручності розташування компонентів. Для виконання групових операцій декілька компонентів можна об’єднувати. Для цього необхідно натиснути на клавішу Shift та, не відпускаючи її, вибрати мишею потрібний компонент на формі. Над компонентами та їх групами можна виконувати операції вирізання, копіювання в буфер обміну та вставляння з буфера.
Для точного визначення позиції та розмірів компонента на формі використовують такі властивості, як Location та Size.
Редактор коду знаходиться в окремому вікні, перейти до якого можна через меню Вид Код (Ctrl+Alt+0). Код програми розміщується у різних текстових файлах (*.cpp, *.h тощо), об’єднаних у вигляді дерева проекту.
4
Спеціальність: 6.050202 |
«Автоматизація та комп’ютерно- |
ВНТУ, ІнАЕКСУ, каф. КСУ |
інтегровані технології» |
|
|
Курс: Комп’ютерні технології та програмування. Частина 1 |
2014 р. |
|
Автор: к.т.н. Грищук Т. В. |
|
|
3. Властивості основних об’єктів візуального інтерфейсу
В межах цієї лекції розглянемо такі об’єкти, як форма (Form), текстове поле
(Label), зображення (PictureBox), кнопка (Button), текстове поле (TextBox),
перемикач (RadioButton) та прапорець (CheckBox).
Об’єкт Form використовують для створення програмою нового вікна. Розглянемо такі властивості форми:
Властивість |
Опис властивості |
Приклади значень |
|
AutoScroll |
Наявність у формі смуг |
True, False |
|
прокручування |
|||
|
|
||
|
|
Перелічений тип |
|
BackColor |
Колір фону форми |
|
|
|
|
|
|
|
|
Перелічений тип |
|
|
Вигляд вказівника миші на |
|
|
Cursor |
формі під час виконання |
|
|
|
проекту |
|
|
|
|
|
|
Enabled |
Доступність для дій об’єктів у |
True, False |
|
формі під час виконання |
|||
|
|
||
Font |
Шрифт |
Комплексна властивість |
|
|
|
Вікно може мати довільні розміри |
|
|
|
(Sizable), бути діалогом |
|
|
|
(FixedDialog) або мати фіксовані |
|
|
|
розміри (None) |
|
FormBorderStyle |
Можливість змінювати розміри |
|
|
вікна |
|
||
|
|
||
|
|
|
|
|
5 |
|
Спеціальність: 6.050202 |
«Автоматизація та комп’ютерно- |
ВНТУ, ІнАЕКСУ, каф. КСУ |
інтегровані технології» |
|
|
Курс: Комп’ютерні технології та програмування. Частина 1 |
2014 р. |
|
Автор: к.т.н. Грищук Т. В. |
|
|
|
Задаємо піктограму, яка буде в |
None – стандартна піктограма, або |
|
Icon |
заголовку форми під час |
||
завантажена з файлу *.ico |
|||
|
виконання програми |
||
|
|
||
Location |
Координати лівого верхнього |
0, 0 |
|
кута вікна у пікселях |
числове значення |
||
|
|||
Size |
Ширина і висота вікна у |
300, 300 |
|
пікселях |
числове значення |
||
|
|||
StartPosition |
Початкове положення форми |
|
|
під час її показу |
|
||
|
|
||
|
|
|
|
Text |
Заголовок форми |
Довільний рядок символів |
|
WindowState |
Стан вікна у момент запуску |
|
|
|
|
|
Об’єкт Label використовують для створення текстових полів (написів) у вікні програми. Крім властивостей, аналогічних властивостям об’єкта Form, цей об’єкт володіє ще й такими:
Властивість |
Опис властивості |
Приклади значень |
|
(Name) |
Ім’я, що використовується в |
Label1 (ідентифікатор) |
|
коді для ідентифікації об’єкта |
|||
|
|
||
AutoSize |
Приведення меж поля до |
True, False |
|
границь тексту |
|||
|
|
||
TextAlign |
Вирівнювання тексту в межах |
|
|
поля |
|
||
|
|
||
|
|
|
|
Visible |
Видимість об’єкта |
True, False |
Об’єкт PictureBox використовують для вставлення графічних об’єктів із файлів типу *.jpg, *.bmp, *.emf, *.ico, *.wmf у форму. Крім перерахованих вище властивостей використовують такі:
Властивість |
Опис властивості |
Приклади значень |
|
Вирівнювання рисунку |
|
SizeMode |
відносно меж елемента |
|
|
керування |
|
|
|
|
Image |
Ім’я графічного файлу |
Задається у діалоговому вікні |
|
6 |
|
Спеціальність: 6.050202 |
«Автоматизація та комп’ютерно- |
ВНТУ, ІнАЕКСУ, каф. КСУ |
інтегровані технології» |
|
|
Курс: Комп’ютерні технології та програмування. Частина 1 |
2014 р. |
|
Автор: к.т.н. Грищук Т. В. |
|
|
Об’єкт Button використовують для створення кнопок на формі. На кнопках можна розміщувати текст і зображення. Для організації швидкого доступу до кнопки можна призначити мнемонічну клавішу цієї кнопки. Щоб позначити обрану клавішу, потрібно написати амперсанд (&) перед літерою в тексті, що відображається на кнопці. Під час роботи програми користувач зможе натискати сполучення клавіш Alt+Літера замість клацання мишкою на кнопці. Зверніть увагу, що обрана літера підкреслюється.
Об’єкт TextBox використовують для введення користувачем рядка символів з клавіатури. У разі необхідності для перетворення одержаного рядка (властивість Text) у число і навпаки використовують функції С++ StrToFloat та FloatToStr. Окрім відомих вам властивостей, поля редагування TextBox володіють такими:
Властивість |
Опис властивості |
Приклади значень |
|
|
|
звичайні, великі та малі літери |
|
|
Вигляд символів, які |
|
|
CharacterCasing |
набиратимуться в полі |
|
|
|
редагування |
|
|
|
|
|
|
|
Символ для введення |
* (текст відображатиметься зірочками), |
|
PasswordChar |
0 (текст відображатиметься нулями) |
||
пароля |
|||
|
або пряме відображення тексту |
||
|
|
||
ReadOnly |
Можливість змінити тест |
True (текст не можна змінити) |
|
(доступність поля) |
False (текст можна змінити) |
||
|
|||
Text |
Текст у полі редагування |
Довільний рядок символів |
|
Multiline |
Можливість запису тексту |
True, False |
|
в декілька рядків |
|||
|
|
||
Lines |
Рядки в полі у вигляді |
Комплексна властивість (задається у |
|
масиву рядків |
діалоговому вікні) |
||
|
|||
MaxLength |
Максимальна можлива |
Наприклад, 50 – п’ятдесят символів, 0 – |
|
кількість уведених |
без обмежень |
||
|
|||
|
7 |
|
|
символів |
ВНТУ, ІнАЕКСУ, каф. КСУ |
ScrollBars |
Наявність смуг |
|
|
прокручування |
|
Спеціальність: 6.050202 «Автоматизація та комп’ютерно- |
||
інтегровані технології» |
|
|
Курс: Комп’ютерні технології та програмування. Частина 1 |
2014 р. |
|
Автор: к.т.н. Грищук Т. В. |
|
Немає, вертикальна, горизонтальна, обидві
Об’єкти RadioButton використовують для створення у формі засобу вибирання однієї альтернативної можливості серед декількох. Розглянемо такі властивості перемикачів:
Властивість |
Опис властивості |
Приклади значень |
|
Checked |
Стан перемикача |
True (вибраний) |
|
False (не вибраний) |
|||
|
|
||
TabIndex |
Порядок вибору об’єкта |
0 (перший), 4 (п’ятий) |
|
клавішею Tab |
|||
|
|
||
TabStop |
Доступ до певного об’єкта |
True (буде доступний) |
|
табулятором |
False (не доступний) |
||
|
Об’єкт CheckBox використовують для створення незалежного двочи трипозиційного прапорця: увімкнено/вимкнено(/недоступний). Для цього об’єкта визначені такі дві нові властивості:
Властивість |
Опис властивості |
Приклади значень |
|
ThreeState |
Наявність третьої позиції |
True (трипозиційний прапорець) |
|
False (двопозиційний прапорець) |
|||
|
|
||
CheckState |
Стан прапорця |
Увімкнено, вимкнено, невизначено |
4. Приклад розробки Windows Forms додатку обчислення факторіалу
Розглянемо процес розробки простої програми для обрахунку факторіала цілого числа.
На рисунку показано схему розміщення компонентів на формі.
8
Спеціальність: 6.050202 |
«Автоматизація та комп’ютерно- |
ВНТУ, ІнАЕКСУ, каф. КСУ |
інтегровані технології» |
|
|
Курс: Комп’ютерні технології та програмування. Частина 1 |
2014 р. |
|
Автор: к.т.н. Грищук Т. В. |
|
|
Тепер нам потрібно змінити текст написів для елементів керування Label і Button та підібрати імена класів для елементів TextBox. Для цього задамо значення властивості Text для всіх елементів, як показано на рисунку.
Зверніть увагу, що кнопка Розгорнути неактивна. Це було зроблено навмисно, оскільки при розгортання спотворюватиме зовнішній вигляд форми. Щоб це зробити, встановіть властивість форми MaximizeBox в значення False.
Текстові поля нам потрібні для введення-виведення даних, тому потрібно змінити для них властивості Name: перше поле назвемо num1, а друге – num2. Макет форми повністю завершено, код компілюється, але нічого не виконується.
Перейдемо до опису обробника подій для кнопки Button, тобто напишемо код, який буде виконуватись у відповідь на натискання цієї кнопки. Також потрібно написати саму функцію для розрахунку факторіала.
Додамо файл fact.h в папку Заголовочные файлы, а потім додамо туди прототип функції обчислення факторіала.
long double fact( int N );
Далі підключаємо цей файл у проект за допомогою директиві #include.
9
Спеціальність: 6.050202 |
«Автоматизація та комп’ютерно- |
ВНТУ, ІнАЕКСУ, каф. КСУ |
інтегровані технології» |
|
|
Курс: Комп’ютерні технології та програмування. Частина 1 |
2014 р. |
|
Автор: к.т.н. Грищук Т. В. |
|
|
#include "fact.h"
Далі аналогічно створюємо файл fact.cpp та одаємо туди реалізацію функції знаходження факторіала цілого числа.
#pragma once #include "stdafx.h"
long double fact(int N)
{
// якщо користувач ввів від’ємне число if(N < 0)
//повертаємо нуль return 0;
//якщо користувач ввів нуль if (N == 0)
//повертаємо факторіал нуля return 1;
//у інших випадках
else
// рекурсивний виклик return N * fact(N - 1);
}
Відкриваємо конструктор форми та двічі клацаємо на кнопці, щоб написати функції обробника події. Оскільки будь-який набір символів, що вводить користувач є рядком, то перш за все його потрібно перевести у число.
int number = (int) System::Convert::ToDouble(num1->Text);
Цей рядок ініціалізує зміну, що зберігає число для обчислення його факторіала. Далі нам потрібно зробити виклик функції fact() з аргументом number та занести результат у нову змінну factor.
double factor = fact(number);
Потім перетворюємо отримане число назад в рядок і передаємо його у друге текстове поле.
num2->Text = System::Convert::ToString(factor);
Тепер можна скомпілювати і запустити нашу програму. Потрібно пам’ятати, що тип double в С++ не може зберігати число більше за 170!.
10