Основні концепції об’єктно-орієнтованого програмування, поняття, терміни. 


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



ЗНАЕТЕ ЛИ ВЫ?

Основні концепції об’єктно-орієнтованого програмування, поняття, терміни.



Основні концепції об’єктно-орієнтованого програмування, поняття, терміни.

У програмуванні широко використовують фундаментальний принцип керування складними системами – devide et impera, згідно з яким при проектуванні складної програмної системи здійснюють алгоритмічну декомпозицію задачі. Метою декомпозиції є подання системи у вигляді сукупності взаємодіючих систем, кожну з яких можна налагоджувати незалежно одна від одної. Ідея розділення програм на самостійні частини, які реалізовують підпрограми, знайшла відображення в структурному підході до створення програмних продуктів. Дальший розвиток стректурного підходу привів до модульного програмування, яке передбачає декомпозицію задачі у вигляді ієрархії взаємодіючих модулів (програм). Розвитком ідеї модульного програмування є моделювання об’єктів предметної області за допомогою класів (об’єктних типів). Ієрархічна класифікація об’єктів і наслідування властивостей стали початковими точками у розвитку концепції об’єктно-орієнтованого програмування. Основним поняттям ООП є клас (відповідає визначеному типовому об’єктові предметної області; це визначена програмна одиниця, яка має 3 важливі властивості: інкапсуляція, наслідування, поліморфізм). Інкапсуляція – це об’єднання і локалізація у рамках класу, як єдиного цілого, даних і підпрограм, які опрацьовують дані. Наслідування – властивість класу породжувати своїх нащадків – класи, які успадковують властивості батьківського класу. Поліморфізм – властивість класів родичів по-різному створювати однотипні дії.

 

2.Зміст і призначення поняття клас. Що таке інкапсуляція?

Клас – це визначена програмна структура, яка має 3 важливі властивості: інкапсуляція, наслідування, поліморфізм. Ці властивості даюсь змогу адекватно відображати структуру предметної області. Інкапсуляція – («вміст в оболонці») – це об’єднання і локалізація у рамках класу, як єдиного цілого, даних і підпрограм, які опрацьовують ці дані. Клас – це деякий абстрактний тим, який створюється на основі наявних типів. Окремий клас включає такі елементи: поля, методи, властивості, події. Поля класу подібні до полів запису і служать для зберігання інформації про об’єкт. Поле описується як змінна, що може належати до будь-якого типу. Методи – це процедури та функції, призначені для опрацювання полів. Заголовок методі розміщується в опису класу, а сам код – в розділі реалізації модуля. Властивості займають проміжне положення між полями та методами. Кожній властивості відповідає поле, що містить її значення, і 2 методи, що забезпечують доступ до цього поля (читання/запис значень). Подія – спеціальна властивість типу TNotifyEvent. Структура класу:

Type назва класу = class (назва класу предка)

(відкриті/опубліковані поля, методи, властивості, події);

Private //видно тільки в цьому модулі

Закриті поля, методи, властивості, події;

Protected //видно у цьому модулі і нащадкам

Захищені поля, методи, властивості, події;

Public //відкритий доступ

Відкриті поля, методи, властивості, події;

Published //відкритий доступ і видно в Інспекторі об’єктів

Опубліковані поля, властивості;

End;

Клас TObject є базовим класом для всіх інших класів.

3. Зміст і призначення поняття об’єкт (екземпляр). Яку пам’ять використовує екземпляр?

Оголошення класу ще не задає об’єкта, а тільки визначає тип того об’єкта, який буде створений у програмі пізніше. Визначення об’єктів може виглядати так:

var c1,c2,c2: TCircle;

Тут визначені об’єкти с1, с2, с3 типу TCircle. В Object Pascal усі об’єкти розміщуються в динамічній пам’яті, а тому вони фактично є покажчиками спеціального виду. Під час компілювання програми кожному об’єкту, незалежно від його класу, виділяється фіксована ділянка пам’яті (4 байти) для зберігання адреси розміщення об’єкта в динамічній пам’яті. Перш ніж звертатись до елементів об’єкта, його необхідно створити за допомогою конструктора, і, при потребі, задати в ньому початкові значення полів об’єкта. При створенні нового об’єкта виклик конструктора реалізується через назву класу, наприклад:

c1:=TCircle.create;

Покажчик (об’єкт) с1 отримує адресу розміщення у динамічній пам’яті нового об’єкта класу TCircle.якщо конструктор Create доповнювався у відповідному класі, то під час виконання він має ініціалізувати поля і/або властивості об’єкта за допомогою значень, що передаються як аргументи конструктора:

c2:=TCircle.Create(x2,y1);

Конструктор класу під час створення об’єкта виконує дії задані програмістом, реалізує стандартні дії зі створення об’єкта.

 

4. Що таке успадкування (наслідування)? З якою метою його використовують?

Властивість наслідування означає, що будь-який клас може бути породжений іншим класом, як от:

TNewClass=Class (TOldClass) …

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

У Object Pascal усі класи є нащадками класу TObect. Цей клас не має полів і властивостей, але його методи дають зможу створювати, підтримувати діяльність і знищувати об’єкти. Використання принципу наслідування привело до створення у Delphi розгалуженого дерева класів, у верхній частині якого знаходяться абстрактні класи, для яких не можна створити об’єкти. Водночас вони є предками класів, для яких уже створюються реальні об’єкти.

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

 

5. Що таке поліморфізм? Як його реалізують? Як його використовують?

Властивість поліморфізму дає можливість використовувати однакові назви для методів, які входять у різні класи. При звертанні до таких методів буде виконуватись той з них, що відповідає класові об’єкта. Властивість поліморфізму дає можливість використовувати одинакові назви для методів, які входять у різні класи. При звертанні до таких методів буде виконуватись той з них, що відповідає класові об’єкта. Ця властивість забезпечується через перекриття у класові-нащадкові відповідного методу батьківського класу. Використовуючи поліморфізм, ми можемо значно спростити реалізацію подібної функціональності. Метод, оголошений в класі, можна викликати різними способами, що залежать від типу методу, який визначає механізм його перекриття в класах-нащадках. Тип методом визначають за допомогою кодифікатора, який вказують в описі класу після заголовка методу і відділяють від заголовка крапкою з комою. Кодифікатори: virtual – віртуальний метод, dynamic – динамічний метод, override – перевизначений метод, message – опрацювання повідомлення, abstract – абстрактний метод. Всі методи, оголошені в класі, є статичними і викликаються як звичайні підпрограми. Такі методи неможливо перевизначати для реалізації поліморфізму.

 

Public

Property MyEvent:TNotifyEvent read FMyEvent write FMyEvent;

 

Надсилання повідомлень об’єктові.

Повідомлення використовуються для виклику методів, описаних в класі. Методи знаходяться в регістрі CS. Наприклад, коли ми надсилаємо змінній P типу TShape повідомлення P.Sqare, то вказівник на об`єкт P до якого ми звертаємося, передає керування об`кту, який заходиться в heap. Далі з регістру CS викликаєтьяся відповідний метод описаний в класі TShape. Метод опрацьовує дані і повертає значення в heap.

Для обєкта типу TSubClass(TBaseClass) можна викликати методи писані як вньому самому, так і унаслідувані від класу TBaseClass, якщо такі є.

Створення та налаштування компоненти на етапі проектування та на етапі виконання.

TForm

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

TFormStyle = [fsNormal, fsMDIChild, fsMDIForm, fsStayOnTop];
fsNormal - звичайне вікно;
fsMDIChild - дочірнє вікно програми MDI;
fsMDIForm - головне вікно MDI;
fsStayOnTop - вікно, яке залишається поверх інших навіть у неактивному стані.

Набір піктограм в заголовку вікна описується властивістю:
(Рb) property Borderlcons: TBorderIcons;
TBorderIcon = (biSystemMenu, biMiniinize, biMaximize);
TBorderIcons = set of TBorderIcon;
За замовчуванням у звичайної форми є всі три піктограми - для виклику системного меню, розгортання і згортають вікна.
Обрамлення форми задається властивістю:
(Pb) property BorderStyle: TFormBorderStyle;
TFormBorderStyle = (bsNone, bsSingle, bsSizeable, bsDialog);
Крім двох стандартних стилів обрамлення (bsNone і bsSingle) у форми є ще два своїх типу (bsSizeable і bsDialog). Ці можливості стандартні для Windows. Особливості реалізації тут полягають у тому, що стиль обрамлення може змінюватися в процесі виконання програми. Кожне вікно може перебувати в одному із станів - нормальному, згорнутому (мінімізованому) і розгорнутому (максимізована), що визначається властивістю:
property WindowState: TWindowState;
TWindowState = [wsNormal, wsMinimized, wsMaximized);
Значення цієї властивості можна змінити як на етапі розробки, так і під час виконання.
Вікно в згорнутому стані на екрані відображається значком форми, який задається у властивості:
(Pb) property Icon: TIcon;

 

TLabel

Для відображення різних написів на формі використовують компонент TLabel.

Тексти визначаються значенням їх властивості Caption. Його можна встановлювати в процесі проектування або задавати і змінювати програмно під час виконання програми. Наприклад:
Label1.Caption: = 'Новий текст';
У всіх компонентах колір фону визначається властивістю Color, а колір напису - підвластивістю Color властивості Font. Розміщення всіх розглянутих компонентів на формі визначається, зокрема, властивостями Тор (координата верхнього краю), Left (координата лівого краю), Height (висота), Width (ширина). Є також властивості, що визначають зміну розміру компонента при зміні користувачем під час виконання програми розмірів вікна. Це загальні властивості всіх віконних компонентів: Align (вирівнювання компонента по всій верхній, лівою, правою, нижньої частин контейнера або по всій його клієнтської області), Anchors (прив'язка сторін компонента до сторін контейнера), Constraints (обмеження допустимих змін розмірів). Врахуйте, що використання у властивості Anchors одночасної прив'язки компонента до протилежних сторонах контейнера призведе до розтягування або стиснення компонента при зміні користувачем розмірів вікна. У мітці Label є властивість Wordwrap - допустимість переносу слів довжиноюю запису, що перевищує довжину компонента, на нову сходинку. Щоб такий перенос міг здійснюватися, треба встановити властивість WordWrap в true, властивість AutoSize в false (щоб розмір компонента не визначався розміром напису) і зробити висоту компонента такою, щоб у ньому могло поміститися кілька рядків.

 

TSpinEdit

Компонент TspinEdit призначений для введення/відображення числа. Він являє собою комбінацію спеціалізованого нащадку однорядкового текстового поля TCustonEdit та кнопки TSpinButton. В текстовому полі допустиме введення тільки чисел, а кнопки використовують для зміни числа на деяку фіксовану величину.

Властивості:

Property EditorEnabled: Boolean – дозволяє/забороняє ручне введення чисел в текстове поле.

Property Increment: LongInt – містить число, на яке зміниться властивість Value при натисканні на одній з кнопок TSpinButton.

Property MaxValue: LongInt – містить верхню границю діапазону можливих значень Value
Property MinValue: LongInt – містить нижню границю діапазону можливих значень Value.

Property Value: LongInt - містить поточне значення числової величини.

 

 

TButton

Компонент TButton широко використовується для управління програмою. Пов’язаний з кнопкою алгоритм управління реалізується в обробнику подій OnClick. Властивості компонента:

Property Cancel: Boolean – якщо значення true, подія OnClick кнопки виникає при натиску клавіші <Esc>.

Property Default: Boolean – якщо значення true, подія OnClick при натиску клавіші <Enter>.

Type TModalResult=Low(integer)…High(integer);

Property ModelResult: TModalResult – визначає результат, з яким було закрите модальне вікно.

Основне з точки зору зовнішнього вигляду властивість кнопки - Caption (напис). У написах кнопок можна передбачати використання клавіш прискореного доступу, виділяючи для цього один із символів напису. Перед символом, який повинен відповідати клавіші прискореного доступу, ставиться символ амперсанта «&». Цей символ не з'являється в написі, а наступний за ним символ виявляється підкресленим. Тоді користувач може замість клацання на кнопці натиснути в будь-який момент клавішу Alt спільно з клавішею виділеного символу.
Наприклад, якщо у вашому програмі є кнопка виконання якоїсь операції, ви можете задати її властивість Caption рівним «" & Виконати "». На кнопці цей напис буде мати вигляд «" В иконати "». І якщо користувач натисне клавіші Alt-В, то це буде еквівалентно клацанню на кнопці.

 

TBitBtn

Всі властивості компоненти button відносяться і до BitBtn. Розглянемо тепер особливості кнопки з піктограмою BitBtn. Зображення на цій кнопці задається властивістю Glyph. Файл зображення для кнопки може містити до чотирьох зображень піктограм розміру 16x16. Саме ліве відповідає відкритій кнопці. Друге ліворуч відповідає недоступній кнопці, коли її властивість Enabled рівне false. Третє зліва зображення використовується при натисканні користувача на кнопку при її включенні. Четверте зліва зображення використовується в кнопках з фіксацією SpeedButton для зображення кнопки в натиснутому стані. Більшість зображень для кнопок використовує дві піктограми. Число піктограм ви можете дізнатися з властивості кнопки NumGlyphs, яке після завантаження зображення покаже вам число піктограм в ній.
Розташування зображення і написи на кнопці визначається властивостями Margin, Layout і Spacing. Якщо властивість Margin дорівнює -1, то образ і напис розміщуються в центрі кнопки. При цьому положення зображення по відношенню до напису визначається властивістю Layout, що може приймати значення: blGlyphLeft (ліворуч, це значення прийнято за замовчуванням), blGlyphRight (праворуч), blGlyphТор (угорі), blGlyphBottom (внизу). Властивість Spacing задає число пікселів, що розділяють образ і напис на поверхні кнопки. За замовчуванням Spacing = 4. Якщо задати Spacing = 0, образ і напис будуть розміщені впритул один до одного. Якщо задати Spacing = -1, то текст з'явиться посередині між зображенням і краєм кнопки.Ще одна властивість BitBtn - властивість Kind визначає тип кнопки. За умовчанням значення цієї властивості одно bkCustom - замовна. Але можна встановити і безліч інших визначених типів: bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bkIgnore, bkAll. У цих типах вже зроблені відповідні написи, введені піктограми, задані ще деякі властивості.

 

TEdit

У компонентах Edit і MaskEdit вводиться і виводиться текст міститься у властивості Text. Це властивість можна встановлювати в процесі проектування або задавати програмно. Вирівнювання тексту, як це мало місце в мітках і панелях, неможливо. Перенесення рядків теж неможливий. Текст, не поміщається по довжині у вікно, просто зрушується і користувач може переміщатися по ньому за допомогою курсору. Властивість AutoSize у вікнах редагування має сенс, відмінний від змісту аналогічного властивості міток: автоматично підлаштовується під розмір тексту тільки висота, але не ширина вікна.
Вікна редагування забезпечені багатьма функціями, властивими більшості редакторів. Наприклад, в них передбачені типові комбінації «гарячих» клавіш: Ctrl-C - копіювання виділеного тексту в буфер обміну "Clipboard" (команда "Copy"), Ctrl-X - вирізання виділеного тексту в буфер "Clipboard" (команда "Cut"), Ctrl-V - вставка тексту з буфера "Clipboard" в позицію курсору (команда "Paste"), Ctrl-Z - скасування останньої команди редагування. Властивість AutoSelect визначає, чи буде автоматично виділятися весь текст при передачі фокусу у вікно редагування. Його потрібно ставити рівним true у випадках, коли при перемиканні в це вікно користувач буде швидше замінювати поточний текст, ніж виправляти його. Є також властивості тільки виконавчі SelLength, SelStart, SelText, що визначають відповідно довжину виділеного тексту, позицію перед першим символом виділеного тексту і сам виділений текст. Властивість MaxLength визначає максимальну довжину введеного тексту. Якщо MaxLength = 0, то довжина тексту не обмежена. В іншому випадку значення MaxLength вказує максимальне число символів, яке може ввести користувач.Властивість Modified, доступне тільки під час виконання, показує, чи проводилося редагування тексту у вікні. Якщо ви хочете використовувати це властивість, то в момент початку роботи користувача з текстом Modified треба встановити в false.

 

TMemo

Компонент Memo є вікном редагування багаторядкового тексту. Він так само, як і вікно Edit, забезпечений багатьма функціями, властивими більшості редакторів. У ньому передбачені типові комбінації «гарячих» клавіш: Ctrl-C - копіювання виділеного тексту в буфер обміну "Clipboard" (команда "Copy"), Ctrl-X - вирізання виділеного тексту в буфер "Clipboard" (команда "Cut"), Ctrl -V - вставка тексту з буфера "Clipboard" в позицію курсору (команда "Paste"), Ctrl-Z - скасування останньої команди редагування. У компоненті Memo формат (шрифт, його атрибути, вирівнювання) однаковий для всього тексту і визначається властивістю Font.

Властивості:

Property Lines: Tstrings – містить рядки тексту.

Property ScrollBars: TscrollStyle – визначає наявність в багаторядковому полі полоси прокрутки: ssNone – немає полос, ssHorizontal/ssVertical – є горизонтальна/вертикальна полоса, ssBoth – є обидві полоси.

Property Text: String – відображає вміст властивості Lines в вигляді одного довгого рядку, в якій границі окремих рядків визначаються символами EOL.

Property WantReturns: Boolean – якщо значення true, натиск на клавішу <Enter> викликає перехід на новий рядок.

Property WantTabs: Boolean – якщо значення true, натиск на клавішу <Tab> викликає введення в текст символа табуляції.

 

TBevel

Компонент Tbevel носить оформлювальний характер і призначений для видалення групи елементів чи відокремлення їх один від одного. Вид компонента (прямокутник, рамка, верхня лінія, нижня лінія,ліва лінія, права лінія) визначає наступна властивість:

Type TbevelShape=(bsBox, bsFrame, bsTopLine, bsBottomLine, bsLeftLine, bsRightLine);

Property shape: TBevelShape;

Стиль компонента (втиснутий чи випуклий) визначає наступна властивість:

Type TBevelStyle=(bxLowered, bsRaised);

Property Style: TBevelStyle;

 

 

TShape

Компонент Shape тільки умовно може бути віднесений до засобів відображення графічної інформації, оскільки просто є різні геометричні фігури, відповідним чином заштриховані. Основна властивість цього компонента - Shape (форма), що може приймати значення:stRectangle прямокутник,stRoundRect прямокутник з округленими кутами,stEllipse еліпс,
stSquare квадрат, stRoundSquare квадрат із закругленими кутами, stCircle коло. Зміна цієї властивості призводить до негайного перемалювання зображення.

Інша істотна властивість компонента - Brush (кисть). Ця властивість є об'єктом типу TBrush, які мають ряд підвластивостей, зокрема: колір (Brush.Color) і стиль (Brush.Style) заливки фігури. Третє зі специфічних властивість компонента Shape - Pen (перо), що визначає стиль ліній.

 

TPanel

Компонент TPanel являє собою контейнер загального призначення. На відміну від компонента TGroupBox, він не має заголовку і тому менш зручний для функціонального групування елементів. З іншої сторони, його властивість Caption відображається в вигляді текстового рядка і може використовуватись для виведення повідомлення. Компонент має розвинуті засоби створення різних ефектів об’ємності за рахунок використаних в ньому двох країв – зовнішньої та внутрішньої.

Зовнішній вигляд панелі Panel визначається сукупністю параметрів BevelInner - стиль внутрішньої частини панелі, BevelOuter - стиль зовнішньої частини панелі, BevelWidth - ширина зовнішньої частини панелі, BorderStyle - стиль бордюру, BorderWidth - ширина бордюру.

Властивість

Property fullRepaint: Boolean – дозволяє/забороняє перемалювання панелі і всіх її дочірніх елементів при зміні її параметрів.

Для компоненти оголошено подію OnResiZe, в обробнику якої програміст може передбачити необхідну реакцію на зміну розмірів компоненти.

 

TListBox

Простий список, представлений компонентом ListBox, являє собою прямокутну область, в якій розташовуються його елементи - рядки. Якщо рядків у списку більше, ніж може поміститися у відведеній області, то автоматично з'являється смуга прокрутки.
Клас TListBox є спадкоємцем класу TWinControl і має власні властивості:
AutoComplete Boolean Визначає, чи повинен список реагувати на натискання клавіш таким чином, щоб знаходити і виділити співпадаючий елемент
BorderStyle TBorderStyle Визначає, чи ні бути рамка навколо списку. Допустимі значення: bsNone, bsSingle
Columns Integer Визначає кількість колонок, видимих ​​без горизонтальної прокрутки
Count Integer Вказує на кількість елементів списку
ItemIndex Integer Визначає порядковий номер обраного елемента, починаючи з 0. Якщо не вибрано жодного, то встановлюється в -1
Items TStrings Містить рядка списку
MultiSelect Boolean Визначає, допустимо чи ні виробляти множинний вибір
SelCount Integer Вказує на кількість вибраних елементів
Selected array of Boolean Визначає, обраний чи ні той чи інший елемент списку
Sorted Boolean Визначає, чи повинен бути список відсортований
TopIndex Integer Визначає порядковий номер елемента, який є самим верхнім у видимій частині списку

Якщо розглядати методи списку, то основна їхня частина призначена для виконання тих чи інших маніпуляцій над вибраними елементами:ClearSelection - знімає виділення з усіх обраних елементів; CopySelection - копіює вибрані елементи до іншого списку; DeleteSelected - видаляє всі виділені елементи зі списку; SelectAll - виділяє всі елементи в списку.

 

 

TComboBox

Він цікавий тим, що як би об'єднує в собі відразу 2 компонента - рядок редагування (Edit) і список (ListBox).При роботі з таким елементом інтерфейсу, званим комбінованим, або спадаючим списком, користувач може як вводити власний текст, так і вибирати один з наявних у списку варіантів. Тим самим долається таке обмеження останнього, як неможливість безпосереднього введення тексту.
Очевидно, що спадаючий список має ряд властивостей, характерних як для однорядкового редактора (SelText, SelStart, SelLength, MaxLength і CharCase), так і для звичайного списку (Sorted, Items, ItemIndex і AutoComplete). Властивості:
AutoCloseUp - якщо встановлено в істину, то розкривається частина списку буде закриватися автоматично, як тільки користувач вибере елемент;
AutoDropDown - якщо встановлено в істину, то список буде розкриватися автоматично, як тільки користувач почне вводити текст;
DropDownCount - це властивість визначає кількість рядків, яке буде відображатися в списку, що розкрився;
DroppedDown - звернувшись до цієї властивості, можна визначити, розкрито чи ні список в даний момент.
Крім всіх цих властивостей, орієнтованих безпосередньо на спадаючу частину списку, є ще одне - Style, що відповідає за вигляд і поведінку комбінованого списку. (csDropDown,csDropDownList, csSimple).

 

TGroupBox

GroupBox - "контейнер" для компонент. Використовується для об'єднання елементів в окремі області. При переміщенні GroupBox'а всі компоненти, розташовані на ньому, також переміщуються. Для розміщення компонентів в цьому контейнері слід після вибору їх на Палітри компонент клацнути по самому контейнеру (а не за формою, як завжди). У GroupBox можна задати текст заголовка (властивість Caption).

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

TCheckBox

Це незалежні перемикачі - прапорці. У VCL прапорець представлений компонентом CheckBox. Він виглядає як невеликий прямокутник з текстовим заголовком, розташованим справа. Якщо ж раптом з'явиться гостра необхідність «розгорнути» прапорець таким чином, щоб текст був ліворуч, то можна встановити властивість Alignment в taLeftJustify. Але найважливішим властивістю прапорця, мабуть, є Checked. Саме воно визначає його стан. Так, якщо прапорець включений (що візуально проявляється як наявність галочки на квадратику), то ця властивість має значення істини, а якщо вимкнений - брехні. Цією властивістю можна управляти програмно, візуально це буде проявлятися як поява або зникнення галочки.
Разом з тим, для прапорця передбачено ще один стан - заборонене. Цей стан є опціональним і за його наявність або відсутність відповідає властивість AllowGrayed. У тому випадку, якщо воно встановлено в істину, то при клацанні мишкою по такому прапорця буде відбуватися циклічна зміна між 3 станами: встановлено, знятий і заборонений. для контролю або призначення стану прапорця використовують властивість State. Воно може приймати наступні 3 значення типу TCheckBoxState:
cbUnchecked - прапорець не відзначений;
cbChecked - прапорець відзначений;
cbGrayed - прапорець недоступний.
Слід враховувати, що при зміні стану перемикача не тільки користувачем (клацанням мишкою або натисканням пробілу, коли елемент має фокус вводу), але і програмно, відбувається подія onClick.

 

 

TRadioGroup

Почнемо розгляд радіокнопок з компонента RadioGroup - панелі групи радіокнопок. Це панель, яка може містити регулярно розташовані стовпцями і рядками радіокнопки. Напис в лівому верхньому кутку панелі визначається властивістю Caption. А написи кнопок і їх кількість визначаються властивістю Items, які мають тип TStrings. Клацнувши на кнопці з трьома крапками близько цієї властивості у вікні Інспектора Об'єктів, ви потрапите в редактор списків рядків, в ньому ви можете занести написи, які хочете бачити біля кнопок, по одній в рядку. Скільки рядків ви запишете - стільки і буде кнопок.
Кнопки, що з'явилися в панелі після завдання значень Items, можна розмістити в декілька стовпців (не більше 17), задавши властивість Columns. За замовчуванням Columns = 1, тобто кнопки розміщуються один під одним. Визначити, яку з кнопок вибрав користувач, можна по властивості ItemIndex, яке показує індекс обраної кнопки. Індекси, як завжди в Delphi, починаються з 0. За замовчуванням ItemIndex = -1, що означає відсутність обраної кнопки. Якщо ви хочете, щоб у момент початку виконання програми якась із кнопок була обрана (це практично завжди необхідно), то треба встановити відповідне значення ItemIndex під час проектування. Якщо ви використовуєте радіокнопки не для введення, а для відображення даних, встановлювати значення ItemIndex можна програмно під час виконання програми.

 

TTimer

Компонент Timer дозволяє задавати в додатку інтервали часу. Таймер знаходить численні застосування: синхронізація мультиплікації, закриття якихось вікон, з якими користувач довгий час не працює, включення зберігача екрану або закриття зв'язків з віддаленим сервером за відсутності дій користувача, регулярний опитування якихось джерел інформації, завдання часу на відповідь у навчальних програмах - все це безліч завдань, в яких потрібно задавати інтервали часу, вирішується за допомогою таймера.
Таймер - невізуальних компонент, який може розміщуватися в будь-якому місці форми. Він має дві властивості, що дозволяють їм управляти: Interval - інтервал часу в мілісекундах і Enabled - доступність. Властивість Interval задає період спрацювання таймера. Через заданий інтервал часу після попереднього спрацьовування, або після програмної установки властивості Interval, або після запуску програми, якщо значення Interval встановлено під час проектування, таймер спрацьовує, викликаючи подія OnTimer. У обробнику цієї події записуються необхідні операції.
Якщо задати Interval = 0 або Enabled = false, то таймер перестає працювати. Щоб запустити відлік часу треба або задати Enabled = true, якщо встановлено позитивне значення Interval, або задати позитивне значення Interval, якщо Enabled = true.

 

TMainMenu

Основна властивість компонента - Items. Його заповнення проводиться за допомогою Конструктора Меню, що викликається подвійним клацанням на компоненті MainMenu або натисканням кнопки з трьома крапками поруч із властивістю Items у вікні Інспектора Об'єктів.
При роботі в конструкторі меню нові розділи можна вводити, поміщаючи курсор в рамку з точок, що позначає місце розташування нового розділу.
Властивість Caption позначає напис розділу. Заповнення цієї властивості підпорядковується тим же правилам, що і заповнення аналогічного властивості в кнопках, включаючи використання символу амперсанта для позначення клавіш швидкого доступу. Якщо ви як значення Caption чергового розділу введете символ мінус «-», то замість розділу в меню з'явиться роздільник. Властивість Name задає ім'я об'єкта, відповідного розділу меню. Властивість Shortcut визначає клавіші швидкого доступу до розділу меню - «гарячі» клавіші, за допомогою яких користувач, навіть не заходячи в меню, може в будь-який момент ініціювати виконання процедури, пов'язаної з даним розділом. Щоб визначити клавіші швидкого доступу, треба відкрити випадаючий список властивості Shortcut у вікні Інспектора Об'єктів і вибрати з нього потрібну комбінацію клавіш. Ця комбінація з'явиться в рядку розділу меню. Властивість Default визначає, чи є даний розділ розділом за замовчуванням свого підменю, тобто розділом, виконуваних при подвійному натисканні користувача на батьківському розділі.
Властивість Break використовується в довгих меню, щоб розбити список розділів на декілька стовпців. Можливі значення Break: mbNone - відсутність розбивки меню (це значення прийнято за замовчуванням), mbBarBreak і mbBreak - в меню вводиться новий стовпець розділів, відділений від попереднього смугою (mbBarBreak) або пропусками (mbBreak). Властивість Checked, встановлене в true, вказує, що в розділі меню буде відображатися маркер прапорця, який показує, що даний розділ обраний

TPopupMenu

Контекстне меню прив'язане до конкретних компонентів. Воно спливає, якщо в час, коли даний компонент у фокусі, користувач клацне правою кнопкою миші. Зазвичай в контекстне меню включають ті команди головного меню, які в першу чергу можуть знадобитися при роботі з даними компонентом. Контекстного меню відповідає компонент PopupMenu. Оскільки в додатку може бути кілька контекстних меню, то і компонентів PopupMenu може бути декілька. Формування контекстного меню спливаючого проводиться за допомогою Конструктора Меню, що викликається подвійним клацанням на PopupMenu. Звернемо тільки увагу на можливість спрощення цієї роботи. Оскільки розділи контекстного меню зазвичай повторюють деякі розділи вже сформованого головного меню, то можна обійтися копіюванням відповідних розділів. Для цього, увійшовши в Конструктор Меню з компонента PopupMenu, клацніть правою кнопкою миші і з меню виберіть "Select Menu". Вам буде запропоновано діалогове вікно, в якому ви можете перейти в головне меню. У ньому ви можете виділити потрібний вам розділ або. Потім виконайте копіювання їх в буфер обміну, натиснувши клавіші Ctrl-C. Після цього знову клацніть правою кнопкою миші, виберіть команду "Select Menu" і поверніться в контекстне меню. Вкажіть курсором місце, в яке хочете вставити скопійовані розділи, і натисніть клавіші читання з буфера обміну - Ctrl-V. Розділи меню разом з усіма їхніми властивостями будуть скопійовані в створюване вами контекстне меню.
В іншому робота з PopupMenu не відрізняється від роботи з MainMenu. Тільки не виникає питань об'єднання меню різних форм: контекстні меню не об'єднуються.

 

TMenuItem

Цей компонент, який є основою системи меню в Delphi, ви не зустрінете в Палітрі компонентів - він входить до складу наявних там компонентів TMainMenu і TPopupMenu.
Текст, що міститься в пункті меню, визначається властивістю:
(Pb) property Caption: string;
Крім основної, він несе ще дві додаткові навантаження. По-перше, якщо в рядку є амперсанд ('&'), то він разом з наступним за ним символом є акселератором. Наприклад, для рядка '& File' натискання <Alt> + <F> означає вибір цього пункту.
Способи вибору пункту меню? клацання мишею, натискання <Еntег> на сфальцьованому пункті, натиснення акселератора або гарячої комбінації, нарешті, виклик методу
procedure Click;
призводять до виникнення події:
(Pb) property OnClick: TNotifyEvent;
Компонент TMenuItem може розрізняти тільки це подія, з якою повинні бути пов'язані дії, заради яких ви ввели цей пункт в меню. Сприймають цю подію ті пункти меню, які в даний момент активні, що означає встановлене в True властивість:
(Pb) property Enabled: Boolean;
Часто пункти меню використовуються для перемикання будь-яких режимів роботи програми. При цьому вони можуть бути відзначені "галочкою" перед початком тексту. Властивість
(Pb) property Checked: Boolean;
відповідає за те, чи є цей пункт зазначеним.

 

TToolBar, TToolButton

Якщо ви помістите компонент ToolBar на форму, то за замовчуванням він розташується вгорі, оскільки його властивість Align за замовчуванням дорівнює alTop. Якщо ви хочете, щоб панель розташовувалася інакше, встановіть Align = alNone, після чого можете надати панелі будь-яку форму і розташувати її в будь-якому місці.
Занесення компонентів на панель ToolBar можна, в принципі, здійснювати звичайним способом - перенесенням їх з палітри компонентів. Але для занесення кнопок є й простіший варіант. Клацніть на ToolBar правою кнопкою миші і виберіть з меню сплив команду "New Button". На формі з'явиться чергова кнопка - об'єкт типу TToolButton. Це не зовсім звичайна кнопка, так як надалі ви побачите, що зовні вона може не бути схожою на кнопку. Її вигляд і поведінка визначається її властивістю Style, яке за замовчуванням дорівнює tbsButton - кнопка. Інші можливі стилі ми розглянемо пізніше. А як кнопка цей об'єкт дуже схожий на кнопку SpeedButton. Тільки зображення на кнопці визначається не властивістю Glyph, а властивістю ImageIndex. Воно визначає індекс зображення, що зберігається в зовнішньому компоненті ImageList. Вказівка ​​на цей компонент може задаватися такими властивостями компонента ToolBar, як Images, DisabledImages (вказує на список зображень кнопок у недоступному стані) і HotImages (вказує на список зображень кнопок у моменти, коли над ними переміщається курсор миші).

TImageList

Компонент ImageList являє собою набір зображень однакових розмірів, на які можна посилатися за індексами, що починається з 0. Цей компонент дозволяє організувати ефективне і економне управління безліччю піктограм і бітових матриць. Він може включати в себе монохромні бітові матриці, що містять маски для відображення прозорості мальованої зображень. Зображення в компонент TImageList можуть бути завантажені в процесі проектування з допомогою редактора списків зображень. Вікно редактора, викликається подвійним клацанням на компоненті TImageList або клацанням правої кнопки миші і вибором команди контекстного меню "ImageList Editor". У вікні редактора списків зображень ви можете додати в списки зображення, користуючись кнопкою "Add", видалити зображення зі списку кнопкою "Delete", очистити весь список кнопкою "Clear". Тільки врахуйте, що розмір всіх зображень у списку повинен бути однаковим. Кожне завантажене в список зображення отримує індекс. Саме на ці індекси згодом ви можете посилатися у відповідних властивостях розділів меню, списків, кнопок і т.д., коли вам треба завантажити в них те чи інше зображення.
У редакторі списків зображень ви можете, виділивши те чи інше зображення, встановити його властивості: "Transparent Color" і "Fill Color". Властивість "Transparent Color" визначає колір, який використовується в масці для прозорого малювання зображення. Властивість "Fill Color" визначає колір, використовуваний для заповнення порожнього простору при переміщенні та центруванні зображення.
Група радіокнопок "Options" визначає спосіб розміщення зображення бітової матриці з розмірами.
Тепер розглянемо основні властивості TImageList:
Height Integer Висота зображень в списку
Width Integer Ширина зображень в списку
AllocBy Integer Визначає кількість зображень, на яке збільшується список для додавання нових зображень
Count Integer Визначає число зображень у списку. Властивість тільки для читання

 

TActionList



Поделиться:


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

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