
- •Лекція №11
- •Системні діалоги
- •1. Загальна характеристика компонентів діалогів
- •2. Діалоги відкриття і збереження файлів — компоненти OpenDlalog, SaveDlalog, OpenPictureDialog, SavePictureDialog
- •3. Фрагменти діалогів — компоненти DriveComboBox, DirectoryListBox, FilterComboBox, FileListBox і cDirectoryOutline
- •Діалог вибору шрифту — компонент FontDialog
- •Діалоги вибору кольору — компоненти ColorDialog і ColorBox
- •Діалоги друку і установки принтера — компоненти PrintDialog і PrinterSetupDialog
- •Діалоги пошуку і заміни тексту — компоненти FindDialog і ReplaceDialog
3. Фрагменти діалогів — компоненти DriveComboBox, DirectoryListBox, FilterComboBox, FileListBox і cDirectoryOutline
Крім закінчених діалогів роботи з файлами, в C++Builder є ряд компонентів, що є фрагментами діалогів: списки дисків (драйверів) — DriveComboBox і фільтрів (масок) файлів — FilterComboBox, списки каталогів — DirectoryListBox і файлів — FileListBox, дерево каталогів — CDirectoryOutline. Наприклад, ви можете захотіти включити в діалогове вікно відображення якихось характеристик файлів (розміру, дати створення і т.п.) або оперативний перегляд змісту текстових файлів. Тоді вам дуже стануть в нагоді готові компоненти роботи з файлами. Правда, всі вони, окрім CDirectoryOutline, розташовані на сторінці Win 3.1 палітри компонентів. Це означає, що вони не рекомендуються для 32-розрядних застосувань. Але, по - перше, у вас залишається компонент DirectoryOutline. Крім того, ніхто не забороняє вам все-таки використовувати і решту компонентів в будь-яких застосуваннях C++Builder. І, нарешті, якщо вже ви хочете чітко слідувати рекомендації не використовувати перші чотири фрагменти діалогів в 32-розрядних застосуваннях, ви можете розробити свої аналогічні компоненти, використовуючи звичайний компонент ComboBox.
Почнемо розгляд компонентів роботи з файловою системою з компоненту DriveComboBox — списку дисків (драйверів). При розміщенні на формі цей компонент автоматично відображає список дисків, що є на комп'ютері. Під час виконання застосування ви можете прочитати ім'я вибраного користувачем диска у властивості Drive, а рядок, що міститься у вікні списку — у властивості Text.
Властивість TextCase задає регістр відображення: tcUpperCase — у верхньому регістрі, tcLowerCase — в нижньому.
Пов'язати компонент DriveComboBox із списком каталогів, що відображаються компонентом DirectoryListBox, можна під час проектування через властивість DirList компоненту DriveComboBox. Ця властивість може указувати на компонент типу DirectoryListBox. Можна забезпечити зв'язок цих двох типів компонентів і програмно, включивши в обробник події OnChange компоненту DriveComboBox оператор:
DirectoryListBox1->Drive = DriveComboBox1->Drive;
Цей оператор задає ім'я диска, вибране користувачем в компоненті DriveComboBoxl, властивості Drive списку каталогів DirectoryListBoxl.
Аналогічним оператором можна забезпечити зв'язок компоненту DriveComboBox з деревом каталогів і файлів в компоненті CDirectoryOutline:
CDirectoryOutline1->Drive = DriveComboBox1->Drive;
Розглянемо тепер список фільтрів — компонент FilterComboВох. Його основна властивість — Filter, якf задається так само, як в описаних раніше діалогах. До окремих частин фільтру — тексту і маски, можна дістати доступ через властивості Text і Mask відповідно. Зв'язок компоненту із списком файлів типу TFileListBox можна встановити, задавши властивість FileList.
Компонент DirectoryListBox відображає список каталогів диска, заданого властивістю Drive. Значення цієї властивості можна встановити програмно під час виконання. Як вже мовилося вище, зв'язок цієї властивості з вибраним користувачем диском в компоненті DriveComboBox встановлюється або програмно, або за допомогою властивості DirectoryListBox компоненту DriveComboBox.
Зв'язок списку каталогів з компонентом типу TFileListBox, що відображає список файлів, здійснюється за допомогою властивості FileList. Можна також використовувати результати вибору користувачем каталогу, читаючи властивість Directory в обробнику події OnChange.
З компонентом DirectoryListBox можна також пов'язати мітку типу Label. У цій мітці відображатиметься шлях до поточного каталогу. Якщо шлях не уміщається в мітці, він автоматично відображається в скороченому вигляді за допомогою функції MinimizeName. Мітка, що відображає каталог, указується у властивості DirLabel.
Список файлів міститься в компоненті FileListBox. Його властивості Drive, Directory і Mask визначають відповідно диск, каталог і маску файлів. Ці властивості можна встановлювати програмно або зв'язуючи описаним раніше способом компонент FileListBox з компонентами DriveComboBox, DirectoryListBox і FilterComboBox.
Властивість FileType дозволяє включати в список не всі файли, а тільки ті, які мають відповідні атрибути. Властивість FileType є множиною, яка вказує типи файлів, що включаються. Елементи цієї множини можуть мати значення: ftReadOnly — тільки для читання, ftHidden — невидимі, ftSystem — системні, ftVolumelD — позначення дисків, ftDirectory — каталоги, ftArchive — архівні, ftNormal – що не мають особливих атрибутів.
Властивість ShowGlyphs виключає показ піктограм файлів.
Властивість MultiSelect дозволяє вибір декількох файлів.
Основна властивість, в якій можна прочитати ім'я вибраного користувачем файлу — FileName.
Із списком файлів може бути пов'язано вікно редагування Edit, в якому відображається вибраний файл. На цей список указує встановлювана під час проектування властивість FileEdit.
Тепер розглянемо компонент CDirectoryOutline, що містить дерево каталогів. У цьому компоненті значення диска встановлюється властивістю Drive. Поточний каталог, вибраний користувачем, можна прочитати у властивості Directory. Властивість TextCase визначає стиль відображення імен каталогів: tcLowerCase — перетворення до нижнього регістра, tcUpperCase — до верхнього, tcAsIs — без перетворення. Решта властивостей ідентична компоненту OutLine, на основі якого побудований даний компонент.