Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л12.doc
Скачиваний:
8
Добавлен:
30.10.2018
Размер:
91.14 Кб
Скачать

2. Багатовіконні програми

Найчастіше скільки-небудь складна програма не може обмежитися одним вікном. Тому перш за все вам потрібно вирішити питання управління вікнами. Є дві різні моделі програм: з інтерфейсом одного документа (SDI) і з інтерфейсом декількох вікон – документів (MDI).

В більшості випадків слід віддавати перевагу інтерфейсу SDI, як в програмах типу «Калькулятор».

З іншого боку, у програмах MDI теж є свої переваги. Хороший приклад такого застосування — Microsoft Word. У програмах MDI є батьківське (первинне) вікно і ряд дочірніх вікон (вікнами документів). Бувають ситуації, коли вигідно відображати інформацію в декількох вікнах, які спільно використовують елементи інтерфейсу (наприклад, меню або інструментальні лінійки). Вікна документів управляються і обмежуються батьківським вікном. Якщо ви зменшуєте розмір батьківського вікна, то дочірні вікна можуть зникати з поля зору.

Випадки, коли потрібно використовувати модель MDI, досить рідкісні. Перш за все, це слід робити тільки тоді, коли всі дочірні вікна міститимуть ідентичні об'єкти — наприклад, текстові документи або електронні таблиці. Не застосовуйте MDI, якщо ви збираєтеся працювати в застосуванні з дочірніми вікнами різного типа (наприклад, текстовими документами і електронними таблицями одночасно). Не застосовуйте MDI, якщо ви хочете управляти тим, яке з дочірніх вікон повинне знаходитися поверх інших, використовуючи властивість «завжди вгорі», або якщо ви хочете управляти розмірами вікон, робити їх невидимими і т.п. Інтерфейс MDI призначений для дуже вузького діапазону застосувань, в яких всі дочірні вікна однорідні (як це має місце в Word або Excel). Пристосувати його до чогось іншого не вийде.

3. Стиль вікон програми

Основним елементом будь-якої програми є форма — контейнер, в якому розміщуються інші візуальні і невізуальні компоненти. Кожній новій формі, що вводиться в програму, відповідає свій модуль (unit), що описує цю форму як клас і що включає, якщо необхідно, якісь додаткові константи, змінні, функції і процедури.

До зовнішнього вигляду вікон в Windows пред'являються певні вимоги. На щастя C++Builder автоматично забезпечує стандартний для Windows вид вікон вашої програми. Але вам треба продумати і вказати, які кнопки в меню повинні бути доступні в тому або іншому вікні, чи повинне вікно допускати зміну користувачем його розмірів, яким повинен бути заголовок вікна. Всі ці характеристики вікон забезпечуються установкою і управлінням властивостями форми.

Властивість BorderStyle визначає загальний вид вікна і операції з ним, які дозволяється виконувати користувачу. Ця властивість може приймати наступні значення:

bsSizeable - звичайний вид вікна Windows із смугою заголовка, з можливістю для користувача змінювати розміри вікна за допомогою кнопок в смузі заголовка або за допомогою миші, потягнувши за який-небудь край вікна. Це значення BorderStyle задається за умовчанням.

bsDialog - незмінне за розмірами вікно. Типове вікно діалогів.

bsSingle - вікно, розмір якого користувач не може змінити, потягнувши курсором миші край вікна, але може міняти кнопками в смузі заголовка.

bsToolWindow - те ж, що bsSingle, але із смугою заголовка меншого розміру.

bsSizeToolWin - те ж, що bsSizeable, але із смугою заголовка меншого розміру і з відсутністю в ній кнопок зміни розміру.

sbsNone - без смуги заголовка. Вікно не тільки, не допускає зміни розміру, але і не дозволяє перемістити його по екрану.

Властивість BorderІcons визначає набір кнопок, які є в смузі заголовка наступними значеннями:

bySistemMenu – відображення набору системних кнопок у рядку заголовку.

byMinimize, byMaximize – відображення кнопок згортання і розгортання вікна.

byHelp – відображення кнопки довідки.

Без особливої необхідності не робіть вікна програми із змінними користувачем розмірами. При зміні розмірів, якщо не застосовані спеціальні прийоми, порушується компоновка вікна і користувач нічого не виграє від своїх операцій з вікном. Вікно має сенс робити із змінними розмірами, тільки якщо це дозволяє користувачу змінювати корисну площу якихось розташованих в ньому компонентів відображення і редагування інформації: текстів, зображень, списків і т.п.

Властивість форми WindowState визначає вигляд, в якому вікно з’являється на екрані. Воно може приймати значення: wsNormal, wsMinimized, wsMaximized.

Положення вікна при запуску програми визначається властивістю Position, яка може приймати значення:

poDesigned - первинні розміри і положення вікна під час виконання ті ж, що під час проектування. Це значення приймається за умовчанням, але звичайно його слід змінити.

poSereenCenter - вікно розташовується в центрі екрану активного монітору, якщо використовується система із декількома моніторами. Розмір вікна той, який був спроектований.

poDesktopCenter - вікно розташовується в центрі екрану. Розмір вікна той, який був проектований. Цей режим не пристосований до програм із декількома моніторами.

poDefault - місцеположення і розмір вікна визначає Windows, враховуючи розмір і роздільну здатність екрану. При послідовних показах вікна його положення зсувається трохи вниз і управо.

poDefaultPosOnly - місцеположення вікна визначає Windows. При послідовних показах вікна його положення зрушується трохи вниз і управо. Розмір вікна — спроектований.

poDefaultSizeOnly - Розмір вікна визначає Windows, враховуючи розмір і дозвіл екрану. Положення вікна — спроектоване.

poMainFormCenter - вікно розташовується в центрі головної форми. Розмір вікна той, який був спроектований. Використовується тільки для вторинних форм. Для головної форми діє так само, як poSereenCenter.

poOwnегFormCenter - вікно розташовується в центрі форми, вказаної як власник даної у властивості Owner. Розмір вікна той, який був спроектований. Якщо властивість Owner вказує на форму, діє як poMainFormCenter.

Доцільно для головної форми задавати значення Position рівним poSereenCenter або poDefoultPosOnly. І лише в окремих випадках, коли при виконанні програми повинне певним чином розташовуватися декілька вікон, має сенс залишати значення poDesigned, що приймається за умовчанням.

Якщо вибране значення властивості Position передбачає вибір розміру форми самим Windows за умовчанням, то на цей вибір впливають властивості PixelsPerІnch і Scaled. За умовчанням перше з них дорівнює кількості пікселів на дюйм в системі, друге встановлене в false. Якщо задати інше число пікселів на дюйм, то властивість Scaled автоматично стає рівною true. В цьому випадку при запуску програми розмір форми змінюватиметься відповідно до перерахунку заданого числа пікселів на дюйм до реального числа пікселів на дюйм в системі (але тільки при тому значенні, що дозволяє властивість Position).

Властивість AutoScroll визначає, чи будуть на формі в процесі виконання автоматично з'являтися смуги прокрутки у випадку, якщо при вибраному користувачем розмірі вікна не всі компоненти поміщаються в ньому. Якщо значення AutoScroll рівне true, то будуть. Інакше при зменшенні розміру вікна користувач втрачає доступ до компонентів, що не помістилися в його полі.

Властивість Icon задає піктограму форми. За умовчанням використовується стандартна піктограма C++Builder. Натиснувши в Інспекторі Об'єктів кнопку з трьома крапками в рядку властивості Icon, ви потрапляєте у вікно Редактора Зображень (Picture Editor). Клацнувши в ньому на кнопці Load (завантажити), ви можете вибрати будь-який файл із зображенням піктограми. З C++Builder поставляється деяке число піктограм, розташованих в каталозі Іmages\Іcons.

Одна з основних властивостей форми — FormStyle, яке може приймати значення:

fsNormal - вікно звичайної програми. Це значення FormStyle прийняте за умовчанням.

fsMDIForm – батьківська форма MDI - програми, тобто з дочірніми вікнами при роботі з декількома документами одночасно.

fsMDIChild - дочірня форма MDI – програми.

fsStayOnTop - вікно, що завжди залишається поверх інших вікон Windows.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]