Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
«Інструментальні засоби візуального програмування» С++ Builder
ЛАБОРАТОРНА РОБОТА №10.
Тема: Програмування циклічних процесів. Обєкти: Memo, MainMenu, PopupMenu, CheckBox, GroupBox
Мета роботи. Створити форму для розв'язування задачі табулювання функції.
Створити у ній головне меню (об'єкт типу MainMenu) з командами: закінчити роботу програми, табулювати функцію, очистити поля виведення результатів, а також контекстове меню (РорирМеnи), що міститиме команду для очистки поля виведення. Результати табулювання вивести у багаторядкове поле редагування (об'єкт типу Мето). Передбачити можливість виведення результатів на екран, у файл, у масив. Напрямок виведення задати за допомогою трьох прапорців (об'єктів типу CheckBox), розташованих на панелі групи об'єктів (типу GroupBox) (див. рис. 9).
Теоретичні відомості.
Об'єкт Мето застосовують для створення багаторядкового редактора тексту. Крім звичайних властивостей, поле редагування Мето володіє ще такими:
Властивість |
Опис властивості |
Приклади значень |
HideSelection |
Збереження виокремлення фрагмента тексту у момент втрати фокусу |
True (виокремлення не зберігається), False (зберігається) |
Lines |
Задання початкового тексту у полі редагування |
Комплексна властивість (задається у діалоговому вікні) |
MaxLength |
Максимальна можлива кількість увeдeниx символів |
Наприклад, 50 п'ятдесят символів, 0 - без обмежень |
ScrollBars |
Наявність смуг прокручування |
ssNone (відсутні), ssHorizontal (горизонтальна), ssBoth (обидві) |
Об'єкт CheckBox використовують для створення незалежного дво- чи трипозиційного прапорця: увімкнено/вимкнено (/недоступний). Для цього об'єкта визначені такі дві нові властивості:
Властивість |
Опис властивості |
Приклади значень |
Allow/Grayed |
Наявність третьої позиції (сірий увімкнений) |
True (трипозиційний прапорець), False (дво-позиційний прапорець) |
State |
Стан прапорця |
cbGrayed (сірий), cbUnchecked (вимкнений), cbChecked (увімкнений) |
Панель групи об'єктів GroupBox призначена для розміщення на ній групи із кількох об'єктів. Панель групи використовують для покращення дизайну вікна програми. Властивості цього об'єкта аналогічні до описаних вище.
За допомогою об'єкта MainMenu створюють головне меню програми. Ось деякі властивості головного меню:
Властивість |
Опис властивості |
Приклади значень |
Items |
Команди меню |
Комплексна властивість (задається у діалоговому вікні) |
Tag |
Допоміжна змінна, використовується в тексті програми |
0; 8 (ціле число) |
За допомогою обєкта PopupMenu контекстове меню деякого компонента. Для «привязування» контекстного меню до конкретного обєкта необхідно його властивість PopupMenu надати значення імені (Name) конкретного контекстового меню. Розглянемо деякі властивості контекстного меню:
Властивість |
Опис властивості |
Приклади значень |
Alignment |
Вирівнювання меню відносно точки клацання правою клавішею миші |
paCenter (по центру), paLeft (зліва), paRight (справа) |
AutoPopup |
Автоматичний виклик контекстового меню |
True (викликається клацанням правою клавішею), False (викликається за допомогою методу Popup) |
Конкретна команда меню (головного чи контекстового) може мати такі властивості:
Властивість |
Опис властивості |
Приклади значень |
Break |
Розбиття меню у горизонтальному напрямку |
mbNone (без розбиття), mbBarBreak (розбиття з вертикальною рискою), mbBreak (розбиття без вертикальної риски) |
Shortcut |
Комбінація "гарячих" клавіш для виклику команди меню |
(None - відсутня), Ctrl+A, F8,Ctrl+F10 Shift+F3, Shift+Ctrl +F11 Ctrl+Del |
ХІД РОБОТИ
Клацніть у рядку Icon на значок, а потім на кнопці Load вікна Picture Editor, щоб отримати вікно Load picture. Відкрийте папку С: \ Program Files \ Common Files \ Borland Shared \ Images \ Icons, виберіть графічний файл з будь-якою піктограмою => Open => Ok.
Зауваження 1. Для того, щоб швидко вставити у форму декілька однотипних об'єктів, клацніть на піктограмі цього об'єкта, утримуючи натиснутою клавішу Shift. Тепер вставляння у форму всіх об'єктів цього типу відбуватиметься без повторного вибору піктограми. Якщо випадково вставите зайвий об'єкт, то вилучіть його за допомогою клавіші Delete. Щоб відмовитися від такого режиму, клацніть на зображенні стрілки на палітрі компонентів. Розмір, стиль і колір шрифтів виберіть на власний розсуд так, щоб форма виглядала якнайкраще. Save all.
Виокремте групу полів редагування та підписи до них і виконайте команду головного меню Edit (редагувати) => Align (вирівняти) => Horisontal - Left sides (горизонтально - ліві межі) => Vertical - Space equally (вертикально - рівномірно) => Ok. Виокремте текстове поле вигляду функції Edit => Align => Horisontal - Center in Window (горизонтально - до центру вікна) => Ok. Save All.
Для цього використайте компоненту GroupBox із закладки Standard. Змініть значення властивості Caption (підпис) цього об'єкта на слово "Виведення" (без лапок). Розмір, стиль і колір шрифту виберіть на власний розсуд. Збільшіть панель групи.
Для цього використайте компоненту CheckBox із закладки Standard палітри компонентів C++Builder. Вирівняйте прапорці, заздалегідь виокремивши їх (див. п. 6). Змініть значення властивості Caption (підпис) цих об'єктів на такі, як показано на рис. 9. Стиль і колір шрифтів виберіть на власний розсуд.
Для цього виокремте ці об'єкти та змініть значення їхніх властивостей Checked (контроль вибору) на True.
Для цього використайте компоненту Мето із закладки Standard палітри компонентів C++Builder. Збільшіть розміри поля. Властивість ScrollBars (наявність смуг прокручування) цього об'єкта задайте як ssBoth (будуть обидві смуги вертикальна і горизонтальна). File => Save All.
Для цього змініть властивість Text цих обєктів. Для набору символа десяткової крапки використайте символ, передбачений операційною системою комп'ютера.
Для цього у вікні Object Inspector змініть значення властивості Lines (рядки) об'єкта Memo1. Натиснувши на кнопку, викличте вікно редагування цієї властивості (вікно String list editor - редактор багаторядкового поля). Витріть слово Memo1 та закінчіть роботу з цим вікном, клацнувши на кнопці Ok.
Для цього використайте компоненти MainMenu і PopupMenu із закладки Standard. Розташуйте піктограми в довільному місці форми, на етапі виконання програми вони будуть невидимими.
Для цього виберіть об'єкт MainMenu1 і двічі клацніть на значенні його властивості Items. Інший шлях - двічі клацніть на самому об'єкті. У вікні, яке відкриється (Form1->MainMenu1), вибирайте мишею рамку команди і записуйте назву команди, наприклад, "Обчислення", як значення властивості Caption у вікні Object Ispector. Закрийте вікно створення команд головного меню Form1->MainMenu1.
Рис. 11, 12. Створення головного меню
Для цього аналогічно змініть значення властивості Items об'єкта PopupMenul за допомогою вікна Form1.PopupMenu 1 (виклик цього вікна див. у п. 14). У вікні Object Ispector введіть текст "Очистити поле виведення" без лапок як значення властивості Caption (рис. 13). За бажанням можете придумати ще якусь команду. Закрийте вікно Forml.PopupMenul. Збережіть форму (Save All).
Рис. 13. Створення контекстового меню
Методи об'єкта - це набір функцій, які, аналогічно до властивостей, застосовують до об'єкта. Як і у випадку властивості, ім'я об'єкта від імені його метода відокремлюється крапкою. Виконайте команду меню "Очистити поле виведення", не запускаючи програму на виконання. З'явиться заготовка функції реакції на подію виклику цієї команди. У ній запишіть команду виклику методу Clear для очищення поля виведення об'єкта Memo1:
Void _fastcall TForm1::N3Click(TObject *Sender) // Тут N3 ім'я команди
//"Очистити попе виведення", у вас може
// бути інший номер, його
{ // не виправляйте
Memo1 -> СІеаr(); // Викликаємо метод об'єкта Мето1, який
// очищає багаторядкове поле редагування
} // Тепер клацніть на формі
Void _fastcall TForm1 :: N5Click(TObject *Sender) // Тут N5 ім'я команди
{ // "Кінець"
exit(1); // Закриваємо вікно програми
} // Тепер клацніть на формі
Збережіть виконану на даний момент форму у своїй папці (File => Save All).
Двічі клацніть на команді контекстового меню "Очистити поле виведення" у вікні Form1. PopupMenu1 (виклик цього вікна див. у п. 14). Текст функції очищення такий самий, як і у команди головного меню, а саме: Memol -> Clear(); (див. п. 16).
Клацніть на формі і задайте властивість форми PopupMenu як PopupMenu1.
Зауваження 2. Значення властивості форми Menu автоматично встановлюється як MainMenu1 у момент створення головного меню (п. 13).
Поекспериментуйте з багаторядковим полем редагування Memo1, вводячи та коректуючи у ньому будь-який текст. Зверніть увагу на те, що в цьому вікні можна виконувати такі ж дії з текстом, як і в текстовому редакторі: виокремлювати фрагмент тексту, копіювати, переносити чи вилучати цей фрагмент. Витріть текст за допомогою команди головного меню "Очистити поле виведення". Ще раз введіть текст і витріть його за допомогою контекстового меню (для виклику контекстового меню форми потрібно клацнути правою клавішею миші на вільному місці форми). Закінчіть роботу програми, клацнувши на команді меню "Кінець".
Властивість Lines об'єкта типу Мето є комплексною, тобто також є об'єктом зі своїми властивостями та методами. Результат роботи цієї програми - це таблиця, що складається з декількох рядків. Щоб долучити (додати) у поле Memo1 новий рядок до таблиці, треба змінити значення комплексної властивості Lines (рядки) за допомогою її методу Append (вставити) з одним аргументом - символьним рядком: Memo1 ->Lines->Append (рядок символів). Виконайте команду "Протабулювати" з головного меню, клацнувши на ній один раз. З'явиться заготовка функції, яку заповніть так:
Void _fastcall TForm1 ::N3Click(TObject *Sender)
{
float x, y;
float a = StrToFloat(Edit1 -> Text); // Одержуємо числове значення лівої межі
float b = StrToFloat(Edit2 -> Text); // та правої межі
float h = StrToFloat(Edit3 -> Text); // Одержуємо числове значення кроку
Memo1->Lines->Append("X\tY"); // В об'єкт Memo1
// вставляємо рядок з підписами стовпців аргументу X і значення
// функції Y через табулятор \t. Починаємо табулювати з лівої межі,
// поки аргумент х не перевищить праву межу з певним допуском:
for (х = а; х < b + h / 2; х += h)
{ у = sin(x); // Обчислюємо значення функції
if (CheckBoxl -> Checked) // Якщо стоїть прапорець "На екран"
// Формуємо і вставляємо у поле Мето1 символьні рядки з аргументу
// та значення функції
Memol -> Lines -> Append(FloatToStrF(x, ffFixed, 2, 2) + '\t' + FloatToStrF( y, ffFixed, 2, 2));
}
ВПРАВИ
Підказка. Виконайте такі дії:
Підказка. У тілі функції Button1Click, що описує програмний код кнопки "Протабулювати", скористайтеся командами:
max = sin(a) + 1; //На початку функції:
…
if (max < у) max = у; // У циклі табулювання:
…
Двічі клацніть на ньому і на закладці Series, клацнувши на кнопці Add, у вікні TeeChart Gallery, виберіть піктограму потрібного графіка. Набору даних, що відповідатиме цьому типу графіка, присвоється стандартне ім'я Series1. Поставте чи заберіть прапорець 3D за власним бажанням => Ok. Поекспериментуйте з різними закладками вікна EditingChart1. Створіть додатковий пункт меню або вставте кнопку "Намалювати графік" для отримання графіка і запрограмуйте (наприклад, кнопку) так:
Void _fastcall TForm1::N8Click(TObject *Sender)
{
float a = StrToFloat(Edit1->Text); // Одержуємо числові значення лівої межі
float b = StrToFloat(Edit2->Text); // та правої меж
float h = StrToFloat(Edit3->Text); // Одержуємо числове значення кроку
for (float х = а; х < b; х += h)
{ Series1->Add( sin(x), FloatToStrF(x,ffFixed,2,2), cIRed );}
}
Поекспериментуйте з різними закладками вікна EditingChart1, щоразу запускаючи програму на виконання Заберіть легенду (Legend), маркери (Points) і підписи до них (Marks). Придумайте та вставте заголовок (Title) та підпис (Foot) до графіка.
Сторінка 9 із 9