100 Компонентів delphi - label, statictext і panel

3.3.2 Відображення тексту в написах компонентів Label, StaticText і Panel

Для відображення різних написів на формі використовуються в основному компоненти Label. StaticText (що з'явився тільки в Delphi 3) і Panel. Перші два з цих компонентів - мітки, спеціально призначені для відображення текстів. Основне призначення панелі Panel інше: компоновка компонентів у вікні форми. Однак, панель можна використовувати і для виведення текстів.

Приклади виведення тексту в компоненти наведені на рис. 3.4.

Тексти, які відображаються в перерахованих компонентах, визначаються значенням їх властивості Caption. Його можна встановлювати в процесі проектування або задавати і змінювати програмно під час виконання програми. наприклад:

Якщо потрібно відобразити числову інформацію, можна скористатися функціями FloatToStr і IntToStr. переводять відповідно числа з плаваючою комою і цілі в рядок. Для формування тексту, що складається з декількох фрагментів, можна використовувати операцію «+», яка для рядків означає їх склеювання (конкатенацію). Наприклад, якщо в програмі є ціла змінна I. відображає число співробітників деякої організації, то вивести в мітку Label1 інформацію про це можна оператором:

У всіх компонентах колір фону визначається властивістю Color. а колір напису - подсвойством Color властивості Font. Наприклад, в більшості міток (крім верхньої) на рис. 3.4 а і в правих мітках на рис. 3.4 б заданий колір фону рівним clWhite - білий. Якщо колір спеціально не ставити, то колір фону зазвичай зливається з кольором контейнера, що містить мітку, так що фон просто не помітний.

Для мітки Label колір і шрифт - єдино доступні елементи оформлення напису. Компоненти StaticText і Panel мають крім того властивість BorderStyle. визначальне рамку тексту - бордюр. На рис. 3.4 б ви можете бачити вплив бордюру на вигляд мітки StaticText. При стилі sbsNone мітка StaticText по увазі не відрізняється від мітки Label. Ймовірно, якщо вже використовувати бордюр, то найбільш приємний стиль sbsSunken.

Мал. 3.4
Приклади виведення тексту в компоненти Label (а), StaticText (б) і Panel (в)

Компонент "/> Розміщення всіх розглянутих компонентів на формі визначається, зокрема, властивостями Тор (координата верхнього краю), Left (координата лівого краю), Height (висота), Width (ширина). Є також властивості, що визначають зміну розміру компонента при зміні користувачем під час виконання додатка розмірів вікна. Це загальні властивості всіх віконних компонентів: Align (вирівнювання компонента по всій верхній, лівій, правій, нижній частинах контейнера або по всій його клієнтської області), Anchors (прив'язка сторін компонента до сторін конт ейнера), Constraints (обмеження допустимих змін розмірів). Врахуйте, що використання у властивості Anchors одночасної прив'язки компонента до протилежних сторонах контейнера призведе до розтягування або стиснення компонента при зміні користувачем розмірів вікна. При цьому в мітках в ряді випадків спостерігаються неприємності, пов'язані з переміщенням написів (якщо вони, наприклад, вирівняні по центру). Щоб уникнути цих неприємностей, треба в обробку події форми OnResize вставити оператори, перемальовувати компоненти методом Repaint. наприклад:

Розмір міток Label і StaticText визначається також властивістю AutoSize. Якщо це властивість встановлено в true. то вертикальний і горизонтальний розміри компонента визначаються розміром написи. Якщо ж AutoSize одно false. то вирівнювання тексту всередині компонента визначається властивістю Alignment. яке дозволяє вирівнювати текст по лівому краю, правому краю або центру клієнтської області мітки. В панелі Panel також є властивість AutoSize. але воно не відноситься до розмірів написи Caption. Однак, властивість вирівнювання Alignment працює і для панелі.

У мітці Label є властивість Wordwrap - допустимість перенесення слів довгою написи, що перевищує довжину компонента, на нову сходинку. Щоб таке перенесення міг здійснюватися, треба встановити властивість WordWrap в true. властивість AutoSize в false (щоб розмір компоненту не визначався розміром написи) і зробити висоту компонента такий, щоб в ньому могло поміститися кілька рядків (див. приклад правої нижньої мітки на рис. 3.4 а). Якщо WordWrap не встановлено в true при AutoSize рівному false. то довгий текст, що не міститься в рамці мітки, просто обрізається (див. приклад лівої нижньої мітки на рис. 3.4 а).

У мітці StaticText перенесення довгого тексту здійснюється автоматично, якщо значення AutoSize встановлено в false і розмір компонента достатній для розміщення декількох рядків. Для того, щоб в StaticText здійснювався перенос при зміні користувачем розмірів вікна, треба здійснювати описану вище перерисовку компонента методом Repaint в обробнику події форми OnResize.

В панелі розміщення напису в декількох рядках неможливо.

Можна відзначити ще одну властивість міток Label і StaticText. перетворює їх на деяку подібність керуючих елементів. Це властивість FocusControl - фокусна компонент. Якщо у властивості мітки Caption помістити перед одним із символів символ амперсант «», то символ, перед яким поставлено амперсант, відображається в написи мітки підкресленим (сам амперсант взагалі не відображається). Якщо після цього звернутися до властивості мітки FocusControl. то зі списку можна вибрати елемент, на який буде переключатися фокус, якщо користувач натисне клавіші прискореного доступу: клавішу Alt + підкреслений символ. Подібні клавіші прискореного доступу передбачені в керуючих елементах: розділах меню (див. Розділ 6.1) і кнопках (див. Розділ 5.2). Завдяки властивості FocusControl мітки можуть забезпечити клавішами прискореного доступу інші елементи, наприклад, вікна редагування (див. Розділ 3.3.3), в яких такі клавіші не передбачені. Тільки для того, щоб клавіші прискореного доступу в мітках спрацьовували, необхідно встановити властивість ShowAccelChar цих міток в true.

Для відображення текстової інформації, і навіть з додатковою можливістю прокрутки довгих текстів, можна використовувати також вікна редагування Edit і MaskEdit в режимі Readonly.

Схожі статті