Лекція 2

 

Лекція 2

 

У Delphi існує кілька типів властивостей:

Прості властивості - це ті, значення яких є числами або рядками. Наприклад, властивості Left і Top приймають цілі значення, що визначають положення лівого верхнього кута компонента або форми. Властивості Caption і Name являють собою рядок й визначають заголовок і ім'я компонента або форми.

Перечислювані властивості - це ті, які можуть приймати значення з визначеного набору (списку). Найпростіший приклад - це властивість типу Boolean, що може приймати значення True або False (істинно або ложно). Наприклад властивість Enabled для кнопки Button буде означати, чи може користувач чи не може нажати на неї. Якщо встановлено False, то кнопка стає сірою, недоступною.

Вкладені властивості - це ті, які підтримують вкладені значення (або об'єкти). Object Inspector зображує знак "+" ліворуч від назви таких властивостей. Є два види таких властивостей: множини й комбіновані значення. Object Inspector зображує множини у квадратних дужках. Комбіновані значення відображаються в Інспекторі Об'єктів як колекція деяких величин, кожний зі своїм типом даних. Деякі властивості, наприклад, Font, для зміни своїх значень мають можливість викликати діалогове вікно. Для цього досить клацнути маленьку кнопку із трьома крапками в правій частині рядка.

 

Властивості класу TForm (властивості помічені * можуть використовуватися в інших стандартних компонентах Delphi 7 наприклад Button, Label)

 

Властивість

Призначення

Active

Містить значення True, якщо форма активна  

ActiveControl

Вказує на компонент, що повинен бути активним за

замовчуванням.

Align*

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

alNone

немає вирівнювання.

alBottom

вирівнювання по нижньому краї

alLeft

вирівнювання по лівому краї

аlRight

вирівнювання по правому краї

аlTop

вирівнювання по верхньому краї

AlphaBlend

Властивість форми. Означає, чи має форма прозорість. Якщо ця властивість дорівнює true, то вікно буде прозорим. Ступінь прозорості задається через властивість AlphaBlendValue (можна задавати числове значення ступеня прозорості від 0 до 255. 0 – форма буде абсолютно прозорою. 255 означає повну непрозорість) УВАГА!!! Прозорість працює не у всіх системах.

AutoScroll

Чи буде форма автоматично проводити скролінг, чи ні. Тип властивості - логічний.

AutoSize*

Чи повинні компоненти на формі автоматично коректувати розміри. Тип властивості - логічний

BorderIcons

Властивість визначає, які кнопки повинні бути присутні у вікна. Доступні 4 властивості:

biSystemMenu

показати меню (іконка ліворуч у рядку заголовка вікна) і інші кнопки заголовка вікна.

biMinimize

кнопка мінімізації вікна

biMaximize

кнопка максимізації вікна

biHelp

кнопка допомоги

BorderStyle*

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

bsSizeable

стандартне вікно, з нормальною границею, що може

змінювати свої розміри.

bsDialog

вікно виглядає у вигляді діалогу.

bsSingle

це вікно з фіксованим розміром і змінювати його мишкою не можна. Змінити розмір можна тільки кнопкою Maximize.

bsSizeToolWin

вікно з тонкою границею. Особливо це помітно в заголовку вікна.

bsToolWindow

не можна змінювати розміри вікна

bsNone

вікно взагалі без оборки

BorderWidth

Ширина границі вікна

Caption*

Заголовок форми чи підпис на компоненті

Canvas*

Область малювання форми

ClientHeight

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

ClientWidth

Показує ширину клієнтської області вікна (тільки робоча область)

DropTarget

Містить значення True, якщо форма може працювати як приймач в операціях перетягання

Color*

Колір фону форми (якщо треба використовувати якийсь специфічний колір, то двічі натискають по цьому  параметрі, і відкриється стандартне вікно вибору кольорів)

Constraints

Максимальні значення розмірів вікна

MaxHeight/MinHeight

Максимальна висота вікна/ мінімальна висота вікна

MaxWidth / MinWidth

Максимальна ширина вікна/ мінімальна ширина вікна

Cursor*

Властивість відповідає за курсор, що буде відображатися при наведенні мишкою на форму/компонентів.

Enabled*

Доступність компонента. Якщо властивість дорівнює true, то користувач може працювати із цим компонентом. Інакше компонент недоступний і відображений сірим кольором

Font*

Шрифт, що використовується при виводі тексту на формі. Якщо двічі натиснути по цьому рядку, то з'явиться стандартне вікно Windows вибору шрифту

FormStyle

Стиль форми (fsStayOnTop Вікно із цим параметром буде перебувати завжди поверх інших)

Floating

Містить значення True, якщо форма може пристиковуватися до інших вікон

Height*

Висота вікна. Тип властивості - ціле число

Hint*

Текст підказки, що буде з'являтися в рядку стану при наведенні мишкою на форму/компонент

HorzScrollBar*

Параметри горизонтальної смуги прокручування

Icon

Іконка, що відображається в заголовку вікна

Left*

Ліва позиція вікна. Тип властивості - ціле число

Key Preview

Містить значення True, якщо форма отримуватиме інформацію про натиснуті клавіші раніше, ніж розташовані на ній об'єкти

Menu

Меню, що використовується в головному вікні

Name*

Ім'я форми/компонента (використовується в коді)

Parent*

«Батько» форми

ParentFont*

Якщо ця властивість дорівнює true, то для виводу тексту буде використовуватися той же шрифт, що й у батьківського об'єкта

PixelsPerlnch

Число пікселів на дюйм. Застосовується для настройки розміру форми залежно від роздільної здатності монітору

Position

Позиція вікна при старті додатка. Доступні наступні варіанти:

poDefault

Windows сам буде вирішувати, де розташувати вікно які будуть його розміри

poDefaultPosOnly

Windows сам буде вирішувати тільки де розташувати вікно, а розміри його будуть такими, які встановлено у властивостях

poDefaultSizeOnly

Windows буде вирішувати тільки якими будуть розміри вікна, а позиція буде така, яку вказано у властивостях

poDesigned

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

poDesktopCenter

вікно буде розташовуватися по центрі робочого столу

poMainFormCenter

вікно буде розташовуватися по центрі основної форми

poOwnerFormCenter

вікно буде розташовуватися по вікна, яке викликало це вікно

poScreenCenter

вікно буде розташовуватися по центрі екрана

ShowHint*

Показує - потрібно чи не потрібно показувати підказки.

Scaled

Містить значення True, якщо розмір форми підганятиметься відповідно до значення властивості Pixelsperlnch

Tag*

Ні на що не впливає. Можна використовувати його у своїх цілях

Тор

Верхня позиція вікна. Тип властивості - ціле число

TransparentColor

Чи є форма або компонент прозорим. На відміну від AlphaBlend, ця прозорість працює завжди. Зате не можна зробити напівпрозорими форми й компоненти

TransparentColorValue

Прозорий колір

VertScrollBar*

Вертикальна смуга прокручування

Visible*

Якщо дорівнює true, то форма/компонент видимі. Інакше форму/компонент не бачимо

Width*

Ширина вікна

WindowState

Стан вікна після запуску. Доступні наступні параметри:

wsNormal

вікно показується в нормальному стані

wsMaximized

вікно показується максимізованим

wsMinimized

вікно показується мінімізованим

 

Надалі, будемо розглядати компоненти палітри і будемо опускати ті властивості які вище були помічені зірочкою. Тобто при описі компоненти будемо описувати тільки специфічні їй властивості.

 

Події, подтримуємі  класом TForm

 

Подія

Умови генерації

OnActivate

Форма стала активною

OnClose

Форма закривається

OnCloseQuery

Запит на закриття форми

OnCreate

Форма створюється

OnDeactivate

Форма втратила фокус введення

OnDestroy

Форма знищується

OnHelp

Форма отримала запит на видачу довідкової інформації

OnHide

Форма стала невидимою (значення властивості Visible встановлене рівним False)

OnPaint

Форма повинна перемальоватись

OnShortCut

Користувач натиснув комбінацію швидких клавіш, викликається перед її обробкою

OnShow

Форма стала видимою (значення властивості Visible встановлене рівним True)

 

Компоненти являють собою елементи, з яких конструюється видиме зображення, створюване працюючою програмою. Є два види компонентів: візуальні та невізуальні.

Бібліотеки компонентів для різних версій Delphi будуються за принципом розширення: у першій версії було близько 70 компонентів, у той час як до складу Delphi 7 входить більше 300 компонентів.

Нижче перераховуються лише функціональні групи (сторінки палітри) компонентів і описуються основні компоненти.

 

Палітра компонентів містить такі закладки:

STANDARD – На сторінці Standard палітри компонентів зосереджені стандартні для Windows інтерфейсні елементи, без яких не обходиться практично жодна програма.

Frame – рамка. Нарівні з формою служить контейнером для розміщення інших компонентів. На відміну від форми може розміщатися в палітрі компонентів, створюючи заготовки компонентів.

MainMenu – головне меню програми. Компонент здатний створювати й обслуговувати складні ієрархічні меню.

PopupMenu – допоміжне або локальне меню. Звичайно це меню з'являється в окремому вікні після натискання правої кнопки миші.

Label – мітка. Цей компонент використовується для розміщення у вікні не дуже довгих однорядкових написів.

Edit – рядок вводу. Призначений для вводу, відображення або редагування одного текстового рядка.

Memo – багаторядковий текстовий редактор. Використовується для вводу і/або відображення багаторядкового тексту.

Button – командна кнопка. Оброблювач події OnClick цього компонента звичайно використовується для реалізації деякої команди.

CheckBox – незалежний перемикач. Клацання мишею на цьому компоненті в працюючій програмі змінює його логічну властивість Checked.

RadioButton – залежний перемикач. Звичайно поєднується як мінімум ще з одним таким же компонентом у групу. Клацання по перемикачі приводить до автоматичного звільнення раніше обраного перемикача в тій же групі.

ListBox – список вибору. Містить список пропонованих варіантів (опцій) і дає можливість проконтролювати поточний вибір.

ComboBox – комбінований список вибору. Являє собою комбінацію списку вибору й текстового редактора.

ScrollBar – смуга керування. Являє собою вертикальну або горизонтальну смугу, що нагадує смуги прокручування з боків Windows-вікна.

GroupBox – група елементів. Цей компонент використовується для групування декількох зв'язаних за змістом компонентів.

RadioGroup – група залежних перемикачів. Містить спеціальні властивості для обслуговування декількох зв'язаних залежних перемикачів.

Panel – панель. Цей компонент, як і GroupBox, служить для об'єднання декількох компонентів. Містить внутрішню й зовнішню крайки, що дозволяє створити ефекти “вдавленности” і “опуклості”.

Actiontist – список дій. Служить для централізованої реакції програми на дії користувача, пов'язані з вибором одного із групи однотипних керуючих елементів таких як опції меню, піктографічні кнопки й т.п.

 

Основні властивості та події деяких компонентів з палітри Standart

 

TButton Компонент являє собою кнопку.

Назва

Тип

Опис

Caption

String

Текст на поверхні кнопки

 

Події

Головна подія - ОnСІіск. Саме процедура обробки цієї події реалізує пов'язаний із кнопкою алгоритм керування при натисканні на кнопку.

 

 TLabel Компонент призначений для відображення тексту.

Назва

Тип

Опис

Caption

String

Відображуваний текст.

WordWrap

Boolean

Можливість переносу слів, якщо довжина тексту перевищує ширину компонента.

 

Події

Як правило не використовуються

 

 TEdit Компонент призначений для вводу й редагування одного рядка тексту.

Назва

Тип

Опис

MaxLength

Integer

Обмежує максимально припустиму кількість символів, що вводяться в строку

ReadOnly

Boolean

Можливість редагування.

Text

String

Рядок тексту.

SelText

String

Виділений текст.

SelStart

Integer

Номер першого символу у виділеному тексті.

SelLength

Integer

Довжина виділеного тексту.

 

Події

onChange - зміна вмісту текстового поля. Відбувається щораз при введенні, видаленні чи заміні чергового символу. Наприклад, при введенні слова Hello пя подія виникає, щонайменше, п'ять разів - після введення кожного символу. А якщо в процесі введення деякі символи будуть заміня- тися (виправлятися), та подія опСhange буде виникати ще більше число разів. З цією подією можна зв'язати найпростішу перевірку тексту, що вво- диться. і навіть обмежити введення деяких символів.

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

 

 TListBox Компонент являє собою список.

Назва

Тип

Опис

Items

TStrings

Рядки списку.

ItemIndex

Integer

Порядковий номер виділеного рядка в списку.

MultiSelect

Boolean

Можливість виділення декількох рядків відразу.

SelCount

Integer

Кількість виділених рядків у списку.

Selected[Index]

Boolean

Вказує, чи рядок з номером Index виділений чи ні.

 

Події

Іноді використовує ться подія OnClick, що виникає при виборі елемента в списку (за допомогою миші чи клавіші керування). Але більш популярною є подія onDblClik, що виникає при подвійному кліку на од ному з рядків списку. У цьому випадку користувач одночасно виділяє рядок і ініціює його обробку, що цілком відповідає загальним принципам ро боти зі списками в додатках Windows.

 

 TComboBox Компонент являє собою список, що розкривається.

Назва

Тип

Опис

Items

TStrings

Рядки списку.

ItemIndex

Integer

Номер обраного рядка.

Style

TComboBoxStyle

Стиль: csDropDown – список, що розкривається, і поле вводу, csSimple – поле вводу зі звичайним списком, csDropDownList, - список, що розкривається, без поля вводу.

 

Події

Основними подіями є On Click - вибір елемента списку і onChange зміна тексту в текстовому полі. Причому, подія onCliange має сенс тільки для перших двох стилів. Для інших стилів вона не може виникати, тому що для них заборонене редагування текстового поля.

 

 TRadioGroup Компонент являє собою панель із розташованими на ній радіокнопками. Тільки одна з радіокнопок може бути виділена.

Назва

Тип

Опис

Items

TStrings

Список назв радіокнопок.

ItemIndex

Integer

Порядковий номер виділеної радіокнопки.

 

Події

Головна подія - ОnСІіск, що відповідає кліку миші на кнопці. В оброблювачі цієї події можна визначити включену кнопку по властивості Itemindex.

 

 TMainMenu Компонент являє собою меню, розташоване у верхньому рядку вікна.

Назва

Тип

Опис

Items

TMenuItem

Елемент меню (див. нижче).

Caption

String

Назва пункту меню.

Символ "&" перед яким-небудь символом назви пункту меню виділяє цей символ підкресленням. При натисканні Alt-Підкреслений символ викликається даний пункт меню.

Для створення розділової смуги між пунктами меню введіть символ "-".

Checked

Boolean

Можливість появи галочки або крапки (якщо входить до складу радіогрупи) ліворуч від назви пункту меню.

Enabled

Boolean

Доступність пункту меню.

Items[Index]

TMenuItem

Підменю.

GroupIndex

Byte

Номер радіогрупи, до якої належить пункт меню.

RadioItem

Boolean

Приналежність радіогрупі.

Visible

Boolean

Видимість пункту в меню.

ShortCut

Word

Співвідносить пункту меню комбінацію клавіш.

 

Події

Для пунктів меню практично обробляється єдина подія ОnСlick вибір пункту меню. Для створення процедури обробки цієї події (тобто виконання команди меню) необхідно під час проектування додатка вибрати відповідний пункт чи підпункт у вікні Конструктора меню і зробити на ньому подвійний клік. Саме за допомогою оброблювача цієї події і реа лізуються команди меню.

 

 TPanel Компонент являє собою панель, на якій можна розташувати інші елементи керування.

 

Назва

Тип

Опис

Alignment

TAlignment

Вирівнювання заголовка панелі.

BevelInner

TPanelBevel

Стиль внутрішньої рамки панелі: bvNone – рамка відсутня, bvLowered – занурена, bvRaised – виступає.

BevelOuter

TPanelBevel

Стиль зовнішньої рамки панелі.

BevelWidth

Integer

Товщина внутрішньої й зовнішньої рамок у пікселях.

BorderWidth

Integer

Відстань між внутрішньою й зовнішньою рамками в пікселях.

 

Події

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

 

 TCheckBox Компонент реалізує елемент керування - прапорець.

Назва

Тип

Опис

Checked

Boolean

Визначає, установлений прапорець або скинутий.

Allowed Grey

Boolean

Визначає, чи може прапорець перебувати в третьому стані – зафарбованим у сірий колір.

State

TCheckBoxState

Стан прапорця: cbUnchecked – скинутий, cbChecked – установлений, cbGrayed – зафарбований у сірий колір.

 

Події

Головна подія - On Click. Її можна використовувати для негайної обробки щигликів на об'єкті, тобто негайної реакції на вибір користувача. В оброблювачі цієї події можна аналізувати властивості Checked і State, що вже прийняли нове значення.

 

 * Memo

Компонент є вікном редагування багаторядкового тексту.

В компоненті Memo формат (шрифт, його атрибути, вирівнювання) однаковий для всього тексту і задається властивістю Font.

Назва

Тип

Опис

Lines

TStrings

Містить текст вікна у вигляді списку рядків

ReadOnly

Boolean

Якщо встановлено в true, то текст доступний тільки для читання.

MaxLength

Integer

Визначає максимальну довжину тексту, що вводиться. Якщо MaxLength = 0, то довжина тексту необмежена.

ScrollBars

TScrollStyle

Смуги прокручування:

ssNone - відсутні, ssHorizontal - горизонтальна, ssVertical - вертикальна, ssBoth - обидві.

 

Події

Ті ж самі, що і у Edit.

 

Клас TStrings

 

Абстрактний клас TStrings інкаисулює поля і методи для роботи з сукупністю рядків. Від нього породжені численні спеціалізовані нащадки, що обслуговують сукупності рядків у таких компонентах як TComboBox, TListBox і т.д.

Чудовою особливістю TStrings є те, що його елементами служать пари рядок+об'єкт, у яких рядок - власне рядок символів, а об'єкт - об'єкт будь-якого класу Delphi. Це дозволяє зберігати в TStrings об'єкти з текстовими примітками до них, сортувати об'єкти, відшукувати об'єкт по його опису і т.п. В якості такого об'єкта може виступати нащадок TStrings, що дозволяє створювати багатомірні набори рядків.

Деякі властивості:

Capacity – поточна максимальна кількість рядків;

Count - поточна кількість рядків (фактична);

Strings[i] - здійснює доступ до і-го рядка;

Objects[i] - здійснює доступ до і-го об'єкта.

Масив рядків технічно реалізується у вигляді масиву покажчиків: тому Capacity містить довжину цього масиву, a Count - кількість зайнятих у ньому елементів. Якщо при додаванні чергового елемента виявиться, що Count = Capacity, відбувається автоматичне розширення масиву на 16 елементів. Рекомендується заздалегідь dстановити очікуване значення Capacity.

Деякі методи класу TStrings:

Add(S) - додає рядок у набір і повертає його індекс;

AddObject(St, Ob) - додає рядок і об'єкт у набір;

Clear – очищує всі рядки тексту;

Delete(i) - знищує і-й елемент з набору і звільняє пам'ять:

Exchanged(іі,і2) - змінює місцями рядки іі і і2;

Insert(i,St) - вставляє рядок St і присвоює йому індекс і;

InsertObject(і, Ob) - те ж, але разом з об'єктом.

 

Tags: