окумент: Зберегти і Зберегти як. КомандаСохраніть використовується для збереження змін в існуючому документі, а команда Зберегти як - для збереження документа, який не існує на диску або для збереження копії існуючого документа під іншим ім'ям.
Для початку ми реалізуємо команду Файл - Зберегти як. Команда Зберегти какдолжна дозволити вибрати каталог і ім'я файлу для документа за допомогою компонента TSaveDialog. Змініть властивості TSaveDialog:
У поле властивості DefaultExt введіть txt, щоб у діалоговому вікні до імені файлу автоматично додавалося розширення .txt.
Створіть такий же фільтр, як і для компонента TOpenDialog.
Розкрийте групу Options і привласніть властивості ofOverwritePrompt значеніеTrue.
Після того як ви включите властивість ofOverwritePrompt в набір Options, компонент TSaveDialog автоматично згенерує застережливе повідомлення, якщо користувач спробує використовувати ім'я файлу, який вже використовується.
Тепер відкрийте редактор Action List і створіть дію Зберегти як:
У поле властивості Caption введіть Зберегти як ...
Привласніть дії ім'я SaveAsAction.
У поле властивості Hint введіть Зберегти активний документ під новим ім'ям.
Нарешті, помістіть код в обробник подій OnExecute, a потім призначте цю дію неіменованого пункту в меню Файл.
Малюнок 11. Код програми
Дія Зберегти має виконати дві речі: зберегти зміни, вироблені в активному документі, якщо документ існує, або відобразити діалогове вікно Зберегти як, якщо документ не існує.
Щоб створити дію Зберегти, виконайте наступні кроки:
Створіть нову дію в редакторі Action List.
У поле властивості Caption нового дії введіть Зберегти.
У поле властивості Hint введіть Зберегти активний документ.
Привласніть дії ім'я SaveAction.
Призначте властивості Shortcut комбінацію Ctrl + S.
Нижче показаний обробник події OnExecute дії Зберегти:
Малюнок 12. Код програми
Створення нових документів
Команда Файл - Новий сама по собі дуже проста, оскільки ми повинні виконати всього лише наступні кроки:
Очистити змінну FOpenedFile, щоб додаток знало, що активний документ не існує.
Видалити існуючий текст з компонента Memo1, викликавши метод Clear.
Щоб створити дію Новий, виконайте перелічені нижче кроки:
Створіть нову дію в редакторі Action List.
У поле властивості Caption введіть Новий.
У поле властивості Hint введіть Створити новий документ.
Привласніть дії ім'я NewAction.
Призначте властивості ShortCut комбінацію Ctrl + N.
Додайте код в обробник події OnExecute.
Малюнок 13. Код програми
Призначте дію NewAction неіменованого пункту в меню Файл.
Захист даних користувача
Тепер, коли робота над меню File завершена, необхідно написати ще кілька рядків коду, який захищатиме вміст активного документа.
Малюнок 14.Окно програми
Грамотно спроектоване додаток повинен перевіряти, зраджував користувач вміст активного документа, і питати користувача про те, чи бажає він зберегти документ, перш ніж дозволяти користувачеві:
Створювати новий документ.
Відкривати існуючий документ.
Закривати всі додаток.
Наприклад, якщо в редакторі Блокнот ви введете деякий текст, а потім спробуєте закрити редактор, то він автоматично повідомить про те, що ви не зберегли найостанніший варіант змін в документі, і дозволить або зберегти їх, або скасувати зміни в активному документі.
Реалізувати описана поведінка найкраще, якщо створити функцію, яка перевірятиме, зраджував користувач текст в редакторі, і питати користувача, чи бажає він скасувати або зберегти зміни.
Малюнок 15. Код програми
Якщо текст, відображений в редакторі, не був змінений, функція возвращаетTrue, в результаті чого ми можемо або закрити всі додаток, або замінити текст в редакторі порожнім або існуючим документом. Якщо текст в редакторі був змінений, викликається функція MessageDlg, щоб користувач міг зберегти або скасувати текст, відображен...