MB_YESNOCANCEL or MB_ICONWARNING);

// Якщо натиснута кнопка ‘Так’

// викликати оброблювач збереження Save1Click

If Result = IDYES Then Save1Click(Sender);

// Інакше повернутися до попереднього режиму роботи

If Result = IDCANCEL Then Exit;

end;

// Стирання рядків у компоненті Memo, якщо вони є

If Memo.Lines.Count > 0 Then Memo.Clear;

// Установити значення FileName діалогу SaveDialog

// у порожній рядок (тобто файл ще не збережений)

SaveDialog.FileName := ‘‘;

end;

2. Створення процедури оброблення команди Open меню File. Перший блок оброблювача повинен перевірити, чи був змінений зміст компонента Memo і, якщо так, викликати діалог збереження. Цей блок програми ідентичний введеному в процедурі оброблення команди New, тому можна просто викликати процедуру оброблення:

New1Click(Sender);

Далі необхідно викликати діалог FileOpen. Якщо у ньому натиснута кнопка Ok – відкрити файл за допомогою методу LoadFromFile;

New1Click(Sender); // Викликати оброблювач очищення вікна

// Очистити властивість FileName

OpenDialog.FileName := ‘‘;

If OpenDialog.Execute Then // Якщо здійснений вибір файлу

begin

// Завантажити у редактор зміст файлу,

// обраного в діалозі

Memo.Lines.LoadFromFile(OpenDialog.FileName);

// Присвоїти імені файлу в діалозі збереження

// ім’я файлу, обраного у діалозі відкриття

SaveDialog.FileName := OpenDialog.FileName;

end;

3. Процедура оброблення для команди меню Save повинна містити наступний код:

// Якщо ім’я файлу вже було введене

If SaveDialog.FileName <> ‘’ Then

Begin

// Зберегти файл

Memo.Lines.SaveToFile(SaveDialog.FileName);

// Обнулити прапорець модифікації тексту

Memo.Modified := false;

End

// Інакше викликати діалог Зберегти Як

else SaveAs1Click(Sender);

4. Процедура оброблення команди меню SaveAs (Зберегти Як) містить наступний код:

If SaveDialog.Execute Then

Begin

Memo.Lines.SaveToFile(SaveDialog.FileName);

Memo.Modified := false;

End;

5. Використовуючи Інспектор об’єктів, поставте у відповідність кнопкам швидкого доступу на панелі інструментів написані процедури оброблення команд меню Open і Save.

6. Напишіть процедуру оброблення для пункту меню Exit1, вона складається з виклику одного методу Close;

7. Для процедури оброблення пункту меню Cut введіть Memo.CutToClipboard; для Copy введіть Memo.CopyToClipboard; для Paste введіть Memo.PasteFromClipboard; для Select All введіть Memo.SelectAll;

8. Збережіть проект (File → Save All). Запустіть додаток і вивчіть його властивості.

Крок 3. Створення вікна About.Вікно About містить стислу інформацію про додаток (назву, версію програми, ім’я розробника, відомості про авторські права, а також значок додатка). Вікно About звичайно має одну кнопку – Ok.

1. Згенеруйте процедуру оброблення пункту About меню Help і введіть туди наступний код: AboutBox.ShowModal;

ShowModal – метод відображення на екрані модального вікна. Модальним називається вікно, що дозволяє продовжити роботу з додатком тільки після свого закриття.

2. Створіть нову форму для діалогового вікна About (для цього натисніть кнопку New Form на панелі інструментів). Збережіть модуль з ім’ям About.

3. Зменште розмір нової форми до розмірів типового вікна About. Змініть ім’я нової форми на AboutBox, заголовок (Caption) на ‘Про програму…

4. Властивість BorderStyle установіть в bsDialog (це зробить неможливим зміну розмірів вікна).

5. Розташуйте на формі кілька текстових міток Label (палітра Standard) і введіть у них необхідні відомості про програму (для зміни шрифту використовуйте властивість Font компонента Label).

6. Розташуйте на формі (ліворуч від тексту) компонент Image (палітра Additional). Використовуючи кнопку “…” властивості Picture завантажте іконку додатка (папка \Program Files\ Common Files\ Borland Shared\ Images\ Icons). Розташуйте іконку належним чином.

7. Розташуйте на формі About кнопку BitBtn (палітра Additional). Властивість Kind кнопки установіть у bkOk. Для кнопки BitBtn не треба писати процедуру оброблення – вона вже містить у собі код закриття форми.

8. Останньою рисою в оформленні вікна About може стати розташування на формі компонента Bevel (палітра Additional). Обведіть за допомогою Bevel рядки тексту – це придасть формі об’ємний вигляд. Властивість Shape змініть на bsFrame.

9. Для того, щоб викликати вікно About із головного модуля необхідно в рядок Uses додати ім’я модуля About. Це можна зробити й автоматично: у головному модулі програми виберіть у меню File пункт Use Unit і натисніть ліву кнопку миші у діалоговому вікні на модулі About.

Крок 4. Створення підказок

1. У системі Delphi можна організувати систему спливаючих підказок – для цього треба у властивість Hint відповідного компонента внести рядок, що буде відображатися при затримці над компонентом курсору миші і установити властивість ShowHint компонента в true. Традиційно підказки створюються для кнопок швидкого доступу; так, для кнопки відкриття вікна FileOpenBtn у властивість Hint можна помістити рядок Відкрити. Зробіть спливаючі підказки для всіх кнопок вашого додатка.

2. Підказку звичайно роблять із двох частин, розділених символом «|», наприклад, для кнопки FileOpenBtn у Hint можна внести Відкрити | Кнопка відкриття файлу. Такий підхід дозволяє використовувати як спливаючу підказку першу частину рядка Hint, друга ж частина традиційно відображається у рядку стану StatusBar внизу форми.

Щоб реалізувати цей підхід, необхідно написати процедуру оброблення події OnHint, що відбувається у додатку (Application) при наведенні миші на деякий компонент. Це подія не відображається в інспекторі об’єктів, тому її процедуру оброблення треба писати самостійно.

Створіть процедуру оброблення події OnCreate (при створенні) для форми Editor (він генерується автоматично при подвійному натисканні лівої кнопки миші на OnCreate в інспекторі об’єктів) і внесіть туди рядок:

Application.OnHint := DisplayHint;

Цей запис означає, що при події OnHint (появі підказки), що відбувається у додатку (Application) необхідно викликати метод DisplayHint.

Опис методу DisplayHint.Внесіть в опис класу TEditor рядок, що є описом процедуривідображення підказки:

procedure DisplayHint(Sender : TObject);

Причому цей рядок повинен бути занесений у розділ public.

Визначення методу DisplayHint.У розділ implementation включіть визначення методу DisplayHint, що заносить у рядок SimpleText панелі StatusBar підказку Hint:

procedure TEditor.DisplayHint(Sender : TObject);

Begin

StatusBar.SimpleText := GetLongHint(Application.Hint);

End;

Функція GetLongHint виділяє довгу частину (розташовану за символом | ) підказки Hint.

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

1. Як вивести на екран вікно повідомлення? Як задати заголовок, текст, комбінацію кнопок та іконок вікна? Як проаналізувати код натиснутої кнопки вікна повідомлення?

2. Розкрийте технологію створення вікна About. Що таке модальне вікно? Який метод відображення на екрані модального вікна? Як зафіксувати розміри вікна? Як розташувати на формі рисунок? У чому полягає особливість кнопки BitBtn?

3. Як відобразити спливаючі підказки у рядку стану форми? Як створити власну процедуру оброблення будь-якої події, яка не відображається в Інспекторі Об’єктів?


Лабораторна робота № 6

Тема: Створення програми для перегляду рисунків.

Мета:Ознайомитись із технологією розроблення багатовіконного графічного інтерфейсу Windows (Multiple Document Interface).

Практичні завдання

Крок 1. Створення форми для головного вікна

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

2. Змініть ім’я форми на MainForm, заголовок на Picture Editor, висоту встановіть в 450, ширину в 575 пікселів, властивість FormStyle встановіть в fsMDIForm (це означає, що форма буде використовуватися як головне вікно багатодокументного MDI інтерфейсу).

3. Розташуйте на формі компонент MainMenu (вкладка Standard) і змініть його ім’я на MainMenu. Двічі натисніть ліву кнопку миші на іконці MainMenu і, використовуючи контекстне меню (права кнопка миші), виберіть пункт Insert From Template… (Вставити із шаблона…). У вікні, що розкрилося, виберіть пункти File Menu (файлове меню) і Window Menu (віконне меню). З меню File видаліть пункти Print і Print Setup, а з меню WindowNew Window, Hide і Show. Поставте у відповідність пунктам меню клавіші швидкого доступу. Закрийте редактор меню.

4. Збережіть модуль з ім’ям MainUnit, а проект з ім’ям PixEditor.

Крок 2. Створення підлеглої (дочірньої) форми для відображення рисунків

1. Створіть нову форму (кнопка New Form на панелі інструментів).

2. Змініть ім’я нової форми на Child, заголовок на Новий рисунок, задайте колір форми clWhite, властивість FormStyle встановіть в fsMDIСhild (таке значення властивості FormStyle повинні мати всі дочірні форми багатовіконного інтерфейсу).

3. Розташуйте на формі компонент Image – зображення (палітра Additional). Змініть його ім’я на Image, Stretch встановіть в true (що дозволить рисунку автоматично пристосовуватися до розмірів компонента Image), Align установіть в alClient (компонент при цьому заповнить всю робочу область форми).

4. Збережіть створений разом з формою текстовий модуль з ім’ям ChildUnit.

5. Помістіть у головний модуль (MainUnit) посилання на модуль ChildUnit. Для цього перейдіть у головний модуль програми, виберіть у меню File пункт Use Unit і двічі натисніть ліву кнопку миші у діалоговому вікні на модулі ChildUnit.

6. Запустіть програму. Всередині головної форми Picture Editor буде відображатися підлегла (дочірня) форма Child. Простежте за поведінкою дочірньої форми при її переміщенні, а також натисканні кнопок згортання, мінімізації/максимізації і закриття.

Особливістю поведінки підлеглої форми є те, що вона згортається при натисканні кнопки закриття вікна.

Щоб при натисканні кнопки закриття підлегла форма дійсно закривалася, треба згенерувати для неї процедуру оброблення події OnClose (для цього двічі натисніть ліву кнопку миші на рядку події OnClose в інспекторі об’єктів для форми Child) і вставить у неї рядок:

Action := caFree;

Цей рядок присвоює значення caFree(звільнити форму) параметру Action, переданому всередині дужок процедури оброблення події OnClose. За умовчання, для підлеглих MDI форм значення параметра Action встановлене в caMinimize, що і зумовлює згортання форми при натисканні кнопки закриття.

Запустіть додаток і вивчіть його властивості.

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

Для того, щоб форма Child не відображалася відразу після запуску додатка, її треба видалити зі списку автоматично створюваних форм у меню Project ® Options, вкладка Forms. Для цього перемістіть форму Child зі списку Autocreate forms (автоматично створювані форми) у Available forms (доступні форми).

Запустіть програму і перегляньте результати програмування.