Палітра компонентів., Середа розробки, Delphi, статті

Сторінка ActiveX.


Компоненти ActiveX є “чужими” для Delphi (рисунок 1). Вони створюються іншими інструментальними засобами розробки програм (наприклад, С + + або Visual Basic) і впроваджуються в Delphi за допомогою технології OLE. На сторінці ActiveX представлені лише п’ять компонентів з великої кількості, розроблюваних всюди в світі виробниками програмних засобів та окремими програмістами. Компоненти сторінки ActiveX для Delphi 4 і Delphi 5 однакові.


















Компонент Chartfx (інтерактивний графік) дає програмістам зручний засіб включення в програму інтерактивних (діалогових) діаграм і графіків.


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


Компонент FlBook (електронна таблиця) дозволяє створювати і використовувати робочі книги електронних таблиць, аналогічно, як це робить MS Excel.


Компонент VtChart (майстер діаграм) забезпечує засоби побудови двовимірних і тривимірних діаграм за результатами табличних обчислень.


Компонент Graph (графічний сервер) призначений для включення в програму графічних двовимірних засобів відображення даних.


Методи в Delphi.


Як ви знаєте, об’єкт включає в себе дані і код. Код у вигляді методів, іншими словами підпрограм, приєднаних до об’єкта, задає поведінку об’єкта. Методи для об’єкта певного класу визначають операції, які можуть бути виконані представником даного класу. Таким чином, метод – це підпрограма, яка визначена як частина класу і включена всередину цього класу.

Всього існує шість різновидів методів об’єктів: методи-процедури, методи-функції, класові процедури, класові функції, конструктори, деструктори.

Подвійний клацання лівою кнопкою миші в інспектора об’єкта на порожній рядку навпроти назви цікавить вас події перемістить вас у вікно Редактора коду, а саме в процедуру обробки цієї події. Якщо в необхідному компоненті цей рядок не порожня, то подвійне клацання перемістить вас у вікно Редактора коду в те місце, де знаходиться даний метод. Так ви постійно робили для створення методу відгуку на подію. Незважаючи на те, що можливості візуальної частини Delphi надзвичайно багаті, хорошими знаннями програмування може володіти тільки той, хто добре розбирається в техніці ручного написання коду.

Перед тим як розглянути методи-процедури і методи-функції, розглянемо, що таке процедури і функції в Delphi.

Підпрограми.


Більшість програм за розміром досить великі і містять від десятків до сотень тисяч операторів. Щоб полегшити написання додатків, можна передати деякі завдання підпрограм.

Підпрограма – це блок коду з ім’ям, що складається з заголовка, оголошень і тіла, в якому є набір виконуваних операторів. Мова програмування Object Pascal надає два різних види підпрограм: процедури і функції.

Підпрограми – це один з будівельних блоків Паскаля, за допомогою яких ви можете конструювати програми.

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

Найпростіший спосіб – це визначення заголовка процедури і тіла підпрограми на початку розділу реалізації блоку. Так як вони розміщені на початку програми, то компілятору стає відомо про їх існування до того, як вони будуть викликані з будь-якої її частини, наприклад:

implementation
{$R *.DFM}
procedure Information;
begin MessageDlg (“Інформація”, mtInformation, [mbOk], 0);
end;
procedure TForm1.Button1Click (Sender: TObject);
begin
Information;
end;
end.

Якщо процедура буде описана після реалізації події OnClick, то компілятор видасть таке повідомлення: [Error] Unit1.pas (28): Undeclared identifier: “Information” – невизначений ідентифікатор. Цю проблему можна вирішити шляхом приміщення оголошення процедури на початку розділу реалізації з подальшим ключовим словом forward:

procedure Information; forward;

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

Наступний спосіб зробити процедуру доступною в модулі – це оголошення її в розділі інтерфейсу:

procedure Information;
implementation
{$R *.DFM}

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

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

Давайте розглянемо процес створення підпрограми на прикладі процедури, яка допоможе вам вивчити техніку написання методів у Delphi.

1. Запустіть Delphi. Збережіть файл модуля під ім’ям Methods_.pas, а файл проекту під ім’ям Methods. dpr. Немає ніякого функціонального відмінності між модулями, створеними вами в редакторі коду, і модулями, згенерували Delphi автоматично. У будь-якому випадку модуль складається з трьох розділів:


У розділі interface описується все те, що повинно бути певне для інших модулів (типи, змінні, класи, константи, процедури, функції). У розділі implementation поміщається код, який реалізує класи, процедури або функції.

В Delphi процедурам і функціям (а отже і методам класів) можуть передаватися параметри для того, щоб забезпечити їх необхідною для роботи інформацією. Програма Methods продемонструє, як використовувати передачу параметрів в методи Delphi.

Ця програма дозволить вам робити обчислення, а конкретно підсумовування чисел, поміщених в компоненти Edit1 і Edit2. Результат підсумовування переноситься в компоненти Edit3, Memo1, Memo2. Після натискання кнопки з заголовком “EnteringALine” рядок з керуючого елемента EditSumma (тобто Edit3) копіюється в керуючі елементи Memo1 і Memo2.

2. Після того як ви розмістите на формі компоненти Edit1, Edit2, Edit3, Memo1, Memo2, зробіть перейменування за допомогою інспектора об’єкта (властивість Name) компонента Edit3 в EditSumma. Розміщення компонентів на формі показано на малюнку 2. Помістіть на форму компонент Button1, і в Object Inspector змініть його заголовок (властивість Caption) на “EnteringALine”. Компоненти Label1, Label2, Label3 використовуйте для введення написів, що визначають призначення компонентів Edit.

3. Після завершення проектування форми клас TForm1 буде виглядати наступним чином:

TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Edit1: TEdit;
Memo2: TMemo;
Edit2: TEdit;
EditSumma: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
end;


4. Наступний крок полягає в додаванні методу, що викликається по натисненню користувачем кнопки Button1. Це можна зробити двома способами:


Delphi згенерує наступну “заготовку”:

procedure TForm1.Button1Click (Sender: TObject);
begin
end;

Мета програми Methods – навчити вас писати процедури і передавати в них параметри. Зокрема, програма Methods реагує на натискання кнопки Button1 шляхом виклику процедури EnteringALine і передачі їй як параметр вмісту рядка редагування EditSumma (EditSumma.Text).

procedure TForm1.Button1Click (Sender: TObject);
begin
EnteringALine(EditSumma.Text);
end;

5. Важливо зрозуміти, що об’єкт EditSumma є екземпляром класу TEdit і, отже, має властивість Text. Воно містить набраний в рядку редагування тексту. Як ви вже, напевно, встигли помітити, за замовчуванням властивість Text містить значення, що збігається зі значенням імені компонента (Name) – в даному випадку “EditSumma”. Його можете редагувати як в режимі проектування, так і під час виконання.

6. Текст, який має бути відображений в компонентах Memo1, Memo2, передається процедурі EnteringALine як параметр. Щоб виконати це, просто напишіть ім’я цієї процедури і укладіть переданий параметр (параметри) в дужки наступним чином:

EnteringALine(EditSumma.Text);.

Заголовок цієї процедури виглядає наступним чином:

procedure TForm1.EnteringALine(NewString: String);

де зазначено, що передається процедурі параметр NewString повинен мати тип
String.

Згадайте, що завдання процедури EnteringALine полягає в копіюванні вмісту рядка редагування EditSumma в компоненти Memo1, Memo2. Тому вона повинна виглядати таким чином:

procedure TForm1.EnteringALine(NewString: String);
var
I,J,K:Integer;
begin
I := StrToInt(Edit1.Text);
J :=StrToInt(Edit2.Text);
K := I + J;
EditSumma.Text :=IntToStr(K);
Memo1.Text:=EditSumma.Text;
Memo2.Text:=EditSumma.Text;
end;

Оскільки процедура Entering-ALine не є відгуком на яку-небудь подію в Delphi, то її потрібно повністю написати “вручну”. Найпростіший спосіб зробити це – копіювати заголовок якої вже наявної процедури, виправити його, а потім дописати необхідний код.

7. Повернімося ще раз до заголовка процедури:

procedure TForm1.EnteringALine(NewString: String);.

Він складається з п’яти частин:


Якщо ви описуєте в процедурі більш ніж один параметр, то потрібно розділити їх крапкою з комою, наприклад:

procedure Example(Param1: String; Param2: String);

8. Після того як ви створили “вручну” заголовок процедури, що є методом класу, ви повинні включити його в декларацію класу. Наприклад, шляхом копіювання (ще раз нагадаю, що для методів, які є відгуками на події, дане включення проводиться автоматично):


1. type
2. TForm1 = class(TForm)
3. Button1: TButton;
4. Memo1: TMemo;
5. Edit1: TEdit;
6. Memo2: TMemo;
7. Edit2: TEdit;
9. EditSumma: TEdit;
10. Label1: TLabel;
11. Label2: TLabel;
12. Label3: TLabel;
13. procedure Button1Click(Sender: TObject);
14. procedure EnteringALine(NewString: String);
15. private
16. { Private declarations }
17. public
18. { Public declarations }
19. end;

Чотирнадцятий оператор по тексту вставлений “вручну”.

У наведеному програмному коді немає необхідності залишати в заголовку методу слово “TForm1”, так як воно вже присутня в описі класу. Результат роботи програми показаний на малюнку 3.

Компонент ScrollBar.


Цей компонент може використовуватися для регулювання значення числового параметра, пробігає деякий безліч значень (рисунок 4).



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

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

Форми або вікна можуть визначати лінійки прокрутки як частина оформлення своїх рамок, які внутрішньо пов’язані з відображає їх вікном, а не є самостійними компонентами. Їх положення обмежено правим або нижнім краями вікна, до якого вони належать. Автономний компонент, ScrollBar, може з’являтися в якому завгодно місці всередині вікна форми.

Є два види лінійок прокрутки:


Властивість Kind компонента ScrollBar служить перемикачем між двома станами.

Мінімальні і максимальні значення діапазону прокручування встановлюються з використанням властивостей Min і Max, які можуть приймати значення цілого типу Integer в діапазоні від -32768 до +32767.

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

Властивість SmallChange визначає “малий” зрушення бігунка, тобто дискретність зміни позиції покажчика лінійки прокрутки, після натискання користувачем кнопки, розташованої на кінці лінійки. Застосовується, наприклад, для переміщення на один піксель після клацання на кнопках зі стрілками на кінцях бігунка чи після натискання клавіш управління курсором.

Властивість LargeChange визначає “великий” зсув бігунка. Воно встановлює дискретність зміни позиції покажчика, коли користувач клацає лівої кнопкою миші на сірій області всередині лінійки прокрутки, розташованої між покажчиком і кнопкою зі стрілкою з кожного кінця компонента ScrollBar. Застосовується, наприклад, при переміщенні на одну сторінку і здійснюється за клацання миші по поверхні компонента з відповідної сторони від покажчика або після натискання клавіш PageUp або PageDown.

Подія property OnScroll: TScrollEvent;

TScrollEvent = procedure (Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer) of object;

викликається після кожної зміни положення бігунка.

Обробник події OnChange застосовується, коли відбувається зміна значень
Max, Min, Position.

Значення ScrollCode визначає вид переміщення бігунка і має наступні параметри:


Розглянемо приклад використання компонента ScrollBar (розміщення елементів на формі показано на малюнку 5). Даний приклад дозволить змінювати колір компонента Shape1 і колір контуру компонента Shape2, використовуючи лінійки прокрутки.




  1. Запустіть Delphi.
  2. Збережіть файл модуля під ім’ям ScrollB_.pas, а файл проекту – під ім’ям
    ScrollB.dpr.
  3. Помістіть на форму компоненти ScrollBar1, ScrollBar2, ScrollBar3 зі сторінки Standard палітри компонентів. Властивість Kind для даних компонентів залиште, прийняте за замовчуванням sbHorizontal. Використовуючи властивість Name, змініть імена, прийняті за замовчуванням для компонентів ScrollBar на ScrollBarRed, ScrollBarGreen, ScrollBarBlue відповідно.
  4. Встановіть значення властивості Min для цих компонентів, рівним 0, а значення властивості Max – рівним 255.
  5. Помістіть на форму компонент Shape1 зі сторінки Additional, встановіть для нього властивість Shape рівним stEllipse. Помістіть на форму компонент Shape2, встановіть для нього властивість Shape в інспектора об’єкта на StRoundRect.
  6. Помістіть компоненти Label1, Label2, Label3 на форму і, використовуючи властивість Name, змініть їх імена на LabelRed, LabelGreen, LabelBlue відповідно.
  7. Помістіть на форму компоненти TrackBar1, TrackBar2, TrackBar3 зі сторінки Win32 палітри компонентів.
  8. Помістіть на форму компоненти Label3, Label4, Label5. Використовуючи властивість Name, змініть імена на LabelScrollRed, LabelScrollGreen, LabelScrollBlue відповідно.

Використовуючи подія OnScroll на сторінці подій інспектора об’єкта для компонентів ScrollBar і подія OnChange для компонентів TrackBar, напишіть в Редакторі коду наступний програмний код:

procedure TForm1.ScrollBarRedScroll(Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
begin {Властивість Position (положення) говорить про те, як позиціонована лінійка прокрутки в даний момент часу. Ця властивість містить цілу величину. Ви можете маніпулювати цією властивістю з програми, якщо вам потрібно динамічно змінювати положення лінійки прокрутки.} LabelRed.Caption: = “Значення червоного кольору:” + IntToStr (ScrollPos);
Shape1.Brush.Color := RGB (ScrollBarRed.Position,
ScrollBarGreen.Position, ScrollBarBlue.Position);
Shape2.Pen.Color := RGB (ScrollBarRed.Position,
ScrollBarGreen.Position, ScrollBarBlue.Position);
end;
procedure TForm1.ScrollBarGreenScroll(Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
begin LabelGreen.Caption: = “Значення зеленого кольору:” + IntToStr (ScrollPos);
Shape1.Brush.Color := RGB (ScrollBarRed.Position,
ScrollBarGreen.Position, ScrollBarBlue.Position);
Shape2.Pen.Color := RGB (ScrollBarRed.Position,
ScrollBarGreen.Position, ScrollBarBlue.Position);
end;
procedure TForm1.ScrollBarBlueScroll(Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
begin LabelBlue.Caption: = “Значення блакитного кольору:” + IntToStr (ScrollPos);
Shape1.Brush.Color := RGB (ScrollBarRed.Position,
ScrollBarGreen.Position, ScrollBarBlue.Position);
Shape2.Pen.Color := RGB (ScrollBarRed.Position,
ScrollBarGreen.Position, ScrollBarBlue.Position);
Shape2.Pen.Width:=5;
end;
procedure TForm1.TrackBar1 Change(Sender: TObject);
begin LabelScrollRed.Caption: = “Значення LargeChangeRed” +
IntToStr(TrackBar1.Position);
ScrollBarRed.LargeChange := TrackBar1.Position;
end;
procedure TForm1.TrackBar2 Change(Sender: TObject);
begin LabelScrollGreen.Caption: = “Значення LargeChangeGreen” +
IntToStr(TrackBar2.Position);
ScrollBarGreen.LargeChange := TrackBar2.Position;
end;
procedure TForm1.TrackBar3 Change(Sender: TObject);
begin LabelScrollBlue.Caption: = “Значення LargeChangeBlue” +
IntToStr(TrackBar3.Position);
ScrollBarBlue.LargeChange := TrackBar3.Position;
end;
end.

Результат роботи програми Scroll показаний на малюнку 6.



Література:



  1. Марко Канту. Delphi 2 для Windows 95/NT. Москва. ТОВ “Маліп”. 1997
  2. Джон матчу. Девід Р. Фолкнер. Delphi. Москва. БІНОМ. 1995
  3. Ендрю Возневіч. Delphi. Освой самостійно. Москва. Східна книжкова компанія. 1996
  4. В.В.Фаронов. Delphi 5. Навчальний курс. Москва. Видавництво Нолидж. 2000
  5. А. Я. Архангельський. Програмування в Delphi 5. Москва. ЗАТ “Видавництво Біном “. 2000

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*