Індивідуальне завдання
Згідно порядкового номеру в журналі групи створити програму для: якщо парний номер – створення та виведення модальної форми; непарний – немодальної форми. Модальна або немодальна форма повинні запускатись з головної форми. Можна це зробити через меню або будь-яким іншим шляхом. Як пов’язати форми див. лабораторну “Середовище Delphi і архітектура проекту”.
Хід роботи
Ознайомтесь з теоретичною частиною (обов’язково).
Вкінці розробки в додатку 1 наведено приклад до лабораторної. Щоб переглянути його роботу, якщо у вас у наявності електронний варіант лабораторної роботи, виконайте такі кроки:
Створіть новий проект та добавте у нього дві форми.
Збережіть головну форму під іменем MainFrm, другу – під іменем ModelessFrm, третю – ModalFrm.
Далі відповідно у властивості Name для основної форми вкажіть її назву як MainForm. Відповідну другу і тертю форми як ModelessForm та ModalForm.
Тепер просто скопіюйте текст модулів з прикладу у модулі проекту, замінюючи текст модулів проекту повністю.
Відкомпілюйте та запустіть програму.
Виконайте індивідуальне завдання.
Оформіть та здайте звіт.
Зміст звіту
Тема.
Мета.
Написати відповіді на контрольні запитання.
Описати виконане індивідуальне завдання.
Висновок.
Форма захисту звіту
Дайте відповіді на запитання викладача. Покажіть роботу реалізованого індивідуального завдання. (Студент повинен показати розуміння того, яким чином створити та підключити модальну або немодальну форми).
Перевірка оформлення звіту.
Контрольні запитання
Що таке модальна і немодальна форми?
Як створювати та виводити модальну форму?
Як створювати та виводити немодальну форму?
Як використовувати властивість MoalResult? Які вона має значення?
Для чого використовується функція Assigned?
Додаток 1
Повний текст прикладу програми до лабораторної
////////////////////////////////////////////////////////////////////////////
////// Головна форма
Unit MainFrm;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Menus;
type
TMainForm = class(TForm)
mmMainMenu: TMainMenu;
mmiForms: TMenuItem;
mmiModal: TMenuItem;
mmiModeless: TMenuItem;
procedure mmiModalClick(Sender: TObject);
procedure mmiModelessClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
uses Modalfrm, ModelessFrm;
{$R *.DFM}
procedure TMainForm.mmiModalClick(Sender: TObject);
begin
ModalForm := TModalForm.Create(Application); // Створення форми ModalForm
try
if ModalForm.ShowModal = mrOk then // Показати форму в модальному стані
{ do something }; // Виконання деякого коду
finally
ModalForm.Free; // Звільнення instance форми
ModalForm := nil;
end;
end;
procedure TMainForm.mmiModelessClick(Sender: TObject);
begin
{ Потрібно переконатися чи змінна пов’язана уже з чимось }
if not Assigned(Modeless) then
{ Створення instance форми}
Modeless := TModeless.Create(Application);
Modeless.Show; // Показати форму в немодальному вигляді
end;
end.
////////////////////////////////////////////////////////////////////////////
//////Немодальна форма
unit ModelessFrm;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TModeless = class(TForm)
btnCancel: TBitBtn;
btnOK: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Modeless: TModeless;
implementation
{$R *.DFM}
procedure TModeless.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree; // Очищення при закритті
end;
procedure TModeless.FormDestroy(Sender: TObject);
begin
Modeless := nil; // Встановлення NonModalForm змінної на nil при знищенні.
end;
procedure TModeless.btnCancelClick(Sender: TObject);
begin
ShowMessage('Cancel Натиснута');
end;
procedure TModeless.btnOKClick(Sender: TObject);
begin
ShowMessage('Ok Натиснута');
end;
end.
////////////////////////////////////////////////////////////////////////////
//////Модальна форма
unit ModalFrm;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TModalForm = class(TForm)
btnCancel: TBitBtn;
btnOK: TBitBtn;
btnModalResult: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;
var
ModalForm: TModalForm;
implementation
{$R *.DFM}
end.
