Тестирование компонента
После того как компонент будет добавлен в пакет, необходимо проверить поведение компонента во время разработки приложения, использующего этот компонент (работоспособность компонента была проверена раньше, когда он добавлялся в форму приложения динамически, во время работы программы).
Можно считать, что компонент работает правильно, если во время разработки приложения удалось поместить этот компонент в форму разрабатываемого приложения и, используя окно 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.