Тестирование компонента

После того как компонент будет добавлен в пакет, необходимо проверить поведение компонента во время разработки приложения, использующего этот компонент (работоспособность компонента была проверена раньше, когда он добавлялся в форму приложения динамически, во время работы программы).

Можно считать, что компонент работает правильно, если во время разработки приложения удалось поместить этот компонент в форму разрабатываемого приложения и, используя окно Object Inspector, установить, значения свойств компонента, причем как новых, так и унаследованных от родительского класса.

Работоспособность компонента NkEdit можно проверить, использовав его, например, в приложении Поездка на дачу, вид формы которого приведен на рис. 16.9.

Рис. 16.9. Форма приложения Поездка на дачу (поля ввода-редактирования компонента NkEdit)

Внешне форма разрабатываемого приложения почти ничем не отличается от формы приложения Поездка на дачу, рассмотренного в гл. 6. Однако если выбранным компонентом будет поле ввода, то в окне Object Inspector указано, что текущим компонентом является компонент класса TNkEdit, a в списке свойств можно увидеть новое (по сравнению со списком свойств стандартного компонента Edit) свойство — Numb (рис. 16.10).

Рис. 16.10. Свойство компонента NkEdit отражено в окне Object Inspector

В листинге 16.4 приведен модуль приложения Поездка на дачу. Очевидно, что текст программы значительно меньше первоначального варианта, в котором для ввода данных использовался компонент Edit.

Листинг 16.4. Приложение "Поездка на дачу" тест компонента

unit fazenda ;

interface

uses

Windows, Messages, SysUtils,

Variants, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls,

NkEdit; // ссылка на модуль компонента

type

TForm1 = class(TForm)

NkEdit 1: TNkEdit; //расстояние

NkEdit2: TNkEdit; // цена литра бензина

NkEditS: TNkEdit; // потребление бензина на 100 км

CheckBox1: TCheckBox; // True — поездка туда и обратно

Button1: TButton; Label4: TLabel;

Label1: TLabel; Label2: TLabel;

Label3: TLabel;

// кнопка Вычислить

// поле вывода результата расчета

procedure ButtonlClick(Sender: TObject);

procedure NkEditlKeyPress

(Sender: TObject; var Key: Char);

procedure NkEdit2KeyPress

(Sender: TObject; var Key: Char);

procedure NkEditSKeyPress

(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

// нажатие клавиши в поле Расстояние

procedure TForm1.NkEdit1KeyPress

(Sender: TObject; var Key: Char);

begin

if Key = Char(VK_RETURN)

then NkEdit2.SetFocus; // переместить курсор в поле Цена

end;

// нажатие клавиши в поле Цена

procedure TForm1.NkEdit2KeyPress

(Sender: TObject; var Key: Char);

begin

if Key = Char(VK_RETURN)

then NkEdit3.SetFocus;

// переместить курсор в поле Потребление

end;

// нажатие клавиши в поле Потребление

procedure TForm1.NkEdit3KeyPress

(Sender: TObject; var Key: Char);

begin

if Key = Char(VK_RETURN)

then Buttonl.SetFocus; //

// сделать активной кнопку Вычислить

end;

// щелчок на кнопке Вычислить

procedure TForml.ButtonlClick(Sender: TObject);

var

rast : real; // расстояние

cena : real; // цена

potr : real; // потребление на 100 км

summ : real; // сумма

mes: string; begin

rast := StrToFloat(NkEdit1.Text);

cena := StrToFloat(NkEdit2.Text);

potr := StrToFloat(NkEdit3.Text) ;

summ := rast / 100 * potr * cena;

if CheckBoxl.Checked then sunnm := summ * 2;

mes := 'Поездка на дачу';

if CheckBoxl.Checked then mes := mes + ' и обратно';

mes := mes + 'обойдется в '

+ FloatToStrF(summ,ffGeneral,4,2) + ' руб.';

Label4.Caption := mes;

end;

end.