Лабораторна робота №6
Тема: Вивчення стандартних діалогів.
Мета: ознайомитися з особливостями застосування стандартних діалогів TOpenDialog, TSaveDialog, TFontDialog, TFindDialog й TReplaceDialog сторінки Dialogs палітри компонентів та навчитися використовувати їх в процесі візуальної побудови додатку.
Теоретичні відомості
До складу Windows входить ряд типових діалогових вікон, таких як вікно вибору файлу, що завантажується, вікно вибору шрифта, вікно для налаштування принтеру і т.і. В Delphi реалізовані класи, об’єкти яких дають програмісту зручні способи створення та використання таких вікон.
Робота зі стандартними діалоговими вікнами здійснюється в три етапи. Спочатку на формі розміщується відповідний компонент і здійснюється налаштування його властивостей (потрібно зазначити, що безпосередньо компонент-діалог не видимий під час виконання програми, видимим є тільки вікно, що створюється компонентом). Налаштування властивостей може здійснюватися як під час конструювання , так і під час виконання програми.
На другому етапі здійснюється виклик стандартного для діалогів метода Execute, який створює та на показує на екрані діалогове вікно. Виклик цього методу звичайно розміщується всередині оброблювача якої-небудь події. Наприклад, оброблювач вибору опції меню “Відкрити файл” може викликати метод Execute діалогу TOpenDialog, оброблювач натиснення на кнопку “Зберігти” може викликати такий самий метод компонента TSaveDialog. Тільки після звернення к Execute на екрані з’явиться відповідне діалогове вікно. Вікно діалога є модальним вікном, тому одразу після звернення до Execute подальше виконання програми призупиняється доти, поки користувач не закроє вікно. Оскільки Execute – логічна функція, вона повертає в програму значення True, якщо результат діалогу з користувачем був вдалим.
Проаналізувавши результат Execute, програма може виконати третій етап – використання введених за допомогою діалогового вікна даних – ім’я файла, налаштувань принтера, обраного шрифту та ін.
Приклад. Створимо просту програму для перегляду вмісту текстового файлу. Для цього на порожній формі розмістимо компонент TOpenDialog, а також кнопку TButton та редактор TMemo. При натисненні на кнопку необхідно завантажити в редактор новий файл. Створимо таку процедуру обробки події OnClick цієї кнопки:
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
TOpenDialog та tSaveDialog – діалоги відкриття та збереження файлів.
Ці компоненти мають ідентичні властивості, тому розглянемо їх разом.
Властивість FileName: string містить маршрут пошуку і обраний файл при вдалому завершенні діалогу. Програма може використовувати цю властивість для доступу до файлу з метою читання з нього даних (TOpenDialog) або запису в нього даних (TSaveDialog). Користувач може задати довільне ім’я. При записі це не має значення, але при читанні відсутність файлу може привести до помилки. Для запобігання цьому можна перевірити факт існування файлу глобальної функцією FileExists, як це показано в попередньому прикладі, або використати механізм обробки виключних ситуацій.
Властивість Filter: string використовується для фільтрації (відбору) файлів, що відображаються в діалоговому вікні. Цю властивість можна встановлювати за допомогою спеціального редактору під час конструювання форми або програмно.
Встановити початковий каталог дозволяє властивість InitialDir: string.
За допомогою властивості DefaultExt: string[3] формується повне ім’я файлу, якщо при ручному введенні користувач не вказав розширення. В цьому випадку до ім’я файлу додається розділова крапка та значення цієї властивості.
В діалоговому вікні для ручного введення передбачений елемент TEdit, який при бажанні можна замінити на TComboBox. Для цього необхідно властивості FileEditStyle привласнити значення fsComboBox замість fsEdit, що встановлено за умовчанням. Якщо обрано комбінований список, з ним можна пов’язати протокол вибору імен. Для цього використовується властивість HistoryList: Tstrings, вміст якого буде з’являтися в списку. Цей список не поповнюється автоматично, тому за його вмістом повинна слідкувати програма. Наприклад:
If OpenDialog1.Execute then
HistoryList.Add(OpenDialog1.FileName);
Налаштування діалогу можуть змінюватися за допомогою властивості Options: TOpenOptions. Значення цієї властивості мають наступний сенс.
Значення |
Функції |
ofReadOnly |
Встановлює перемикач “тільки для читання” |
ofOverwritePrompt |
Потребує згоди користувача при записі в існуючий файл |
ofHideReadOnly |
Приховує перемикач “тільки для читання” |
ofNoChangeDir |
Забороняє змінювати каталог |
ofShowHelp |
Включає у вікно кнопку Help |
ofNoValidate |
Забороняє автоматичну перевірку правильності символів, що набираються в імені файлу |
ofAllowMultiSelect |
Дозволяє вибір декількох файлів |
ofExtensionDifferent |
При завершенні діалогу наявність цього значення у властивості Options свідчить, що користувач ввів розширення, що відрізняється від значення за умовчанням |
ofPathMustExist |
Дозволяє вказувати файли тільки із існуючих каталогів |
ofFileMustExist |
Дозволяє вказувати тільки існуючі файли |
ofCreatePrompt |
Потребує підтвердження при створенні неіснуючого файлу |
ofShareAware |
Дозволяє вибирати файли, які використовуються іншими паралельно виконуємими програмами |
ofNoReadOnlyReturn |
Забороняє вибір файлів, які мають атрибут “тільки для читання” |
ofNoTestFileCreate |
Забороняє перевірку доступності мережевого або локального диску |
ofNoNetworkButton |
Забороняє вставку кнопки для створення мережевого диску |
ofNoLongName |
Забороняє використання довгих імен файлів |
ofOldStyleDialog |
Створює діалог в стилі Windows 3х |