Розробка власних компонентів, Delphi, Програмування, статті

Олександр Василевський

Якщо вас не влаштовують стандартні компоненти, що поставляються разом з Delphi, значить, вам пора спробувати себе у створенні своїх власних. Спочатку ми почнемо з простих і поступово перейдемо до більш складним. І так, почнемо.

Перед створенням свого компонента важливо правильно вибрати для нього предка. Хто ж може бути предком для вашого компонента? Як правило, використовуються у вигляді предків TComponent,
TControl, TWinControl, TGraphicControl, TCustomXXXXXX
, А також усі компоненти палітри компонентів. Візьмемо для прикладу компонент TOpenDialog, Який знаходиться на сторінці
Dialogs палітри компонентів. Він добре справляється зі своїм завданням, але у нього є одна маленька незручність. Кожен раз, коли його використовуєш необхідно кожен раз змінювати значення властивості Options. І причому це, як правило, одні і ті ж дії.


OpenDialog1.Options := OpenDialog1.Options + [ofFileMustExist,
ofPathMustExist];

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

Завдання для себе ми вже вибрали, залишилося за малим – створити компонент. Заготовку для компонента створюємо, вибираючи з меню команду Component/New
Component…
і в діалоговому вікні вибираємо


Ancestor type: TOpenDialog

Class Name: TOurOpenDialog

Palette Page: Our Test

Натиснули Ok і в нас з’явився шаблон нашого майбутнього компонента.

Перевизначають конструктор у цього компонента, тобто в секції public вставляємо рядок:


constructor Create(AOwner: TComponent); override;


натискання на цьому рядку Ctrl + Shift + C створює шаблон для цього методу, усередині якого ми вставляємо такі рядки:

inherited Create (AOwner); {Викликаємо успадкований конструктор}

Options: = Options + [ofFileMustExist, ofPathMustExist]; {Виконуємо необхідні нам дії}


Зверніть увагу: Комбінації клавіш Ctrl + Shift + стрілки вгору / вниз дозволяють переміщатися між оголошенням методу і його реалізацією.

Установка створеного компонента Component / Install Component …

Install Into New Package

Package file name: C:\Program Files\Borland\Delphi4\Lib\OurTest.dpk

Package description: Our tested package


Вам не подобається, що у нашого компонента іконка така ж як у стандартного? Тоді створимо для нього свою власну. Для цього нам необхідно викликати Tools/Image Editor. Створюємо новий *. Dcr файл. Вставляємо в нього малюнок Resource/New/Bitmap. Встановлюємо розмір картинки 24×24 крапок. А далі – ваша творчість … Зверніть увагу: колір точок, що співпадає з кольором точки в лівому нижньому кутку малюнка, буде вважатися ПРОЗОРИМ!

Після того як ви створили свій малюнок, перейменуйте його з Bitmap1 в
TOurOpenDialog і збережіть файл з ім’ям OurOpenDialog.dcr. Видаліть компонент з пакета і встановіть його знову (тільки в цьому випадку додасться і посилання на *. dcr файл).

Compile, Install і удачі!


{======================================================}

unit OurOpenDialog;

interface

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

type
TOurOpenDialog = class(TOpenDialog)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
end;

procedure register;

implementation

procedure register;
begin
RegisterComponents(‘Samples’, [TOurOpenDialog]);
end;

{ TOurOpenDialog }

constructor TOurOpenDialog.Create(AOwner: TComponent);
begin inherited Create (AOwner); {Викликаємо успадкований конструктор}
Options := Options + [ofFileMustExist, ofPathMustExist]; {Виконуємо необхідні нам дії}
end;

end.
{======================================================}

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


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

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

Ваш отзыв

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

*

*