Тема: Створення багатофункціонального текстового процесора. 


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



ЗНАЕТЕ ЛИ ВЫ?

Тема: Створення багатофункціонального текстового процесора.



Мета: Ознайомитись із технологією створення багатофункціонального текстового процесора.

 

Завдання

Крок 1. Відкриття проекту

Запустіть систему програмування Delphi. Відкрийте проект зі створення одновіконного текстового редактора, що Ви розробляли на попередньому занятті.

Крок 2. Написання коду

1. Створення нового файлу з попередньою перевіркою збереження поточного файлу.

Для створення інтерфейсу необхідне виведення вікна повідомлення (функція MessageBox), що слугує для підтвердження команд (створення, збереження, відкриття файлу). Викликається вікно таким чином:

Application.MessageBox(‘Текст вікна’, ‘Заголовок вікна’,

комбінація кнопок or іконок вікна);

Для завдання комбінації кнопок Yes – Так, No – Ні, Cancel – Скасувати, що відображаються на поверхні вікна повідомлення, використовується константа MB_YESNOCANCEL.

Для завдання іконки попередження (icon warning) використовується константа MB_ICONWARNING.

При цьому функція MessageBox повертає код натиснутої клавіші (IDYES, IDNO, IDCANCEL), який використовується для подальшого аналізу.

Згенеруйте процедуру оброблення команди New меню File і введіть туди наступний код (при написанні оброблювачів змінюйте імена команд із прийнятих за умовчання New1, Save1, Open1, SaveAs1 на New, Save, Open, SaveAs і т. ін.):

procedure TEditor.NewClick(Sender: TObject);

Var Result: Integer;

begin

If Memo.Modified Then //Якщо були зміни у редакторі Memo

begin // Генерація вікна повідомлення MessageBox

Result:= Application.MessageBox(‘Зберегти зміни?’,

‘Підтвердження збереження’,

MB_YESNOCANCEL or MB_ICONWARNING);

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

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

If Result = IDYES Then SaveClick(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, тому можна просто викликати процедуру оброблення:

NewClick(Sender);

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

NewClick(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 SaveAsClick(Sender);

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

If SaveDialog.Execute Then

Begin

Memo.Lines.SaveToFile(SaveDialog.FileName);

Memo.Modified:= false;

end;

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

6. Напишіть процедуру оброблення для пункту меню Exit, вона складається з виклику одного методу 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. Код програми.

3. Відповісти на питання.

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

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

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

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

 

Література

1. Александровский А. Delphi 5. Разработка корпоративных приложений. – М.: ДМК, 2000. – 512 с.

2. Архангельский А. Я. Object Pascal в Delphi. – М.: ЗАО «Издательство Бином», 1999. – 224 с.

3. Архангельский А. Я. Программирование в Delphi 6. – М.: ЗАО «Издательство Бином», 2002. – 1120 с.

4. Бобровский С. Delphi 5: Учебный курс. – СПб.: Питер, 2002. – 640 с.

5. Вирт Н. Алгоритмы + структуры данных = программы. – М.: Мир, 1985. – 406 с.


 

 

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



Поделиться:


Последнее изменение этой страницы: 2016-04-18; просмотров: 189; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.41.187 (0.024 с.)