- •Лекція №10
- •Панелі і компоненти зовнішнього оформлення
- •1. Загальна характеристика компонентів зовнішнього оформлення
- •2. Панелі загального призначення — компоненти Panel, GroupBox, Bevel, ScroIiBox, Splitter
- •3. Багатосторінкові панелі — компоненти TabControl, PageControl
- •4. Інструментальні панелі — компоненти ToolBar і PageScroller
- •5. Панелі із можливістю перебудови
- •6. Смуга стану StatusBar
6. Смуга стану StatusBar
Компонент StatusBar є рядом панелей, що відображають смугу стану в стилі Windows. Звичайно ця смуга розміщується внизу форми.
Властивість SimpiePanel визначає, чи включає смуга стану одну або багато панелей. Якщо SimpiePanel = true, то вся смуга стану є єдиною панеллю, текст якої задається властивістю SimpleText. Якщо ж SimpiePanel = false, то смуга стану є набором панелей, що задаються властивістю Panels. В цьому випадку властивість SizeGrip визначає, чи може користувач змінювати розміри панелей в процесі виконання програми.
Кожна панель смуги стану є об'єктом типу TStatusPanels. Властивості панелей можна задавати спеціальним редактором наборів. Викликати редактора можна з Інспектора Об'єктів кнопкою з багатокрапкою біля властивості Panels. У вікні редактора ви можете переміщатися по панелях, додавати нові або знищувати ті, що існують. При переміщенні по панелях у вікні Інспектора Об'єктів ви бачитимете їх властивості.
Основна властивість кожної панелі — Text, в який заноситься текст, що відображається в панелі. Його можна занести в процесі проектування, а потім можна змінювати програмно під час виконання. Інша істотна властивість панелі — Width (ширина).
Програмний доступ до текстів окремих панелей можна здійснювати через властивість Panels і його індексована підвластивість Items. Наприклад, оператор:
StatusBar1->Panels->Items[0]->Text = "текст1";
надрукує текст «текст 1» в першій панелі.
Кількість панелей смуги стану можна визначити з підвластивості Count властивості Panels. Наприклад, наступний оператор очищає тексти всіх панелей:
for (int i=0; i < StatusBar1->Panels->Count; i++)
{
StatusBar1->Panels->Items[i]->Text = "";
}
Нижче приведений код для прикладу текстового редактора на основі компоненту RichEdit, що містить смугу стану. У її першій панелі відображується номер рядка і символу, перед яким знаходиться курсор, в другій – відображається повідомлення, що текст був модифікований Для реалізації такої смуги стану треба в обробниках подій ОnКеуDown, OnKeyUp, OnMouseDown i OnMouseUp компоненту RichEdit1 і події OnResize форми забезпечити виконання операторів:
StatusBar1->Panels->Items[0]->Text=
IntToStr((int)RichEdit1->CaretPos.y+1)+ ": " + IntToStr((int)RichEdit1->CaretPos.x+1);
if (RichEdit1->Modified)
StatusBar1->Panels->Items[1]->Text = "модиф.";
else StatusBarl->Panels->Items[l]->Text = "";
Контрольні питання:
-
Перерахуйте основні типи панелей та поясніть їх призначення?
-
Що спільного і від’ємного у компонентів TabControl і PageControl?
-
Які переваги дозволяють реалізувати компоненти ToolBar і PageScroller у порівнянні із звичайними панелями?
-
У чому полягає можливість перебудови компонента CoolBar?
-
У чому полягає технологія Drag&Doc для компоненту ControlBar?
-
Яким чином забезпечується виведення даних у смугу стану?