Форми і події C + + Builder

Форма – це найбільш істотний самостійний компонент системи CBuilder Це той обєкт, з яким, швидше за все, буде взаємодіяти користувач

У більшості прикладів програм на CBuilder форма використовується як вмістилище для інших компонентів У цьому розділі ми розглянемо форму як власне компонент Що таке форма Звичайно, це просто вікно Як і всі вікна, вона може мати дочірні керуючі елементи, такі як панелі завдань, меню і панелі стану Форми, як і вікна, мають власні певні унікальні властивості, такі як заголовки, системні меню, кнопки мінімізації і максимізації, що закривають кнопки, рамку змінюваного (або не змінюваного) розміру та інші витончені штучки Давайте перервемося на хвилину і поглянемо на форму і ті її частини, які CBuilder дозволить нам змінювати

На рис 21 показана типова порожня форма CBuilder, яку ви побачите відразу ж, як відкриєте новий додаток Давайте ближче познайомимося з її складовими

Перше властивість, яка відразу ж впадає в очі, це назва форми (Form1), Що відображається на панелі заголовка Це властивість називається Caption (Заголовок) Властивість Caption може бути безпосередньо змінено в інспектора обєктів (Object Inspector) CBuilder під час проектування або ж за допомогою коду під час виконання Зміна властивості Caption негайно оновить заголовок форми як під час проектування, так і під час виконання, за одним винятком: ви не зможете прибрати заголовок взагалі, присвоївши властивості Caption форми порожній рядок (“)

Рис 21 Стандартна порожня форма CBuilder

Ось вам перша неординарна проблема в CBuilder: як створити форму без заголовка і панелі заголовка На перший погляд незрозуміло, як можна прибрати заголовок і панель заголовка з форми CBuilder, але це можна зробити за допомогою дещиці магії Windows і знання Windows API (Application Programming Interface, інтерфейс програмування додатків) Оскільки форма

– Це просто вікно, ви можете змінити його початкові властивості ще до його створення Якщо ви зміните біт стану вікна так, щоб включити прапор WS_POPUP і видалити прапор WS_CAPTION, Ви створите-таки вікно без панелі заголовка В результаті у вас вийде вікно без системного меню, кнопок максимізації або мінімізації та кнопки закриття З такої нагоди передбачте небудь варіант закриття цього вікна

Давайте трохи поекспериментуємо і створимо таку форму Ви можете знайти повну версію такої програми на компакт-диску в каталозі Chapter1 \ Captionless Після того як ви досхочу награтися з властивістю Caption, Давайте звернемося до наступному властивості – Border (Рамка), яке дозволяє вам контролювати, змінюється розмір вікна чи ні Для властивості Border є кілька варіантів, але вам, швидше за все, в основному доведеться мати справу з двома з них – змінний розмір вікна (bsSizeable) і фіксований, як у діалогових, розмір вікна (bsDialog) Витратьте пару хвилин на зміну стилю рамки з одного на інший і скомпілюйте отримані додатки Ви помітите, що два ці типу рамки розрізняються на екрані На рис 22 показана типова форма із змінним розміром, а на рис 23 – форма з незмінним розміром (форма діалогового типу) Тепер вам має стати зрозуміло, що назва властивості «рамка» взято не випадково – рамка вікна схожа на раму картини

Рис 22 Форма із змінним розміром

Рис 23 Форма діалогового типу з незмінним розміром

Третя властивість, яке ми розглянемо, це насправді безліч властивостей Властивість BorderIcons (Кнопки панелі заголовка) складається з безлічі кнопок (значків), які можуть розташовуватися на панелі заголовка форми Ця властивість представлено безліччю мови C + +, що містить параметри для кнопки мінімізації, максимізації, закриття та системного меню Ви можете включати або виключати будь-яку (або всі) з перерахованих вище кнопок, просто встановлюючи соответству ющий параметр в True (істинно) або False (помилково) в інспектора обєктів або додаючи відповідні рядки в програму

Зміни, які ви будете робити над цими властивостями, не будуть відображатися під час проектування програми Форма, яка відображається редактором форм, вже визначена в момент свого створення Зміни, які ви справили, будуть відображені негайно ж, як тільки форма вперше буде виведена на екран вашим додатком Щоб розглянути, як це відбувається, змініть форму так, щоб скасувати кнопки мінімізації і максимізації, і ви побачите, що форма не змінилася у вікні редактора форм Скомпілюйте і запустіть додаток і переконайтеся, що вийшла, форма дійсно не має ні кнопки максимізації, ні кнопки мінімізації вікна

Інше, трохи менш зрозуміле властивість форми – це Color (Колір), яке ми розглянемо в наступному експерименті Використовуючи базову форму, відображену в редакторі форм CBuilder, змініть її властивість Color на що-небудь типу clRed (червоний) Завдяки цій зміні відображається форма повинна буде мати яскраво-червоний фон після запуску програми Тепер скомпілюйте і запустіть програми та погляньте на екран Ось так сюрприз Форма зовсім не червона, вона свого стандартного військово-морського кульового кольору Чому Це, на жаль, помилка системи () Але, на щастя, цю окремо взяту помилку неважко побороти Додайте обробник події OnFormCreate і в нього додайте наступні рядки:

void __fastcall TForm1::OnFormCreate()

{

Color = clRed

}

Досить дивно, але зміна властивості Color в методі OnFormCreate працює коректно, і форма тепер буде зображуватися з червоним тлом

Гарна річ – каракулі

Ми поговорили про багато властивостях часу проектування і часу виконання форми, але поки явно уникали зачіпати великий шматок простору в центрі форми Внутрішній простір форми, доступне користувачеві, цілком відбивається в одному властивості форми, званому Canvas Властивість Canvas відповідає за відображення будь-якого тексту або графіки, що відносяться безпосередньо до формі Це також той самий елемент, який реагує на зміну властивості Color форми, але це робиться не безпосередньо, а через форму як обєкт, і в даному випадку нас не стосується

Наш перший серйозний приклад у цій книзі стосується властивості Canvas Оскільки Windows замислювалися в основному для збільшення графічних можливостей, цілком логічно, що наш перший приклад буде про роботу з графікою У ті старі добрі часи, коли Visual C + + тільки- тільки зявилася, фірма Microsoft вибрала як навчальної роботі з системою програмування Visual C + + програму Scribble (каракулі) Це була не повязана з формами програма, яка використовувала мишу для переміщення по простору вікна, отрісовивая при цьому лінії, що зєднують між собою всі точки, через які пройшла миша

«Каракулі» стали жартом для присвячених в програмістської середовищі, оскільки сутність цього прикладу була вкрай примітивною Багато програмістів відправлялися на співбесіди, де було потрібно наявність досвіду програмування в Visual C + + і MFC (Microsoft Foundation Classes, бібліотека віконних класів фірми Microsoft), хоча, насправді, все, що вони мали за плечима, – це знайомство з навчальною програмою Scribble Реалізація програми Scribble займала всього кілька сторінок і вимагала від програміста лише вміння читати і писати по-англійськи Цей приклад нічого не розкривав у MFC і, відповідно, нічого не міг дати тим, хто хотів би докласти своє знання MFC до написання корисних програм Як мякий укол співтовариству MFC, ми представляємо CBuilder-версію програми Scribble Якщо говорити трохи серйозніше, Scribble – хороший матеріал для простого прикладу, так як в ньому здійснюється взаємодія з усіма елементами форми: властивостями, подіями і методами Давайте створимо просту версію Scribble для CBuilder

Джерело: Теллес М – Borland C + + Builder Бібліотека програміста – 1998

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*