Форма – головний компонент додатку 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Форма – головний компонент додатку



Різновиди форм визначаються значеннями їх властивостей FormStyle, а також різноманітністю форм-заготовок, що зберігаються в репозиторії Delphi.

Стиль форми задається одним із значень властивості

TFormStyle = (fsNormal, fsMDIChild, fsMDIForm, fsStayOnTop);

property FormStyle: TFormStyle;

Стиль fsNormal визначає звичайну форму, що використовується для вирішення самих різних завдань, зокрема - для загального управління всією програмою (головна форма).

Стилі fsMDIChild і fsMDIForm використовуються при створенні так званих багатодокументних застосувань в стилі MDI (MDI -Multi Document Interface). Цей немодний сьогодні стиль припускає створення головного вікна MDI (його зазвичай називають рамковим), усередині якого у міру потреби з'являються дочірні вікна.' Дочірні вікна, подібно дочерним елементам контейнера, не можуть виходити за межі свого власника - рамкового вікна. У MDI-додатках є спеціальні засоби управління взаємодією рамкового вікна з дочірніми вікнами. Наприклад, кожне дочірнє вікно у момент активізації може потрібним чином набудувати головне меню рамкового вікна (дочірні MDI-вікна не мають власного головного меню). У Delphi для створення рамкового вікна використовується стиль fsMDIForm, а для створення дочірнього MDI-вікна - стиль fsMDIChild.

Стиль fsStayOnTop призначений для вікон, які завжди повинні розташовуватися над всіма іншими вікнами програми[ У термінології Windows такі вікна називаються Popup Window, що буквально переводиться як вікно-поплавець. ]. У момент активізації вікна воно зазвичай стає видимим на екрані, навіть якщо перед цим його загороджували інші розкриті вікна. Стиль fsStayOnTop перешкоджає перекриттю вікна іншими вікнами, навіть якщо воно стає неактивним і втрачає фокус введення (так сказано в документації, проте насправді це не так, див. нижчий). Зрозуміло, що цей стиль використовується у виняткових випадках, коли вікно містить щось, що вимагає підвищеної уваги користувача.

Як показує практика, оголошення вікна із стильовою ознакою fsStayOnTop ще не вирішує проблему створення вікна-поплавця, тобто вікна, яке неможливо перекрити іншими вікнами. Більш того, нескладні експерименти переконають вас, що ця ознака взагалі не грає ніякої ролі! Щоб створити вікно-поплавець, потрібно звернутися до API-функції SetWindowPos.

Наприклад:

SetWindowPos(fmAlarmForm.Handle, hwnd_TopMost, 300, 300, 250, 70, swp_noActvate)

Повний опис цієї функції (як і всіх інших API-функцій Windows) ви знайдете в Help-файлах WIN32.HLP або WIN32SDK.HLP, які поставляються разом з Delphi і за умовчанням розташовуються В теці Program Files | Common Files | Borland shared | MSHelp. Тут я лише стисло поясню призначення параметрів виклику.

Першим параметром звернення до функції є дескриптор вікна, яке повинне стати “поплавцем”. Нагадаю, що дескриптор форми міститься в її властивості Handle, тому для форми fmAlarmForm параметр виклику має вид fmAlarmForm. Handle. другим параметром визначається розташування вікна щодо інших вікон в так званому Z-порядку їх розташування. Константа nwnd_TopMost указує, що вікно повинне стати самим верхнім і аж до його закриття не може перекриватися іншими (звичайними) вікнами. Чотири наступні параметри визначають координати лівого верхнього кута вікна, його ширину і висоту. Всі параметри указуються в пікселях, координати кута задаються відносно, лівого верхнього кута екрану. Останнім указується один або декілька бітових прапорів, що уточнюють поведінку вікна. У нашому прикладі використаний прапор swp_noActvate, що означає, що вікно не отримує фокусу введення у момент своєї появи на екрані. Поясню, що на практиці я часто використовую вікна-поплавці, щоб повідомити користувача, наприклад, про необхідність відновити набір даних, які він бачить зараз, оскільки ці дані були змінені іншими користувачами клієнт-серверної БД. Таке вікно не повинне віднімати активність (фокус введення) біля вікна, з яким працює користувач.

І останнє зауваження. “Поплавцем” може стати і звичайне вікно (із значенням FormStyle=fsNormai). Проте “поплавець” дійсно з'явиться на екрані, тільки якщо в його властивості visible міститься значення True.

Іншими словами, якщо користувач закриє таке вікно, воно не з'явиться в результаті виклику функції setwindowpos - його заздалегідь потрібно зробити видимим методом show. Оскільки вікно-поплавець може викликатися в різних місцях програми, зручно помістити виклик функції setwindowspos його обробник події onActivate. Проте якщо ви спробуєте створити такий обробник для вікна із стилем FormStyle=fsStayonTop, то компілятор видасть повідомлення про помилку і помістить заготівку методу в тексті модуля після обмежувача “.”. В цьому випадку визначайте вікно із стилем fsNormal.

Сучасні багатовіконні застосування найчастіше будуються в стилі SDI (SDI - Single Document Interface), який в протилежність MDI не накладає обмежень на положення і розміри допоміжних форм, кожна з яких при необхідності може мати своє головне меню (у стилі SDI реалізована, наприклад, середовище Delphi). Для створення форм в цьому випадку використовується стиль fsNormal.

Відмічу, що в рамках SDI-додатків можуть використовуватися рамкові MDI-форми з своїми дочірніми вікнами, так що термін SDI носить вельми умовний характер і застосовується в основному для зіставлення давно використовуваному терміну MDI.

У репозиторії Delphi зберігається безліч стандартних форм-заготовок, призначених для вирішення конкретних завдань (доступ до репозиторія відкриває опція меню File | New | other).

Крім універсальної порожньої форми Form (сторінка New peno-зитория) репозиторії містить наступні спеціалізовані форми:

Назва Сторінка Призначення

About box Forms Вікно 0 програмі

Dual list box Forms Діалогове вікно з двома компонентами ListBox. Використовується для гнучкого управління списками, зокрема для переміщення елементів з одного списку в іншій

Quick Report Labels Forms

Використовується в додатках баз даних для друку етикеток

Quick Report List Forms Використовується в додатках баз даних для створення звичайних звітів

Quick Report Master/Detail Forms

Використовується в додатках баз даних для створення звітів типу головний /детальний

Tabbed Pages Forms Заготівка для багатосторінкового діалогового вікна із закладками, кнопками ok, cancel і Help

Dialog with Help Dialogs Заготівка для діалогового вікна з кнопками ok. Cancel, Help. Є варіанти з вертикальним асположением кнопок і з горизонтальним розташуванням

Password Dialog Dialogs Діалогове вікно з редактором TEdit, кнопками ok і Cancel для введення паролів

Reconcile Error Dialog Dialogs

Використовується в додатках баз даних для пояснення виявленої помилки при зміні таблиці

Standard Dialog Dialogs Заготівка для діалогового вікна з кнопками ok, cancel. Є варіанти з вертикальним розташування кнопок і з горизонтальним розташуванням

Dialog Wizard Dialogs Майстер створення діалогових вікон

Decision Cube Sample Business Заготівка для використання компонентів сторінки Decision Cube

Database Form Wizard Business Майстер створення форм для доступу до баз даних

Quick Report Wizard Business Майстер створення звітів для баз даних

TeeChart Wizard Business Майстер форм для доступу до компоненту chart

 

КОМПОНЕНТ TFORM

Властивості форми:

property Active: Boolean-property ActiveControl: TWinControl; Містить True, якщо вікно активно (має фокус введення) Визначає дочірній елемент, що містить фокус введення
property ActiveMDIChild: TForm; Визначає дочірнє midi вікно з фокусом введення
TBorderIcon = (biSystemMenu, biMinimize, biMaximize, biHelp); TBorderIcons = set of TBorderIcon; property Borderlcons: TBorderIcons; Визначає наявність кнопок в заголовку вікна: biSystemMenu - є кнопка виклику системного меню; biMinimize - є кнопка мінімізації; biMaximize - є кнопка максимізації; biHelp - є кнопка виклику довідкової служби
property Canvas: TCanvas; Канва для промальовування фону вікна. Цю властивість можуть використовувати не віконні дочірні елементи
property ClientHeight: Integer; Висота клієнтської частини вікна
property ClientRect: TRect; Прямокутник клієнтської частини вікна
property ClientWidth: Integer; Ширина клієнтської частини вікна
property HelpFile: Strings; Кожна форма може мати індивідуальний Help- файл, ім'я якого містить ця властивість. Якщо ім'я не вказане, використовується Hdp-файл додатку
property Icon: TIcon; Містить піктограму вікна. Для головної форми ця властивість визначає також піктограму програми
property KeyPreview: Boolean; Якщо має значення True, форма отримує події від клавіатури, перш ніж вони поступлять в елемент з фокусом введення
property MDIChildCount: Integer; У рамковому MDI-вікні указує кількість пов'язаних з ним дочірніх midi-oкнo
property MDIChildren[I: Integer]: Tforms; У рамковому MDI-вікні відкриває доступ до I-му дочірньому вікну
property Menu: TMainMenu; Містить головне меню вікна
TModalResuit = Low(Integer)..High(Integer); property ModalResult: TModalResuit; Для модального вікна містить результат діалогу
property PixelsPerInch: Integer; Визначає роздільну здатність вікна в пікселях на один лінійний дюйм для етапу конструювання форми
TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly, poScreenCenter); property Position: TPosition; Визначає положення і розміри вікна у момент його появи на екрані: poDesigned - такі ж, як на етапі конструювання вікна; poDefault - положення і розміри визначає Windows; poDefaultposOnly - положення, як на етапі конструювання, розміри визначає Windows; л poDefaultSizeOnly - розміри, як на етапі конструювання, положення визначає Windows; poScreenCenter - в центрі екрану з розмірами, як на етапі конструювання
TPrintScale = (poNone, poProportional, poPrintToFit); property PrintScale: TPrintScale; Визначає масштабування вікна при його друці на принтері: poNone - немає масштабування; кожен піксель вікна відтворюється однією крапкою на папері; рорrороrtional - форма масштабується так, щоб її образ на папері був максимально схожий на її зображення на екрані; poPrintToFit- форма друкується з такими ж пропорціями, як на екрані, але з розмірами, за полняющими лист паперу
property Scaled: Boolean; Разрешает/запрещает масштабувати форму, якщо значення її властивості PixelPerinch відрізняється від поточного дозволу екрану
TileMode = (tbHorizonial, tbVertical); property TileMode: TTileMode; Визначає стиль розташування дочірніх вікон MDI-додатку при їх впорядкуванні мозаїкою
property WindowMenu: TMenuItem; Визначає пункт головного меню рамкового MDI-вікна, до якого додаються опції дочірнього вікна
TWindowState = (wsNormal, wsMinimized, wsMaximized); property WindowState: TWindow State; Визначає стан вікна у момент його появи на екрані: wsNormal - звічайне Вікно; wsMinimized - мінімізовано до піктограми; wsMaximized - розкрито на важ екран

Примітка

Якщо в безлічі властивості BоrderIcon прибрати кнопки biMinimize: biMaximize, а у властивість WindowState помістити значення wsMaximized, форма займе весь простір екрану, включаючи нижню панель завдань.

Методи форми:

procedure Arrangelcons;   Упорядковує піктограми закритих дочірніх вікон MDI-додатку
procedure Cascade; Має в своєму розпорядженні дочірні MDI-вікна каскад
procedure Close;   Закриває вікно. Для головного вікна завершує роботу програми
function CloseQuery: Boolean Повертає True, якщо можна закрити вікно
procedure DefocusControl(Control: TWinControl; Removing: Boolean); Відбирає фокус введення у дочірнього елементу Control. Якщо при цьому Removing=True, фокус введення отримує форма
procedure FocusControl(Control: TWinControl); Передає фокус введення дочірньому елементу Control
function GetFormImage: TBitmap; Містить поточне зображення вікна форми
procedure Next; Робить активним наступне mdi-okнo
procedure Previous; Робить активним попереднє mdi-okнo
procedure Tile; Располагает дочерние MDI-окна мозаикой
procedure Print; Друкує вікно на принтері
procedure Release; Чекає закінчення обробки всіх подій форми і її дочірніх елементів, після чого знищує вікно і звільняє всю пов'язану з ним пам'ять
procedure SendCancel- Mode(Sender: TControl); Відновлює початковий стан вікна: звільняє мишу, припиняє прокрутку і закриває меню
procedure SetFocus; Передає фокус введення формі. Форма при цьому повинна бути активною і видимою
procedure Show; Показує форму в немодальному режимі
function ShowModal: Integer; Показує форму в модальному режимі і повертає результат діалогу

Події форми:



Поделиться:


Последнее изменение этой страницы: 2016-09-13; просмотров: 213; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.143.218.146 (0.015 с.)