Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Компонент 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; Показує форму в модальному режимі і повертає результат діалогу

Події форми:

property OnActivate: TNoti fyEvent; Виникає у момент активізації вікна (при отриманні фокусу введення)
TCloseAction = (caNone, caHide caFree, caMinimize); TCloseEvent = procedure(Sender: TObject; var Action: TCloseAction) of object; property OnClose: TCloseEvent; Виникає перед закриттям вікна. Параметр Action уточнює необхідні дії: саNоnе - не закривати вікно; caHide - заховати вікно; caFree - знищити вікно; caMimimize - мінімізувати вікно
TCloseQueryEvent = proce dure(Sender: TObject; var CanClose: Boolean) of object; property OnCloseQuery: TCloseQueryEvent; Возникает перед закрытием окна. В параметре canclose обработчик сообщает о возможности закрытия окна
property OnCreate: TNotifyEvent; Виникає при створенні вікна, але до його появи на екрані
property OnDeactivate: TNotifyEvent; Виникає при передачі активності іншому вікну тієї ж програми
property OnDestroy: TNotifyEvent; Виникає перед руйнуванням вікна
THelpEvent = function (Command: Word; Data: Longint; var CallHelp: Boolean): Boolean of object; property OnHelp: THelpEvent; Виникає при зверненні до довідкової служби. У параметрі callHelp обробник повідомляє про можливість отримання допомоги
property OnHide: TNotifyEvent; Виникає перед зникненням вікна
property OnPaint: TNotifyEvent; Виникає при необхідності промальовування вікна
property OnResize: TNotifyEvent; Виникає при зміні розмірів вікна
property OnShow: TNotifyEvent; Виникає при появі вікна на екрані

1.3 СТВОРЕННЯ І ВИКОРИСТАННЯ ФОРМ

Для підключення нової форми до проекту досить звернутися до репозиторія і вибрати потрібний різновид форми. Менеджер проекту автоматично підключає нову форму до списку використовуваних форм і забезпечує всі необхідні дії по її ініціації. Найперша підключена до проекту форма (стандартне ім'я форми - Form1) стає головним вікном програми. Вікно цієї форми автоматично з'являється на екрані у момент старту програми. Втім, програміст може вказати будь-яку форму, вікно якої стане головним. Для цього потрібно звернутися до опції

Project | Options І, розкривши список Main form, вибрати потрібну форму (мал. 1).

мал 1. Вікно управління проектом

Кожне наступне вікно стає видно тільки після звернення до його методу show або showModal. Щоб звернутися до цих методів, потрібно послатися на об'єкт-вікно, який автоматично оголошується в інтерфейсному розділі пов'язаного з вікном модуля. Для цього, у свою чергу, головне вікно повинне знати про існування іншого вікна, що досягається посиланням на модуль вікна в пропозиції uses. Якщо, наприклад, в ході виконання одного з методів головного вікна програміст захоче викликати вікно з ім'ям fmForm, пов'язане з модулем Formunit, він повинен послатися на цей модуль в пропозиції uses головного вікна:

implementation Uses FormUnit;

після чого викликати вікно на екран:

fmForm.Show;

або

fmForm.ShowModal;

Delphi автоматизує вставку посилання на модуль в пропозицію uses. Для цього на етапі конструювання потрібно активізувати головне вікно, клацнувши по ньому мишею, після чого звернутися до опції File | uses unit. У діалоговому вікні (мал. 2), що з'явилося, потрібно вибрати модуль і натиснути ок. Вставляється посилання в пропозицію, що стоїть за зарезервованим словом Implementation, оскільки звичайне головне вікно в своїй інтерфейсній частині не посилається на елементи інтерфейсної частини другого вікна. Так само можна при необхідності послатися в модулі другого вікна на модуль головного вікна: активізуйте друге вікно і знов викличте опцію File | uses Unit. Відмічу, що, якщо програміст забув послатися на модуль, який підключений до проекту, Delphi при першій же трансляції програми повідомить про це і запропонує вставити бракуюче посилання.

Мал. 2. Вставка посилання на модуль

При виклику методу show друге вікно з'являється на екрані і працює одночасно з першим, тому управління відразу передається операторові, що стоїть за зверненням до цього методу. Такі вікна називаються немодальними, вони завжди відкриваються в одному методі, а закриваються в іншому. На відміну від цього звернення до show-Modal створює модальне вікно, яке повністю бере на себе подальше управління програмою, тому оператор за зверненням до showModal в зухвалій частині програми отримає управління тільки після закриття модального вікна.

Модальні вікна завжди вимагають від користувача ухвалення якого-небудь рішення. З їх допомогою реалізується діалог з користувачем або створюється інформаційне вікно, яке користувач повинен закрити після ознайомлення з інформацією, що міститься в нім. Якщо від користувача потрібне ухвалення рішення, в модальне вікно вставляються залежні або незалежні перемикачі, кнопки і інші інтерфейсні елементи, за допомогою яких користувач зможе повідомити програму про ухвалене рішення. У момент закриття діалогу модальне вікно повинне помістити число, відповідне рішенню користувача, в свою властивість ModalResuit. Деякі стандартні кнопки (ok, Yes, No, cancel і т. п.) автоматично виконують ці дії: поміщають потрібне число в ModalResuit і закривають вікно. У інших випадках про це повинен поклопотатися програміст. Зухвала програма набуває значення ModaiResuit як значення функції showModal і може тут же його проаналізувати:

if Form2.ShowModai = mrXXX then....

Можливий і такий варіант:

Form2.ShowModal;

if Form2.ModaiResuit = mrXXX then.....

Для закриття вікна (модального або немодального) використовуються методи Hide або close. Слід врахувати, що метод Close завжди поміщає в ModalResult значення 2 (mrCancel), тоді як Hide не міняє значення цієї властивості, тому, якщо програміст хоче передати в зухвалу програму нестандартний модальний результат, слід писати:

ModaiResuit:= MyResult;

Hide; // Але у жодному випадку Close!

Примітка

Підключення нового вікна до проекту призводить до того, що менеджер; проекту розміщує його ім'я в списку автоматично створюваних вікон на мал..1 -список Auto-Create forms). В цьому випадку програміст може не піклуватися про ініціацію, відповідного об'єкту вікна. Проте якщо в програмі використовується безліч вікон, автоматичне їх створення у момент старту програми може істотно затягнути в часі процес завантаження програми; У той же час негайне створення всіх вікон зовсім не обов'язкове, оскільки навряд чи вам знадобиться одночасно показувати їх на екрані в немодальному режимі. Професійні програмісти ніколи не створюють: всі віконні об'єкти у момент старту програми, але використовують їх у міру потреби. Для цього у вікні менеджера проекту посилання на ці форми переносяться в панель Available forms (мал. 1), а звернення до вікна.

Application.CreateForm(TAboutBox, AboutBox);

AboutBox.show;

Мені відомий випадок, коли цей нехитрий прийом дозволив скоротити час завантаження програми із 3 хвилин з гаком до 15 секунд.

До речі, корисно відповідним чином набудувати середовище Delphi: викличте Tools I Environment Options і на сторінці Designer приберіть прапорець в перемикачі Autоcreate forms & data modules.

 




Поделиться с друзьями:


Дата добавления: 2015-07-02; Просмотров: 416; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.