Дати письмову відповідь на запитання

ПРАКТИЧНА РОБОТА №1

ТЕМА: Використання модальних та немодальних форм

МЕТА: Навчитися використовувати в своїх програмах стандартні вікна.

 

ТЕОРЕТИЧНІ ВІДОМОСТІ

Властивості форми.

Property Active: Boolean; Містить True, якщо вікно активне (має фокус введення).

Property BorderIcons: TborderIcons; TborderIcons = set of TborderIcon; TborderIcon = (biSystemMenu, biMinimize, biMaximize, biHelp); Визначає присутність кнопок в заголовку вікна. BiSystemMenu – присутня кнопка виклику системного меню; biMinimize – присутня кнопка мінімізації; biMaximize – присутня кнопка максимізації. BiHelp – присутня кнопка виклику довідкової служби.

Property BorderStyle: TformBorderStyle; TformBorderStyle = (bsNone, bsSingle, bsSizeable, bsDialog, bsToolWindow, bsSizeToolWin); Визначає стиль рамки вікна: bsNone – вікно не має рамки і заголовка і не може переміщуватися і змінювати свої розміри; bsSingle – рамка товщиною в 1 піксель; таке вікно не може змінювати свої розміри; bsSisable – звичайна рамка; bsDialog – рамка діалогового вікна; вікно не може змінювати свої розміри; bsToolWindow – подібний bsSingle, але з зменшеним по висоті заголовком;

Property Canvas: Tcanvas; Канва для промальовки фона вікна. Цю властивість можуть використовувати деякі дочірні елементи.

Property СlientHeight: Integer; Висота клієнтської частини вікна.

Property ClientRect: Trect; Прямокутник клієнтської частини вікна.

Property ClientWidth: Integer; Ширина клієнтської частини вікна.

Property HelpFile: String; Кожна форма може мати індивідуальний Help файл, ім’я якого містить дана властивість. Якщо ім’я не вказано, використовується Help файл додатку.

Property Icon: Ticon; Містить піктограму вікна. Для головної форми ця властивість визначає також піктограму програми.

Property KeyPreview: Boolean; Якщо має значення True, форма отримує “события” від клавіатури, перед тим як їх отримає елемент з фокусом вводу.

Property MDIChildCount: Integer; В рамочному MDI вікні вказує кількість зв’язаних з ним дочірніх вікон.

Property MDIChildren [I: Integer]: Tform; В рамочному MDI вікні відкриває доступ до І-го дочірнього вікна.

Property Menu: TmainMenu;a Містить головне меню вікна.

TmodalResult = Low(Integer)..High(Integer);

Property ModalResult: TmodalResult; Для модального вікна містить результат діалогу.

Property PixelsPerInch: Integer; Визначає дозволену можливість в пікселях на один лінійний дюйм для етапу конструювання форми.

Tposition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly, poScreenCenter);

Property Position: Tposition; Визначає положення і розміри вікна в момент його появи на екрані; poDesigned – таке ж, як на етапі конструювання вікна; poDefault – положення і розміри визначаються Windows; poDefaultPosOnly – положення, як на етапі конструювання, а розміри визначає Windows; poDefaultSizeOnly – розміри, як на етапі конструювання, а положення визначає Windows. PoScreenCenter – в центрі екрану з розмірами, як на етапі конструювання.

TprintScale = (poNone, poProportional, poPrintToFit);

Property PrintScale:TprintScale; Визначає масштабування вікна при його друкуванні на принтері. PoNone – немає масштабування; Кожний піксель вікна виводиться одною точкою на бумазі; poProportional – форма масштабування така, щоб її образ на папері був максимально подібний до екранної; poPrintToFit – форма друкується з такими ж пропорціями, як на екрані, але з розмірами що заповнюють лист паперу.

Property Scaled: Boolean; Дозволяє/забороняє масштабувати форму, якщо значення її властивості PixelPerInch відмінне від поточного дозволу (разрешения) екрану.

TTileMode = (tbHorizontal, tbVertical);

Property TileMode:TtileMode;

Визначає стиль розташування дочірніх вікон MDI додатку при їх упорядкуванні мозаїкою.

Property WindowMenu: TmenuItem; Визначає пункт головного меню рамочного MDI вікна, до якого добавляються опції дочірнього вікна.

TwindowState = (wsNormal, wsMinimized, wsMaximized);

Property WindowState:TwindowState; Визначає стан вікна під час появи його на екрані. WsNormal – звичайне вікно; wsMinimized – мінімізовано до піктограми; wsMaximized – Розвернуто на весь екран.

На замітку, якщо в множені властивостей BorderIcon забрати кнопки biMaximize i biMinimize, а в властивість WindowState помістити значення wsMaximized, форма займе увесь простір екрану, навіть нижню панель задач.

 

ІІ.Методи форми.

 

Procedure ArrangeIcons; Впорядковує піктограми закритих дочірніх вікон MDI додатку.

Procedure Cascade; Розташовує дочірні вікна каскадом.

Procedure Close; Закриває вікно. Для головного вікна завершує роботу програми.

Function CloseQuery: Boolean; Повертає True, якщо можна закрити вікно.

Procedure DefocusControl; Removing: Boolean); Відбирає фокус вводу у дочірнього елемента Control. Якщо при цьому Removing=true, фокус введення отримує форма.

Procedure FocusControl (Control: TwinControl); Передає фокус вводу дочірньому елементу Control.

Function GetFormImage: Tbitmap; Містить поточне зображення вікно форми.

Procedure Next; Робить активним наступне MDI вікно.

Procedure Previous; Робить активним попереднє MDI вікно.

Procedure Tile; Розташовує дочірні MDI вікна мозаїкою.

Procedure Print; Друкує вікно на принтер.

Procedure Release; Чекає закінчення обробітку всіх подій форми і її дочірніх елементів, після чого знищує вікно і звільнює всю зв’язану з ним пам’ять.

Procedure SendCancelMode (Sender: Tcontrol); Відновлює початковий стан вікна: звільнює мишку, зупиняє прокрутку і закриває меню.

Procedure SetFocus; Передає фокус вводу формі. Форма при цьому повинна бути активною і видимою.

Procedure Show; Показує форму в немодальному режимі.

Function ShowModal:Integer; Показує форму в модальному режимі і повертає результат діалогу.

 

ІІІ.Події форми.

Property OnActivate: TnotifyEvent; Виникає в момент активізації вікна (при отриманні нею фокусу введення).

TcloseAction = (caNone, caHide, caFree, caMinimize);

TcloseEvent = procedure (Sender: TObject; var Action: TcloseAction) of object;

Property OnClose: TcloseEvent;

Виникає перед закриттям вікна. Параметр Action уточнює необхідні дії: caNone – не закривати вікно, caHide – сховати вікно; caFree – знищити вікно; сaMinimize – мінімізувати вікно.

TcloseQueryEvent = procedure (Sender: TObject; var CanClose: Boolean) of object;

Property OnCloseQuery: TcloseQueryEvent; Виникає перед закриттям вікна. В параметрі CalClose оброблювальник повідомляє про можливість закриття вікна.

Property OnCreate: TnotifyEvent; Виникає при створені вікна, але до його появлення на екрані.

Property OnDeactivate:TnotifyEvent; Виникає при передачі активності іншому вікну тієї ж програми.

Property OnDestroy: TnotifyEvent; Виникає при знищені вікна.

ThelpEvent = function (Command:Word; Data:Longint; var CallHelp: Boolean): Boolean of object;

Property OnHelp:ThelpEvent; Виникає при звертанні до довідкової служби. В параметрі CallHelp оброблювач повідомляє про можливість отримання допомоги.

Property OnHide: TnotifyEvent; Виникає перед зникненням вікна.

Property OnPaint: TnotifyEvent; Виникає при необхідності промальовки вікна.

Property OnResize: TnotifyEvent; Виникає при зміні розмірів вікна.

Property OnShow: TnotifyEvent; Виникає при появі вікна на екрані.

Завдання

Завдання №1.

Створити новий проект і зберегти в його в окремій папці.

Визначити повну назву файлів проекту, їх розмір.

Хід роботи

1.Спочатку запустимо Delphi. Для цього скористаємось кнопкою Пуск/Программы/ Borland Delphi N/ Delphi N. Після запуску Delphi містить новий проект.

Для відома: Для того щоб закрити проект потрібно скористатися головним меню File/ Close. Для створення нового проекту – File/ New Application.

2.Далі на диску С створимо папку з ім’ям Practugna1Z1. В неї збережемо наш новий проект. Для збереження скористуємось головним меню File/ Save all або відповідною кнопкою на панелі інструментів.

3.Відкриємо дану папку і заповнимо таблицю даними про найменування файлів, їх розмір та призначення.

Ім’я Розмір Призначення
     
     
     
     
     

 

Завдання №2.

Створення проекту який містить додаткові форми - модальну та немодальну.

Хід роботи

1.Створіть новий проект.

2.Помістіть в проект нову форму (Form2).

Для цього використайте головне меню File / New Form.

3.Далі щоб в модулі Unit1 можна було б використовувати нашу додаткову форму Form2 потрібно підключити модуль Unit2. Для автоматичного підключення потрібно скористатися головним меню File/Use Unit…(При цьому в редакторі коду повинна бути вибрана вкладка з модулем Unit1). В списку що з’явиться потрібно вибрати модуль який потрібно підключити (тобто Unit2) і натиснути OK.

4.Щоб додаткова форма з’являлася на екрані при клацанні правою клавішею миші по основній формі потрібно зробити наступні дії:

- вибрати основну форму (Form1) – щоб інспектор об’єктів містив в верхній частині напис: Form1:Tform1;

- в інспекторі об’єктів перейти на вкладку з подіями (Events);

- вибрати подію onClick. (Ця подія виникає при клацанні лівою клавішею миші по даній формі);

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

- в даній процедурі потрібно дописати код який буде виконуватися коли користувач буде клацати лівою клавішею миші по основній формі. Напишемо між Begin i End; наступний рядок: Form2.ShowModal; в результаті ви повинні отримати наступне:

 

procedure TForm1.FormClick(Sender: TObject);

begin

Form2.ShowModal;

end;

 

Як побачимо додаткова форма викликається модально.

5.До нашого проекту додамо ще одну форму (Form3), яка буде викликатися немодально.

6.Виберемо подію головної форми onKeyDown і два рази клацнемо правіше від напису.

7.В згенерованій процедурі добавимо код Form3.Show;

8.Запустимо проект і переконаємося що при клацанні по основній формі з’являється модальна форма (Form2), а при натисканні на будь-яку клавішу на клавіатурі  – немодальна (Form3).

9.Збережемо даний проект на диску С в папку Practugna1Z2.

 

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

Ім’я Розмір Призначення
     
     
     
     
     
     
     
     
     
     
     

 

В попередньому завданні були написана програма в стилі SDI. Наступним завданням буде створити програму яка містить головну форму і дві додаткові. Але написана вона повинна в стилі MDI.

Завдання № 3.

Створити програму в стилі MDI, яка містить головну форму і дві додаткові форми.

Хід роботи

1.Створіть новий проект.

2.У властивості FormStyle головної форми змініть значення з fsNormal на fsMDIForm.

3.Додайте до проекту ще дві форми – Form2 і Form3.

4. У властивості FormStyle обох цих форм змінюємо значення з fsNormal на fsMDIChild.

5.Запускаємо проект.

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

6.Відключемо автоматичне створення наших двох форм.

          Для цього використаємо головне меню Delphi – Project/Options… У вікні що з’явиться виберемо вкладку Forms. У списку Auto-create forms виділимо дві форми Form2 i Form3. Потім натиснемо кнопку зліва від форми з значком > і натиснемо кнопку Ок.

 

          Якщо запустити проект, то ми побачимо що додаткові форми вже не відображаються – це пояснюється тим що вони вже автоматично не створюються.

7.Нам потрібно створювати дані форми в подіях onMouseDown та onClick. В процедурі яка виконується при події onClick напишемо наступний код.

 

if not Assigned (Form2) then      //Перевірка на існування форми Form2

           Begin

  Form2:=TForm2.Create(Application); //Створення форми

            end;

 

8.Аналогічний код потрібно написати в процедурі яка виконується при події onMouseDown, лише потрібно змінити Form2 на Form3:

if not Assigned (Form3) then //Перевірка на існування форми Form3

           Begin

  Form3:=TForm3.Create(AppLication); //Створення форми

            end;

9.Коли ми виконаємо проект то побачимо що форми з’являються, але закрити їх не можна. Для того щоб вони закривалися потрібно в події яка виникає при закриті форми знищувала дану форму:

- отже, виберемо форму Form2.

- в події onClose напишемо наступний код:

       Action:=caFree; //Звільнення екземпляру форми при її закритті.

- в події onDestroy напишемо:

       Form2:=nil; //Звільнення значення змінної при знищені форми.

10.Аналогічні дії виконаємо для форми Form3.

11. Збережемо даний проект на диску С в папку Practugna1Z3.

 

Дати письмову відповідь на запитання

1.В якому році з’явилася перша версія Delphi? (1995-ому році для 16-бітної Windows 3.1.)

_________________

2.Як називається версія Delphi для ОС Linux? (Kylix)

_________________

3.З яких вікон складається середовище Delphi?

_________________________________________________________________________

4.З яких файлів складається проект?

_________________________________________________________________________

5.В якому файлі і яким рядком підключається ресурсний файл?

_________________________________________________________________________

6. В якому файлі і яким рядком підключається файл форми?

_________________________________________________________________________

7.Які значення може приймати властивість форми FormStyle?

_________________________________________________________________________

8.Якого стилю можуть бути програми?

_________________________________________________________________________

9.Як викликати модальну форму (Form2)?

_________________________________________________________________________

10.Як викликати немодальну форму (Form2)?

_________________________________________________________________________

 


Дата добавления: 2020-04-08; просмотров: 64; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!