
- •Лекція №11
- •Системні діалоги
- •1. Загальна характеристика компонентів діалогів
- •2. Діалоги відкриття і збереження файлів — компоненти OpenDlalog, SaveDlalog, OpenPictureDialog, SavePictureDialog
- •3. Фрагменти діалогів — компоненти DriveComboBox, DirectoryListBox, FilterComboBox, FileListBox і cDirectoryOutline
- •Діалог вибору шрифту — компонент FontDialog
- •Діалоги вибору кольору — компоненти ColorDialog і ColorBox
- •Діалоги друку і установки принтера — компоненти PrintDialog і PrinterSetupDialog
- •Діалоги пошуку і заміни тексту — компоненти FindDialog і ReplaceDialog
-
Діалог вибору шрифту — компонент FontDialog
Компонент FontDialog викликає діалогове вікно вибору атрибутів шрифту. У ньому користувач може вибрати ім'я шрифту, його стиль (зображення), розмір і інші атрибути.
Основна властивість компоненту — Font типу TFont, в якій можна задати початкові установки атрибутів шрифту і в якій можна прочитати значення атрибутів, вибрані користувачем в процесі діалогу.
Властивості MaxFontSize і MinFontSize встановлюють обмеження на максимальний і мінімальний розміри шрифту. Якщо значення цих властивостей рівні 0 (за умовчанням), то ніякі обмеження на розмір не накладаються. Якщо ж значення властивостей задані, то в списку Розмір діалогового вікна з'являються тільки розміри, що укладаються в заданий діапазон. При спробі користувача задати неприпустимий розмір йому буде видане попередження вигляду «Розмір повинен лежати в інтервалі ...» і вибір користувача відміниться. Правда, це спрацьовує не на всіх версіях Windows. Властивості MaxFontSize і MinFontSize діють тільки при включеній опції fdLimitSize
Властивість Device визначає, з якого списку можливих шрифтів буде запропонований вибір в діалоговому вікні: fdScreen — із списку екрану (за умовчанням), fdPrinter — із списку принтера, fdBoth — з обох.
Властивість Options містить набір опцій, основними з яких є:
fdAnsiOnly - відображати тільки набори шрифтів символів Windows, не відображати шрифтів із спеціальними символами;
fdApplyButton - аідображати в діалозі кнопку Застосувати незалежно від того, чи передбачений обробник події OnApply;
fdEffects - відображати в діалозі індикатори спеціальних ефектів (підкреслення і ін.) і список Колір.
fdFixedPitchOnly - відображати тільки шрифти з постійною шириною символів;
fdForceFontExist - дозволяє користувачу вибирати шрифти тільки із списку, забороняти йому вводити інші імена.
Приведемо приклади застосування компоненту FontDialog. Хай ваше застосування включає вікно редагування Memo1, шрифт в якому користувач може вибирати командою меню Шрифт. Ви ввели в застосування компонент FontDialog, ім'я якого за умовчанням FontDialog1. Тоді обробник команди Шрифт може мати вигляд:
if (FontDialog1->Execute())
Memo1->Font->Assign<FontDialog1->Font);
Приведений оператор викликає діалог вибору атрибутів шрифту і, якщо користувач провів вибір, то значення всіх вибраних атрибутів, що містяться у властивості FontDialog1—>Font, привласнюються атрибутам вікна редагування, що містяться у властивості Memo1—>Font. Шрифт у вікні редагування негайно зміниться.
Якщо ви встановите в компоненті FontDialog1 опцію fdApplyButton, то можете написати обробник події OnApply:
Memo1->Font->Assign(FontDialog1->Font);
Тоді користувач може спостерігати зміни у вікні Memo1, натискаючи в діалоговому вікні кнопку Застосувати і не перериваючи діалогу. Це дуже зручно, оскільки дозволяє користувачу правильно підібрати атрибути шрифту.
Якщо вікно редагування у вашому застосуванні використовує RichEdit, то можете надати користувачу вибирати атрибути шрифту для виділеного фрагмента тексту або для тексту, що знов вводиться. Тоді виконання команди меню Шрифт може здійснюватися операторами:
if(FontDialog1->Execute())
RichEdit1->SelAttributes->Assign(FontDialog1->Font);
Ви можете дозволити користувачу змінювати шрифт не тільки окремих компонентів, але і всіх компонентів і написів на формі. Це здійснюється оператором:
if (FontDialog1->Execute())
Font->Assign(FontDialog1->Font);
У цьому операторі властивість Font без посилання на компонент має на увазі шрифт форми.