Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
09 Відображення модальних і немодальних форм.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
95.74 Кб
Скачать

Індивідуальне завдання

 

Згідно порядкового номеру в журналі групи створити програму для: якщо парний номер – створення та виведення модальної форми; непарний – немодальної форми. Модальна або немодальна форма повинні запускатись з головної форми. Можна це зробити через меню або будь-яким іншим шляхом. Як пов’язати форми див. лабораторну “Середовище Delphi і архітектура проекту”.

 

Хід роботи

  1. Ознайомтесь з теоретичною частиною (обов’язково).

  2. Вкінці розробки в додатку 1 наведено приклад до лабораторної. Щоб переглянути його роботу, якщо у вас у наявності електронний варіант лабораторної роботи, виконайте такі кроки:

    1. Створіть новий проект та добавте у нього дві форми.

    2. Збережіть головну форму під іменем MainFrm, другу – під іменем ModelessFrm, третю – ModalFrm.

    3. Далі відповідно у властивості Name для основної форми вкажіть її назву як MainForm. Відповідну другу і тертю форми як ModelessForm та ModalForm.

    4. Тепер просто скопіюйте текст модулів з прикладу у модулі проекту, замінюючи текст модулів проекту повністю.

    5. Відкомпілюйте та запустіть програму.

  3. Виконайте індивідуальне завдання.

  4. Оформіть та здайте звіт.

 

Зміст звіту

  1. Тема.

  2. Мета.

  3. Написати відповіді на контрольні запитання.

  4. Описати виконане індивідуальне завдання.

  5. Висновок.

 

Форма захисту звіту

  1. Дайте відповіді на запитання викладача. Покажіть роботу реалізованого індивідуального завдання. (Студент повинен показати розуміння того, яким чином створити та підключити модальну або немодальну форми).

  2. Перевірка оформлення звіту.

 

Контрольні запитання

  1. Що таке модальна і немодальна форми?

  2. Як створювати та виводити модальну форму?

  3. Як створювати та виводити немодальну форму?

  4. Як використовувати властивість MoalResult? Які вона має значення?

  5. Для чого використовується функція 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.