Налаштування обладнання та програмного забезпечення

Програма c з графічним інтерфейсом. Методологія розробки додатків із використанням форм

Всім доброго дня. У своїх минулих уроках я розповідав про створення консольних програм у середовищі Borland C++ Builder. Починаючи з цього уроку, ми вивчатимемо C++ на прикладі графічних додатків. Хтось хоче навчитися створювати консолки. Може прочитати книгу "Мистецтво створення консольних програм на C++". Перший наш додаток буде програма яка виводить випадкове число. Відкриваємо борландію, тільки не створюємо консольну програму. Після запуску на екрані висвітиться форма:

Зверху буде панель інструментів:

Праворуч Інспектор Об'єктів та Список Форм:

Компоненти (на відміну від бейсика) вже поділені на вкладки. За назвою не важко здогадатися, компоненти якого типу розміщені на вкладці. Відкрийте вкладку standart та розмістіть компоненти на формі як у мене:

На кнопці буде напис Button1. Її треба змінити. У нижньому лівому вікні борляндії наведено властивості компомнентів їх треба змінити на наші:

У кнопки Caption (Напис) міняємо на Сгенерувати

У мітки Label1 властивість Caption змінюємо на Число

В Edit1 властивість Text (текст у самому їсте) просто зітремо.

Після цих маніпуляцій форма буде схожа на мою:

З візуальним стилем закінчили, до речі, більшість властивостей у борлядії схожа на бейсик або дельфі. Поекспериментуйте з ними.

Тепер поговоримо про події. У кожного компонента є події, в них розміщується код, який буде виконаний при досягненні певних умов. Наприклад, у кнопки код у події Click буде виконаний коли ми на неї натиснемо і т.д.

Сьогодні будемо користуватися лише подією Click. Тиснемо двічі на кнопку і подаємо у вікно коду:

Автоматично утворилося подія Clickдля кнопки. Код як і консольний додаток розміщується між фігурними дужками. Пишемо код:

Void __fastcall TForm1::Button1Click(TObject *Sender) ( double aaa; //Сюди помістимо число сегенероване процесором String count; //Запишемо це ж число, але приведене до рядкового вигляду randomize; //Це потрібно щоб числа не повторювалися aaa=random (34)*43646; //Генеруємо будь-яке число count=FloatToStr (aaa); //Перекладаємо число в рядок за допомогою функції FloatToString Edit1->Text=count; //Виводимо в текстове вікно рядкову змінну )

Алгоритм простий, ми оголошуємо змінну для зберігання в ній дробового числа, та змінну для числа у рядковому вигляді. Справа в тому, що відразу згенероване чилсо не можна вивести в текстбокс (буде помилка Очікувався текст, а отримано число), тому за допомогою функції FloatToStr ми переводимо число в рядок і виводимо її в текстове вікно. Для виведення звертаємось (за допомогою знака -> (аналогічно точці в vb)) до властивості тексту Edit1 і виводимо туди текст. Ось поки що все.

До речі, питання на засипку: хто розмножується швидше комп'ютерні віруси, китайці, чи кролики?


Коментарі ()

Vitay

артемка

"randomize; //Це потрібно, щоб числа не повторювалися." У мене все одно повторюються. що робити?

Андрій

Є 2 варіанти 1-використовувати "randomize();" або у рядку 6 ускладнити функцію напр. додавати ще й число секунд

Андрій

"секунд" або результат складання двох псевдовипадкових чисел ділене на секунди - чим більше факторів тим більше непередбачуване виходить число

артемка Олексій(alex13sh)

randomize
це щоб числа не повторювалися при включенні програми
ну тобто. включив прогу тиснеш кнопку кілька разів
1)5
2)47
3)86
це я цілими числами
ну і якщо вимкнеш прогу і по-новому включиш при серійному натисканні кнопки буде теж самі числа з тією ж послідовністю
це без randomize, а знім такого не буде

А те, що повторюються таким чином
1)3
2)69
3)1
4)3
5)8
6)1
ЦЕ НЕ ВІДНОСИТЬСЯ До randomize
щоб такого уникнути Андрій уже відповів))

Begzod

у мене на комп'ютері visual c++.net. Не можу знайти підручники, вихідники по ньому. Допоможіть ПЖС.

Ali05

Бачив у книгарні підручник з Visual C++.Net "Микита Культин Основи програмування в Microsoft Visual C++ 2010", там показано, як створювати графічні програми під Windows (WinForms).

Кулхацкер Нінтендо

цікаво, в чому ж полягає його "поганість"?

Кулхацкер

Без вміння нормально викладати матеріал і привчанні вас, панів, до поганого стилю програмування, а-ля імена змінних/функцій транслітом.

Edward Кулхацкер

Міністерство освіти і науки Російської Федерації

Федеральна державна бюджетна освітня установа

вищої професійної освіти

«УФІМСЬКИЙ ДЕРЖАВНИЙ НАФТОВИЙ

ТЕХНІЧНИЙ УНІВЕРСИТЕТ"

Кафедра обчислювальної техніки та інженерної кібернетики

Створення програми c графічним інтерфейсомкористувача в середовищі microsoft visual studio 2010

Навчально-методичний посібник

для проведення лабораторних та практичних занять

зі студентами напряму

230100 (09.03.01) «Інформатика та обчислювальна техніка»

У навчально-методичному посібнику наведено теоретичні відомості, завдання для практичних та лабораторних робіт курсу «Програмування».

Посібник адресований викладачам дисципліни, а також студентам напряму: 230100 «Інформатика та обчислювальна техніка».

Укладачі: Габдулліна А.А., ст. викладач каф. ВПС

Дружинська Є.В., ст. викладач каф. ВПС

Рецензент: Філіппов В.М., к.т.н., доцент каф. ВПС.

1. Теоретичні відомості 4

1.1. Основні поняття 4

1.2. Знайомство із програмою Windows Form у Microsoft Visual Studio 2010 4

1.3. Елемент керування Form 7

1.5. Функція MessageBox 9

1.6. Елемент керування TextBox 10

2. Практичне завдання. Знайомство з програмою Windows Form у Microsoft Visual Studio 2010 12

2.1. Структура оцінювання виконаної роботи 12

2.2. Порядок виконання практичної роботи 12

3. Лабораторна робота. Розробка програм у середовищі Microsoft Visual Studio 2010 16

3.1. Порядок виконання лабораторної роботи 16

3.2. Завдання 1. Табулювання функції та обчислення її значень у зазначеному інтервалі із заданим кроком 16

3.3. Індивідуальні завдання 19

3.4. Завдання 2. Обробка двовимірних масивів 21

3.5. Індивідуальні завдання 27

  1. Теоретичні відомості

  1. 1.1. Основні поняття

Автоматизація інформаційних процесів нині представляється, насамперед, розробкою програмного додатка з графічним інтерфейсом користувача (GUI), управляючого потоками даних.

Графічний інтерфейс користувача (Graphical User Interface, GUI) це система засобів для взаємодії користувача з пристроєм, заснована на представленні всіх доступних користувачеві системних об'єктів та функцій у вигляді графічних компонентів екрана (вікон, кнопок, смуг прокручування тощо).

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

Стандартний графічний інтерфейс користувача повинен відповідати низці вимог:

Підтримувати інформаційну технологію роботи користувача із програмним продуктом;

Орієнтуватися на кінцевого користувача, який спілкується із програмою на зовнішньому рівні взаємодії;

Задовольняти принципу «шості», як у одну лінійку меню включають трохи більше 6 понять, кожне у тому числі містить трохи більше 6 опцій;

    зберігати стандартизоване призначення графічних об'єктів та, по можливості, їхнє розташування на екрані.

В об'єктно-орієнтованому програмуванні ми маємо справу з класами та об'єктами. Об'єкти – це складові типи даних: вони об'єднують кілька значень у єдиний модуль і дозволяють нам записувати та зберігати ці значення на ім'я. Іншими словами, об'єкт – це невпорядкована колекція властивостей, кожна з яких має ім'я та значення. Іменовані значення, що містяться в об'єкті, можуть бути елементарними типами, наприклад числами або рядками, так і іншими об'єктами.

Під час створення не консольних додатків, основним поняттям є Форма.

Форма – це контейнер розміщувати елементів управління середовища розробки.

Властивості – можливість отримання доступу до інформації, що зберігається у цьому елементі.

Методами називають набір дій, які може здійснювати об'єкт.

Подія – дія, розпізнаване об'єктом (наприклад, клацання мишею, натискання клавіші), якого можна запрограмувати відгук, тобто. реакцію об'єкта на подію.

У цій статті йдеться про створення найпростіших додатків із використанням форм мовою C++. Відразу хочу внести ясність: розробка «формових» С++ додатків буде здійснюватися серед Microsoft Visual Studio (увійдемо стороною головного конкурента від компанії Borland Software). Варто зазначити, що у Visual Studio є два способи зробити програму з формами, рішення приймається в момент створення нового проекту.

Перший з них – використовувати Windows Forms, що реалізує графічний інтерфейс користувача та входить до Microsoft.NET Framework. Цей підхід спрощує доступ до інтерфейсних елементів Microsoft Windowsзавдяки створенню обгортки для Win32 API в керованому коді. Якщо викласти свої думки у більш зрозумілій формі, то даний підхід дуже схожий на побудову консольного додатка, але трохи складніший т.к. використовує форми.

Другий спосіб заснований на використання Microsoft Foundation Classes (MFC), бібліотеці, яка бере на себе турботу про створення каркасу програми. На відміну від першого, MFC "з коробки" використовує паттерн MVC (Model-View-Cont roller). Даний підхід складніше першого, але спираючись на нього можна створити каркас для вельми цікавих додатків, наприклад, текстового редактораабо використовувати компонент Ribbon і зробити меню як у відомому MS Office 2010.

Створення програми у MS Visual Studio

Давайте створимо нову програму: File->New->Project. У вікні як на малюнку вище знайдіть і виберіть Windows Forms Application, далі вкажіть назву (app1) і розташування нового проекту і підтвердіть його створення натисканням кнопки «OK».

Перш ніж розпочати безпосередньо програмування, слід зрозуміти, що таке подія. Подія це дія, що відбувається за певних умов. Найпростішими (і найпоширенішим і) можна вважати Load, Click… розглянемо деякі з них докладніше:

  • Activated - подія, що виникає під час активізації елемента.
  • Click – виникає при одиночному натисканні на елемент.
  • DoubleClick - подвійне клацання по елементу.
  • HelpRequested – спрацьовує при натисканні клавіші .
  • Paint – виникає, коли елемент перемальовується.
  • MouseLeave - подія спрацьовує, коли курсор залишає межі елемента.

Не слід забувати, що властиві елементу події залежить від його типу. Щоб переглянути всі доступні для об'єкта форми події, слід виділити його та у вікні властивостей вибрати значок блискавки. Нижче наведено частину подій для елемента Form1. Як можна бачити для події Load вибрано функцію Form1_Load, отже код, що міститься в цій функції, буде викликаний при завантаженні форми.

Відкрийте файл Form1.h, там буде такий код:

Private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)( )

Це та сама функція Form1_Load, яка спрацьовує при завантаженні форми. Давайте переконаємось у цьому, додавши на форму компонент TextBox.

Для цього відкрийте ресурс форми та виділіть його. Далі виберіть панель з інструментами Toolbox та перетягніть компонент TextBox на форму. Модифікуйте функцію Form1_Load таким чином:

Private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) ( textBox1->Text = "Hello, World!"; //textBox1 – ім'я доданого вами текст боксу )

Запустіть проект, у результаті має з'явитися таке повідомлення:

На цьому поки що все, продовження в наступних уроках.

Останнє оновлення: 26.05.2019

Xamarin.Forms візуальний інтерфейс складається зі сторінок. Сторінка є об'єктом класу Page , вона займає весь простір екрану. Тобто те, що ми бачимо на екрані мобільного пристрою- Це сторінка. Програма може мати одну або кілька сторінок.

Сторінка в якості вмісту приймає один із контейнерів компонування, в який у свою чергу розміщуються стандартні візуальні елементи типу кнопок та текстових полів, а також інші елементи компонування.

Візьмемо створений у колишній темі проект HelloApp (або створимо новий). За замовчуванням весь інтерфейс створюється в класі App, який міститься у файлі App.xaml.cs і який представляє поточну програму:

Його код за замовчуванням:

Using System; using Xamarin.Forms; using Xamarin.Forms.Xaml; namespace HelloApp ( public partial class App: Application ( public App() ( InitializeComponent(); MainPage = new MainPage(); ) protected override void OnStart() ( // Handle when your app starts ) protected override void OnSleep() ( / / Handle when your app sleeps ) protected override void OnResume() ( // Handle when your app resumes ) ) )

Робота класу App починається з конструктора, де спочатку викликається метод InitializeComponent(), який виконує ініціалізацію об'єкта, а потім встановлюється якість MainPage. Через цю властивість клас App встановлює головну сторінкупрограми. У цьому випадку вона визначається класом HelloApp.MainPage, тобто тим класом, який визначено у файлах MainPage.xaml та MainPage.xaml.cs.

Але даний шляхне єдиний. Xamarin.Forms дозволяє створювати візуальний інтерфейс як за допомогою C# коду, так і декларативним шляхом за допомогою мови xaml, аналогічно html, або комбінуючи ці підходи.

Створення інтерфейсу із коду C#

Додамо в проект HelloApp звичайний клас мовою C#, яку назвемо StartPage.

І визначимо у цьому класі такий вміст:

Using Xamarin.Forms; namespace HelloApp ( class StartPage: ContentPage ( public StartPage() ( Label header = new Label() ( Text = "Привіт з Xamarin Forms" ); this.Content = header; ) ) )

Цей клас представляє сторінку, тому успадковується від класу ContentPage. У конструкторі створюється мітка з текстом, яка задається як вміст сторінки (this.Content = header).

Щоб позначити MainPage як стартової сторінки, змінимо клас App:

Using Xamarin.Forms; namespace HelloApp ( public partial class App: Application ( public App() ( InitializeComponent(); MainPage = new StartPage(); ) protected override void OnStart() ( // Handle when your app starts ) protected override void OnSleep() ( / / Handle when your app sleeps ) protected override void OnResume() ( // Handle when your app resumes ) ) )

Тепер властивість MainPage вказує на щойно створену сторінку StartPage.

Також варто зазначити, що у Visual Studio є готовий шаблондля додавання нових класів сторінок із найпростішим кодом. Так, щоб додати нову сторінку, потрібно при додаванні нового елемента вибрати шаблон Content Page (C#) :

Цей клас додається в головний проектрішення (у разі це HelloApp).

Доданий клас сторінки матиме наступний код:

Using System; використовуючи System.Collections.Generic; using System.Linq; використовуючи System.Reflection.Emit; using System.Text; using Xamarin.Forms; namespace HelloApp ( public class Page1: ContentPage ( public Page1() ( Content = New StackLayout ( Children = ( New Label ( Text = " Hello Page " ) ) ) ) ) ) )

Цей клас також успадковуватиметься від базового класу ContentPage і матиме практично ту саму організацію, що й вище створений клас MainPage.

І також у класі програми ми можемо встановити цю сторінку як стартовий:

Using Xamarin.Forms; namespace HelloApp ( public partial class App: Application ( public App() ( InitializeComponent(); MainPage = new Page1(); ) //........... ) )

Сподобалась стаття? Поділіться з друзями!
Чи була ця стаття корисною?
Так
Ні
Дякую за ваш відгук!
Щось пішло не так і Ваш голос не було враховано.
Спасибі. Ваше повідомлення надіслано
Знайшли у тексті помилку?
Виділіть її, натисніть Ctrl+Enterі ми все виправимо!