Лекція 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) - те ж, але разом з об'єктом.