
- •Що таке файл?
- •Коли і навіщо треба використати файли?
- •Як описати файлові змінні?
- •Як встановити зв'язок між файловою змінною і самим фалом?
- •Як створити, відкрити, зберегти і закрити файл?
- •Як використати або змінити вміст файлу?
- •Малюнок 1. Палітра візуальних компонент Delphi містить закладки сторінок, що організують компоненти у категорії.
- •Стандартні компоненти
- •40 1. Загальна характеристика
- •2. Управляючі кнопки Button і BitBtn
- •3. Кнопка з фіксацією SpcedButton
- •5. Індикатори CheckBox і CheckListBox
- •6. Повзунки і смуги прокрутки — компоненти TrackBar і ScrollBar
- •3.7.8 Таймер — компонент Timer
- •Інструментальна панель ToolBar.
- •PageScroller - прокручування сторінок
- •Список зображень - компонентів ImageList (панель Additional).
- •Смуга стану StatusBar.
3.7.8 Таймер — компонент Timer
Компонент Timer дозволяє задавати в додатку інтервали часу. Таймер — невізуальний компонент, який може розміщуватися в будь-якому місці форми. Він має дві властивості, дозволяючи їм управляти: Interval — інтервал часу в мілі секундах і Enabled — доступність. Властивість Interval задає період спрацьовування таймера. Через заданий інтервал часу після попереднього спрацьовування, або після програмної установки властивості Interval, або після запуску додатку, якщо значення Interval встановлене під час проектування, таймер спрацьовує, викликаючи подію OnTimer. У обробнику цієї події записуються необхідні операції. Якщо задати Interval = 0 або Enabled = false, то таймер перестає працювати. Щоб запустити відлік часу треба або задати Enabled = true, якщо встановлено позитивне значення Interval, або задати позитивне значення Interval, якщо Enabled = false. Наприклад, якщо вимагається, щоб через 5 секунд після запуску додатку закрилася форма — заставка, що відображає логотип додатку, на ній треба розмістити таймер, задати в ньому інтервал Interval = 5000, а в обробник події OnTimer вставити оператор Close, що закриває вікно форми. Якщо необхідно в деякій процедурі запустити таймер, який відлічив заданий інтервал, наприклад, 5 секунд, після чого треба виконати деякі операції і відключити таймер, це можна зробити таким чином. При проектуванні таймер робиться доступним (Enabled = true), але властивість Interval задається рівним 0. Таймер не працюватиме, поки в мить, коли потрібно запустити таймер, не виконається оператор Timer->Interval = 5000;
Через 5 секунд після цього наступить подія OnTimer. У його обробнику треба задати оператор Timerl->Interval = 0; який відключить таймер, після чого можна виконувати необхідні операції.
41-
42
Компонент |
Сторінка |
Опис |
Label |
Standard |
Відображення тексту (найчастіше це текст, що не змінюється користувачем під час роботи -напис) |
StaticText (мітка з бордюром) |
Additional |
На додаток до Label забезпечує можливість завдання стилю бордюру |
Panel |
Standard |
Є контейнером для групування елементів управління, але може бути використаний і для відображення текстової інформації |
Edit |
Standard |
Відображення, введення і редагування однорядкових текстів |
MaskEdit (вікно маскованого редагування) |
Additional |
Використовується для форматування даних або для введення символів відповідно до шаблону |
Memo |
Standard |
Відображення, введення та редагування багаторядкових текстів |
RichEdit (багаторядкове вікно редагування у форматі rtf) |
Win32 |
Вікно редагування тексту у збагаченому форматі rtf, що дозволяє обирати шрифт, колір, здійснювати пошук у тексті та ін. |
ListBox (вікно списку) |
Standard |
Відображення стандартного вікна списку Windows, що дозволяє користувачу обирати з нього пункти (властивість Items) |
CheckListBox (список з індикаторами) |
Additional |
Комбінація властивостей списку ListBox іCheckBox |
ComboBox (редагований список) |
Standard |
Поєднує функції ListBox та Edit. Користувач може або ввести текст, або обрати його зі списку (властивість Items) |
StringGrid (таблиця ) |
Additional |
Відображення текстової інформації у таблиці рядків і стовпців з можливістю переміщатися по комірках і здійснювати вибір (властивість Cells) |
43 Компоненти ListBox, ComboBox відображають списки рядків. Вони відрізняються тим, що ListBox тільки відображує дані і дозволяє користувачу вибрати із них ті, які йому треба, а ComboBox дозволяє також редагувати дані.
ListBox відображує список у розгорнутому вигляді і автоматично додає полоси прокрутки при необхідності. ComboBox дозволяє відображати список як у розгорнутому вигляді, так і у вигляді випадаючого меню.
У компоненті ListBox є властивість MultiSelect, що дозволяє користувачу багаторазовий вибір у списку, якщо його значення дорівнює True. Індекс вибраного рядка можна дізнатись із властивості ItemIndex, до якої є доступ тільки під час її виконання. Якщо ні один рядок не вибрано, то ItemIndex = -1. Якщо використовується багаторазовий вибір, то ItemIndex відповідає тому елементу списка, який знаходиться у фокусі.
44
45 Кнопки є елементами управління і служать для видачі команд на виконання певних функціональних дій . Існує кілька видів кнопок в Delphi :
- Стандартна кнопка Button ;
- Кнопка BitBtn з малюнком ;
- Кнопка SpeedButton швидкого доступу .
Кнопка Button має на поверхні напис (призначення кнопки) - це властивість Caption. У написах кнопок можна передбачати використання клавіш прискореного доступу , виділяючи для цього один із символів напису. Перед символом , який повинен відповідати клавіші прискореного доступу , ставиться символ амперсанта « & ». Цей символ не з'являється в написи , а наступний за ним символ виявляється підкресленим . Тоді користувач може замість клацання на кнопці натиснути в будь-який момент клавішу Alt спільно з клавішею виділеного символу.Основним для кнопки подією є подія OnClick , що виникає при її натисканні .Властивість Cancel , якщо його встановити в true , визначає , що натискання користувачем клавіші Esc буде еквівалентно натисканню на дану кнопку . Ця властивість доцільно ставити рівним true для кнопок « Скасувати » в різних діалогових вікнах , щоб можна було вийти з діалогу , клікнувши на цю кнопку або натиснувши клавішу Esc.Властивість Default , якщо його встановити в true , визначає , що натискання користувачем клавіші введення Enter буде еквівалентно натисканню на дану кнопку , навіть якщо дана кнопка в цей момент не перебуває у фокусі . Правда , якщо в момент натискання Enter у фокусі знаходиться інша кнопка , то все-таки спрацює саме кнопка у фокусі Кнопка з малюнком відрізняється від стандартної кнопки тим , що крім заголовка на кнопці може відобразитися растрове зображення .Властивість Glyph визначає растровий малюнок кнопки ( формат bmp ) . За замовчуванням кнопка не містить малюнок. Delphi поставляється велика кількість зображень для кнопок. Вони розташовані в каталозі ImagesButtons , а сам каталог Images розташований в каталозі program filescommon filesborland shared .Розташування зображення і написи на кнопці визначається властивостями Margin , Layout і Spacing . Якщо властивість Margin одно -1 (значення за замовчуванням) , то зображення і напис розміщуються в центрі кнопки. При цьому положення зображення але відношенню до напису визначається властивістю Layout , яке може приймати значення: blGlyphLeft (ліворуч , це значення прийнято за замовчуванням) , blGlyphRight (праворуч) , blGlyphТор (угорі) , blGlyphBottom ( внизу). Якщо ж Margin > 0 , то залежно від значення Layout образ і напис зміщуються до тієї чи іншої кромці кнопки , відступаючи від неї на число пікселів , задане значенням Margin .Властивість Spacing задає число пікселів , що розділяють образ і напис на поверхні кнопки. За замовчуванням Spacing = 4 . Якщо задати Spacing = 0 , образ і напис будуть розміщені впритул один до одного. Якщо задати Spacing = -1 , то текст з'явиться посередині між зображенням і краєм кнопки.Ще одна властивість BitBtn - властивість Kind визначає тип кнопки. За замовчуванням значення цієї властивості одно bkCustom - замовна . Але можна встановити і безліч інших визначених типів : bkOK , bkCancel , bkHelp , bkYes , bkNo , bkClose , bkAbort , bkRetry , bkIgnore , bkAll . У цих типах вже зроблені відповідні написи , введені піктограми , задані ще деякі властивості .Кнопки SpeedButton мають можливість відображення піктограм і можуть використовуватися як звичайні керуючі кнопки. Зазвичай вони використовуються як швидких кнопок , які дублюють різні команди меню , і в інструментальних панелях , в яких потрібно фіксація натиснутого стану .У кнопок SpeedButton , як і у інших кнопок , є властивість Caption - напис , але в цих кнопках воно зазвичай залишається порожнім, оскільки замість напису використовується піктограма .Зображення на кнопці задається властивістю Glyph . І точно так само властивість NumGlyphs визначає число використовуваних піктограм , властивості Layout і Margin визначають розташування зображення , а властивість Spacing - відстань між зображенням і написом.Кнопка може використовуватися як перемикач . Тому , крім звичайного і натиснутого станів , вона має третє стан - втоплені , або вбрання (включене ) . Включена кнопка чи ні , визначає властивість Down ( значення true - кнопка вибрана ) .Всі швидкі кнопки об'єднуються в групи. Належність кнопки до групи визначає властивість GroupIndex . За замовчуванням властивість має нульове значення , і кнопка не відноситься до групи .Якщо кнопка не входить до групи , то вона не може працювати як перемикач і знаходиться в обраному стані. Якщо є кілька кнопок , що мають однакове ненульове значення GroupIndex , то вони утворюють групу взаємопов'язаних кнопок з яких натиснутою може бути тільки одна. Якщо одна кнопка знаходиться в натиснутому стані і користувач клацає на інший , то перша кнопка звільняється , а друга фіксується в натиснутому стані. Поведінка натиснутою кнопки при натисканні на неї залежить від значення властивості AllowAllUp . Якщо воно дорівнює true , то кнопка звільниться , оскільки в цьому випадку можливе стан , коли всі кнопки групи відтиснуті . Якщо ж AllowAllUp одно false , то клацання на кнопці не призведе до зміни виду кнопки.Якщо Grouplndex > 0 і AllowAllUp (дозвіл віджатого стану всіх кнопок групи) = true , то кнопка при натисканні користувача на ній занурюється і залишається в натиснутому стані. При повторному клацанні користувача на кнопці вона звільняється і переходить в нормальний стан.
46Компоненти Memo і RichEdit є вікнами редагування багаторядкового тексту . Вони також , як і вікно Edit забезпечені багатьма функціями , властивими більшості редакторів, наприклад , «гарячі » клавіші копіювання , вставка , вирізання виділеного об'єкта.У компоненті Memo формат (шрифт , вирівнювання) однаковий для всього тексту і визначається його властивістю Font .Компонент Richedit працює з текстом у форматі RTF. Атрибути фрагмента тексту можна задати властивістю SetAttributesОсновна властивість вікон Memo і Richedit - Lines , що містить текст вікна у вигляді списку рядків і має тип Tstrings . Під час виконання програми ви можете заносити текст у вікно редагування за допомогою методів властивості Lines типу Tstrings .Весь текст міститься в у властивості Text. Доступ до окремому рядку тексту отримують за допомогою властивості String [ Index: Integer ] . Індекси , як і скрізь в Delphi починаються з 0.Memo1.Lines.String [ 0 ] - текст першого рядка . Однак , якщо використовується властивість Word- Wrap = true , то індекси рядків будуть змінюватися в залежності від розміру вікна редагування. Властивість тільки для читання Count вказує число рядків в тексті.Для очищення тексту у вікні треба виконати процедуру Clear . Цей метод відноситься до самого вікна , а не до його властивості Lines.Для занесення нового рядка в кінець тексту можна скористатися його методами Add і Append властивості Lines. Для завантаження тексту з файлу застосовують метод LoadFromFile .
47Компонент Delphi StringGrid ( Таблиця рядків ) розташований на сторінці Additional Палітри компонентів. Використання електронних таблиць користувачами комп'ютерів стало звичним і досить зручним засобом у роботі з даними. За допомогою компонента StringGrid створюються таблиці , в осередках яких міститися довільні текстові дані . Він є прямим нащадком компонента DrawGrid , багато властивостей і методів успадковано від нього.Основна властивість компонента StringGrid - це двовимірний масив Cells [ ACol , ARow : integer ] типу String за допомогою нього можна звертатися до вмісту осередків і змінювати їх зміст. ACol встановлює номер стовпчика , ARow - задає рядок у таблиці . Цією властивістю можна скористатися тільки під час виконання програми , воно доступне для запису і читання .Нумерація рядків і стовпців йде з нуля. Властивість ColCount задає число стовпців , RowCount - число рядків.Компонент StringGrid за замовчуванням зліва і зверху має заголовні області , вони мають сірий колір. Кількість подібних рядків і стовпців встановлюється у властивостях FixedCols і FixedRow . Якщо ж для таблиці не потрібні заголовні області , то ці властивості повинні бути рівні нулю.Для закріплення матеріалу давайте створимо додаток , яке покаже нам таблицю множення. На форму шириною ( Width) рівний 365 і висотою ( Height) 389 помістимо компонент StringGrid .
48Для введення масиву зручно використовувати компонент StringGrid. Значок компонента StringGrid знаходиться на вкладці Additional (рис. 5.2).Компонент StringGrid являє собою таблицю, осередки якої містять рядки символів. У табл. 5.1 перераховані деякі властивості компоненту StringGrid.
Свойство |
Определяет |
Name |
Имя компонента. Используется в программе для доступа к свойствам компонента |
ColCount |
Количество колонок таблицы |
RowCount |
Количество строк таблицы |
Cells |
Соответствующий таблице двумерный массив. Ячейка таблицы, находящаяся на пересечении столбца номер col и строки номер row определяется элементом cells [col, row] |
FixedCols |
Количество зафиксированных слева колонок таблицы. Зафиксированные колонки выделяются цветом и при горизонтальной прокрутке таблицы остаются на месте |
FixedRows |
Количество зафиксированных сверху строк таблицы. Зафиксированные строки выделяются цветом и при вертикальной прокрутке таблицы остаются на месте |
Options . goEditing |
Признак допустимости редактирования содержимого ячеек таблицы. True — редактирование разрешено, False — запрещено |
Options . goTab |
Разрешает (True) или запрещает (False) использование клавиши <Таb> для перемещения курсора в следующую ячейку таблицы |
Options . GoAlways-ShowEditor |
Признак нахождения компонента в режиме редактирования. Если значение свойства False, то для того, чтобы в ячейке появился курсор, надо начать набирать текст, нажать клавишу <F2> или сделать щелчок мышью |
DefaultColWidth |
Ширину колонок таблицы |
DefaultRowHeight |
Высоту строк таблицы |
GridLineWi-dth |
Ширину линий, ограничивающих ячейки таблицы |
Left |
Расстояние от левой границы поля таблицы до левой границы формы |
Top |
Расстояние от верхней границы поля таблицы до верхней границы формы |
Height |
Высоту поля таблицы |
Width |
Ширину поля таблицы |
Font |
Шрифт, используемый для отображения содержимого ячеек таблицы |
ParentFont |
Признак наследования характеристик шрифта формы |
49-
50 Компонент Delphi MainMenu (головне меню ) розташовується на сторінці Standard Палітри інструментів. Майже у всіх сучасних Windows додатках є меню , як необхідний елемент інтерфейсу . Меню представляє з себе список з пунктів об'єднаних за функціональною ознакою . Пункт меню позначає або вкладене підменю , або конкретну команду. При виборі пункту меню ми виконуємо відповідну цьому пункту команду або розкриваємо підменю.Він представляє з себе не візуальний компонент , отже розташовувати його можна на формі де завгодно. Користувач побачить результат роботи компонента - меню сгенерированное ім.Вибір у формі mainmenuОбично в додатку є одне головне меню і його ім'я автоматично задається у властивості форми Menu Інспектора об'єктів . Але якщо необхідно можна розмістити на формі і декілька компонентів головного меню з різними наборами пунктів, які будуть відповідати різним режимам роботи програми . Тоді при проектуванні властивості Menu форми присвоюється посилання на одне з цих меню. А в процесі роботи , коли це необхідно це властивість можна змінювати , змінюючи відповідно складу головного меню програми.Основна властивість головного меню - це Items . Його заповнення відбувається в редакторі меню , який викликається подвійним клацанням на компоненті або на крапці навпроти відповідного пункту в інспектор об'єктів. Для додавання нового пункту меню можна скористатися клавішею Insert або заповнити властивість Caption у останньої нижньої комірки. Видалити непотрібний пункт меню можна клавішею Delete. Компонент Delphi PopupMenu ( Контекстне меню ) розташовується на сторінці Standard Палітри компонентів. Досить часто в Windows додатку при клацанні правої кнопки миші з'являється меню , його можна назвати контекстним , спливаючим або локальним. Зазвичай воно містить елементи управління , що впливають на об'єкт для якого викликане таке меню.приклад з компонентом popupmenuPopupMenu також як і MainMenu є не візуальним компонентом. Відмінною особливостей цих двох типів меню полягає в тому , що в контекстному меню всі пункти розташовуються в одному стовпці , тобто не може бути двох і більше розділів верхнього рівня. Кожен компонент може мати своє спливаюче меню.Для закріплення матеріалу створіть спливаюче меню для компонента Memo як на малюнку , напишіть команди які ви знаєте.установка значення popupmenuДля того щоб при клацанні правою кнопкою миші на компоненті з'явилося контекстне меню , потрібно його властивості PopupMenu в інспектор об'єктів задати значення необхідного контекстного меню.Підсумок: нами було розглянуто компонент Delphi PopupMenu ( Контекстне меню) його застосування у додатку.
51-
52 Взагалі ж для створення меню в Delphi IDE передбачений спеціальний редактор, що дозволяє наочно створювати і редагувати як головне меню , так і контекстні . Для того , щоб ним скористатися , досить помістити потрібний компонент ( MainMenu або PopupMenu ) на форму , після чого скористатися його власним контекстним меню. Першим пунктом буде Menu Designer , і якраз він і викликає потрібний редактор , званий конструктором меню ( рис. 12.7 ) .Подібно звичайним візуальним компонентам начебто кнопки або поля редагування , компоненти , подібні MainMenu , так само можуть бути налаштовані на «дія за замовчуванням» , що відбувається при подвійному натисканні мишки. Для розглянутих компонентів такою дією якраз буде виклик конструктора меню.Конструктор меню Дельфі з розкритим власним контекстним меню
За допомогою цього конструктора можна створювати меню , причому його зовнішній вигляд буде практично відповідати тому , що вийде насправді . Якщо в процесі роботи натиснути правою кнопкою мишки по створеному пункту меню, то відкриється контекстне меню самого редактора , за допомогою якого цей пункт можна видалити ( delete ), або додати ( Insert ) слідом за ним новий , або ж зробити даний пункт батьківським для власного підміню ( Create Submenu ) . При цьому властивості вибраного в даний момент пункту меню , видно і доступно для редагування в інспекторові об'єкта.Для того щоб зв'язати елемент меню за виконуваної ним функцією , використовується обробник події onClick . Фактично , це єдина подія, що заслуговує увагу . Причому воно відбувається незалежно від того , що саме зробив користувач для вибору даного пункту : це може бути і клацання мишкою , і вибір пункту за допомогою навігації з клавіатури з натисканням пробілу , або ж звернення до нього за допомогою заданої комбінації гарячих клавіш.Що стосується власне комбінацій гарячих клавіш , які можна призначити меню , то вони перераховані у вікні інспектора об'єкта , коли ви розкриваєте список навпроти властивості ShortCut . При їх призначенні слід стежити за тим , щоб вони не повторювалися для різних пунктів.Окремо слід сказати про властивість Action (дія) . Встановлювати це властивість можна тільки в тому випадку , якщо на форму вже поміщений компонент ActionList , що представляє собою упорядкований набір дій. У такому випадку перелік доступних варіантів визначається виключно їм . Крім того , при цьому ряд інших властивостей задається автоматично аналогічними властивостями вибраної дії .
53 Компонент Delphi MainMenu (головне меню ) розташовується на сторінці Standard Палітри інструментів. Майже у всіх сучасних Windows додатках є меню , як необхідний елемент інтерфейсу . Меню представляє з себе список з пунктів об'єднаних за функціональною ознакою . Пункт меню позначає або вкладене підменю , або конкретну команду. При виборі пункту меню ми виконуємо відповідну цьому пункту команду або розкриваємо підменю.Він представляє з себе не візуальний компонент , отже розташовувати його можна на формі де завгодно. Користувач побачить результат роботи компонента - меню сгенерированное ім.Вибір у формі mainmenuОбично в додатку є одне головне меню і його ім'я автоматично задається у властивості форми Menu Інспектора об'єктів . Але якщо необхідно можна розмістити на формі і декілька компонентів головного меню з різними наборами пунктів, які будуть відповідати різним режимам роботи програми . Тоді при проектуванні властивості Menu форми присвоюється посилання на одне з цих меню. А в процесі роботи , коли це необхідно це властивість можна змінювати , змінюючи відповідно складу головного меню програми.Основна властивість головного меню - це Items . Його заповнення відбувається в редакторі меню , який викликається подвійним клацанням на компоненті або на крапці навпроти відповідного пункту в інспектор об'єктів. Для додавання нового пункту меню можна скористатися клавішею Insert або заповнити властивість Caption у останньої нижньої комірки. Видалити непотрібний пункт меню можна клавішею Delete. Компонент Delphi PopupMenu ( Контекстне меню ) розташовується на сторінці Standard Палітри компонентів. Досить часто в Windows додатку при клацанні правої кнопки миші з'являється меню , його можна назвати контекстним , спливаючим або локальним. Зазвичай воно містить елементи управління , що впливають на об'єкт для якого викликане таке меню.приклад з компонентом popupmenuPopupMenu також як і MainMenu є не візуальним компонентом. Відмінною особливостей цих двох типів меню полягає в тому , що в контекстному меню всі пункти розташовуються в одному стовпці , тобто не може бути двох і більше розділів верхнього рівня. Кожен компонент може мати своє спливаюче меню.Для закріплення матеріалу створіть спливаюче меню для компонента Memo як на малюнку , напишіть команди які ви знаєте.установка значення popupmenuДля того щоб при клацанні правою кнопкою миші на компоненті з'явилося контекстне меню , потрібно його властивості PopupMenu в інспектор об'єктів задати значення необхідного контекстного меню.Підсумок: нами було розглянуто компонент Delphi PopupMenu ( Контекстне меню) його застосування у додатку.
54 Панелі є контейнерами, що слугують для об'єднання інших елементів управління. Вони можуть виконувати як декоративну функцію, так і функції управління, організувати спільну роботу своїх дочірніх компонентів (наприклад, групи радіокнопок). Перелік панелей і обслуговуючих їх компонентів:
Компонент |
Сторінка |
Опис |
GroupBox (групове вікно) |
Standart |
Є контейнером, що об'єднує групу пов'язаних органів управління, таких, як радіо кнопки, контрольні індикатори (CheckBox) |
Panel(панель) |
Standart |
Є контейнером для групування органів управління і менших контейнерів. Панель можна використовувати також для побудови смуг стану, інструментальних панелей, палітр інструментів |
Bevel (рамка) |
Additional |
Використовується для малювання прямокутної рамки, зображеної як виступаюча чи утоплена |
ScrollBox (вікно з прокручуванням) |
Additional |
Використовується для створення зон відображення із прокручуванням |
Splitter (роздільник панелей) |
Additional |
Використовується для створення в додатку панелей із змінюваними користувачем розмірами |
ControllBar(інструментальна панель) |
Additional |
Використовується для розміщення компонентів інструментальної панелі |
TabControl (сторінка з закладкою) |
Win32 |
Дозволяє додавати закладки, що може обирати користувач |
PageControll(багатосторінкове вікно) |
Win32 |
Дозволяє створювати сторінки, керовані закладками, для економії місця на робочому столі |
StatusBar (смуга стану) |
Win32 |
Смуга стану додатка, при необхідності на кількох панелях |
ToolBar(інструментальна панель) |
Win32 |
Інструментальна панель для швидкого доступу до часто використовуваним функцій додатка |
CoolBar(інструментальна панель, що перебудовується,) |
Win32 |
Контейнер інструментальної панелі, розміри якої можуть змінюватися користувачем |
PageScroller(прокручування сторінок) |
Win32 |
Забезпечує прокручування великих вікон, наприклад, інструментальних панелей |
TabSet (блокнот з закладками) |
Win3.1 |
Використовується для створення блокнота з закладками |
TabbledNoteBook(багатосторінкова форма) |
Win3.1 |
Використовується для створення багатосторінкових форм із закладками. |
NoteBoo(пачка сторінок) |
Win3.1 |
Використовується для створення пачки сторінок, може застосовуватися разом з TabSet |
Fram(фрейм) |
Standart |
Використовується як проектований у вигляді окремого вікна контейнер будь-яких компонентів. Має можливість спадкування, може включатися в депозитарій |