Оголошення власного класу винятків, створення винятку.



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


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



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


ЗНАЕТЕ ЛИ ВЫ?

Оголошення власного класу винятків, створення винятку.



Програміст може створити власний клас обробки виключень, оголосивши його нащадком Exception або будь-якого іншого стандартного класу (цим іншим найчастіше буває клас EAbort). Оголошення нестандартного класу має сенс тільки тоді, коли вам необхідно навчити програму розпізнавати некоректні набори даних і відповідним чином на них реагувати.
Нехай, наприклад, у програмі використовується цикл введення цілочисельних значень з текстового файлу, їх перевірки та перетворення. Перевірка полягає у простому контролі невід’ємності чергового числа після введення і його додатності після перетворення. Перед перевіркою необхідно отримати рядок з файлу (тут може виникнути помилка EinOutError) і перетворити її в цілу величину (тут можлива помилка EConvertError); після перевірки здійснюється обробка величини, в процесі якої може виникнути помилка EIntError.
Створимо новий клас EIntCheckError і будемо порушувати виключення цього класу при виявленні помилки в даних:
type EIntCheckError = class(EAbort) end;

var

F: TextFile; S: String; k: Integer;

begin

try

Reset(F); // Тут можлива помилка EinOutError

// Цикл ввода-контролю-перетворення

while not EOF(F) do begin

ReadLn(F,S);// тут можлива помилка EinOutError

// Перетворимо символи в число

k := StrToInt(S); // Можлива помилка EConvertError

if k < 0 then

raise EIntCheckError.Create(‘від’ємне число');

if k <= 0 then

raise EIntCheckError.Create('He додатнє число');

end; except

on E: EIntCheckError do ShowMessage(E.Message) ;

on EInOutError do

ShowMessage('Некорректна файлова операція');

on EConvertError do

ShowMessage('Помилка в записі числа');

on EIntError do ShowMessage('Помилка перетворення');

end; end;

Компоненти як засіб програмування в середовищі Delphi.

Компоненти – це об'єкти в традиційному для ООП розумінні, вони не обов'язково мають бути візуалізованими, але, як правило, мають якісь властивості (саме властивості налаштовуються в Інспекторі об'єктів).

Важлива особливість проектування програм у середовищі Delphi полягає у запровадженні підходу, який отримав назву Two-Way Tools і який характеризується синхронізацією візуального проектування (на основі дизайнера форм Form Designer та інспектора об'єктів Object Inspector) із класичним ("кодовим") програмуванням, коли код (текст) програми "набирається" у вікні традиційного текстового редактора Editor Window).

Традиційні задачі щодо розробки програмного інтерфейсу в середовищі Delphi розв'язуються так: на форму (у програмному проекті вона може бути не обов'язково одна) "переносяться" із палітри компонент потрібні управляючі елементи (кнопки різного призначення, різноманітні списки, рядки редагування тощо) та з використанням інспектора об'єктів проводиться їх налаштування.

 

Середовище програмування Delphi.

Нижче перераховані основні складові частини Delphi:

Дизайнер Форм (Form Designer)

Вікно Редактора Вихідного Тексту (Editor Window)

Палітра Компонент (Component Palette)

Інспектор Об'єктів (Object Inspector)

Довідник (On-line help)

Є, звичайно, й інші важливі складові Delphi, на зразок лінійки інструментів, системного меню і багато інших, потрібні Вам для точного налаштування програми і середовища програмування. Програмісти на Delphi проводять більшість часу перемикаючись між Дизайнером Форм і Вікном Редактора Вихідного Тексту (яке для стислості називають Редактор).Дизайнер Форм спочатку складається з одного порожнього вікна, яке Ви заповнюєте всілякими об'єктами, обраними на Палітрі Компонент. Незважаючи на всю важливість Дизайнера Форм, місцем, де програмісти проводять основний час є Редактор. Логіка є рушійною силою програми і Редактор - те місце, де Ви її "кодуєте".

Палітра Компонент (див. рис.3) дозволяє Вам вибрати потрібні об'єкти для розміщення їх на Дизайнері Форм. Для використання Палітри Компонент просто перший раз клацніть мишою на один з об'єктів і потім другий раз - на Дизайнері Форм.

 

Складові частини проекту. Етапи створення віконної аплікації.

Коли ви тільки створюєте новий проект в Delphi, ви відразу ж отримуєте не тільки файл проекту, а й готове до подальшого використання вікно програми. У термінології Delphi це вікно називається формою (form) і являє собою основу, на яку поміщаються всі інші компоненти програми. Ця форма буде називатися Form1, оскільки автоматичне найменування компонент в Delphi проводиться за принципом «назва компонента + порядковий номер». Таким чином, для першого за рахунком компоненту типу Form ми отримаємо назву Form1. Крім того, для компонент, що мають текстові підписи, включаючи ту ж форму, це ж назва використовується для властивості типу Caption або Text.

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

Складові частини проекту:

1.Delphi Sourse File

2.Delphi Form

3.Delphi Progect File

 

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

Особливості програмного створення компонент.

Важлива особливість проектування програм у середовищі Delphi полягає у запровадженні підходу, який отримав назву Two-Way Tools і який характеризується синхронізацією візу-ального проектування (на основі дизайнера форм Form Designer та інспектора об'єктів Object Inspector) із класичним ("кодовим") програмуванням, коли код (текст) програми "набирається" у вікні традиційного текстового редактора Editor Window). Дійсно, при пере-несенні на порожню форму, наприклад, ком-понента Button буде сформовано текст (у файлі Unit1.pas):

unit Unit1;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type TForm1 = class(TForm)

Button1: TButton;

private

{ Private declarations }

public

{ Public declarations }

end;

var Form1: TForm1;

implementation . . .

end.

Тепер у списках можливих обробників для різноманітних подій (Events) для кнопки Button1 чи форми Form1 (це, наприклад, події OnClick, OnDblClick, On Create тощо для Form1 чи OnClick, OnEnter для Button1) буде з'являтись рядок з ідентифікатором MyHandle.

 

Програмне керування компонентами.

Кожен компонент має свої властивості. Керувати ними ми можемо безпосередньо з панелі Object Inspector ще у процесі моделювання нашої аплікації. Але, на щастя, це не єдиний спосіб керувати властивостями компонента, оскільки середовище дозволяє програмне керування компонентами. Всі властивості, які ми задаємо у вкладці дизайну форм можна змінювати программно, наприклад, для компоненти TLabel ми можемо змінити поле Caption, зробивши це так: Label1.Caption:='MyLabelName”, або змінити текст, який міститься у компоненті TEdit: Edit1.Text:=”Input Text Here”. Та зміна інформації, яку несе компонента, не єдині властивості, які ми можемо змінити. Ми можемо редагувати ще позицію компоненти, її розміщення, доступність, розміри, тощо. Так, наприклад, щоб деактивувати компоненту TButton достатньо написати Button1.Enabled:=False, і наша кнопка стане недоступною. Чи, якщо ми хочемо приховати компоненту TMemo: Memo1.Visible:=False.

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

 

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; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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