Создание компонента Delphi (Продолжение)

Во время работы над новым компонентом наиболее частой ошибкой является попытка установить (переустановить) компонент, который уже находится в одном из пакетов (обычно такое желание возникает после внесения изменений в модулькомпонента).

В этом случае Delphi выводит сообщение: The package already contains unit named... (Пакет уже содержит модуль, который называется...) и процесс установки завершается. Для того чтобы преодолеть эту ошибочную ситуацию и установить компонент в нужный пакет или установить в пакет обновленную версию компонента, необходимо сначала удалить компонент из пакета, а затем установить его снова.

 

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

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

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

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

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

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

 

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

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

 

01.unit fazenda_;
02.interface
03.uses
04.Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
05.NkEdit; // ссылка на модуль <a href="http://delphicomponent.ru/" title="компонента" target="_blank">компонента</a>
06.type
07.TForml = class(TForm)
08.NkEditl: TNkEdiC; // расстояние
09.NkEdit2: TNkEdit; // ценз литра бензина
10.NkEdit3; TNkEdit; // потребление бензина на 100 км
11.CheckBoxl: TCheckBox; // True — поездка -суда и обратно
12.Button1: TButton; // кнопка Вычислить
13.LabeH: TLabel; // попе вывода результата расчета
14.Labell: TLabel;
15.Label2: TLabel;
16.Label3: TLabel;
17.procedure ButtonlClick[Sender: TObject);
18.procedure NkEdltlKeyPress(Sender: TObject; var Key: Char);
19.procedure NkEdit2KeyPress(Sender: TObject; VAC Key: Char);
20.procedure NkEditSKeyPress(Sender: TObject; var Key: Char);
21.private
22.{Private declarations }
23.public
24.{ Public declarations )
25.end;
26.var
27.Forml: TForml;
28.implementation
29.{$R *.dfm}
30.// нажатие клавиши в поле Расстояние
31.procedure TFomu.NkEditlKeyPress(Sender: TObject; var Key: Char);
32.begin
33.if Key - Char(VK_RETURN)
34.then NkEdit2.SetFocus; // переместить курсор в поле Цена
35.end;
36.// нажатие клавиши в поле Цена
37.procedure TE'orrta.NkEdit2KeyPress (Sender; TObject; var Key: Char) ;
38.begin
39.if Key - Chac(VK_RETURN)
40.then NkEdit3.SetFocus; // переместить курсор в поле Потребление
41.end;
42.// нажатие клавиши в поле Потребление
43.procedure TFoml.NkEditSKeyPress{Sender: TObject; var Key: CharI;
44.begin
45.if Key = Char(VK_RETURN)
46.then Buttonl.SetFocus; // // сделать активной кнопку Вычислить
47.end;
48.// щелчок на кнопке Вычислить
49.procedure TForml.ButtonlClick(Sender: TObject);
50.var
51.rast : real// расстояние
52.cena : real// цена
53.potr : real// потребление на 100 км
54.suimn : real// сумма
55.mes: string;
56.begin
57.rast := StrToFloat(NkEditl.Text);
58.cena := StrToFloat(NkEdit2.Text) ;
59.potr := StrToFloat(NkEdit3.Text);
60.surnm := rast / 100 * potr * cena;
61.if CheckBoxl.Checked then
62.suitim := sumn * 2;
63.mes := 'Поездка на дачу1 ;
64.if ChееkBox1.Checked then
65.mes := mes + ' и обратно';
66.mes := roes + 'обойдется в ' + FloatToStrFlsuram,ffGeneral,4,2)+ ' руб.';
67.Label4.Caption := mes;
68.end;
69.end.

Иногда возникает необходимость удалить компонент из пакета. Сделать это можно при помощи редактора пакетакомпонентов.

 
Для того чтобы запустить редактор пакета компонентов, надо из меню Component выбрать команду Install Packages, в открывшемся диалоговом окне Project Options (рис. 16.14) из списка Design packages выбрать нужный пакет и нажать кнопку Edit.
 
Рис. 16.14. Выбор пакета для редактирования  

В открывшемся окне Confirm (рис. 16.15) в ответ на запрос: cancel this dialog box and open. .. (Закрыть этот диалог и открыть пакет...) надо нажать кнопку Yes.

Рис. 16.15. Диалоговое окно Confirm

В результате открывается окно редактора пакета Package (рис. 16.16), в котором в списке Contains (Содержимое) перечислены компоненты пакета.

Рис. 16.16. Окно редактора пакета

Для того чтобы удалить компонент из пакета, необходимо нажать кнопку Remove. В открывшемся диалоговом окне Remove From Project (рис. 16.17) следует выбрать удаляемый компонент и нажать кнопку ОК.

Рис. 16,17. Выбор компонента, удаляемого из пакета 

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

Рис. 16.18. Информационное сообщение о том, что компонент больше недоступен

После перекомпиляции пакета необходимо закрыть окно редактора пакета и в открывшемся окне подтвердить сохранение изменений в пакете, из которого был удален компонент.

 

Delphi позволяет менять порядок следования вкладок палитры компонентов, названия вкладок, а также порядок следования значков компонентов на  вкладках. Настройка палитры компонентов выполняется в диалоговом окне Palette Properties, которое открывается выбором из меню Component команды Configure Palette (рис. 16.19). 

Рис. 16.19. Диалоговое окно Palette Properties 

Сначала в списке Pages необходимо выделить нужную вкладку палитры компонентов. Затем, если надо изменить порядок следования вкладок палитры компонентов, следует воспользоваться кнопками Move Up и Move Down и путем перемещения выбранного имени по списку Pages добиться нужного порядка следования вкладок.

Если надо изменить порядок следования значков компонентов на вкладке, то в списке Components следует выбрать нужный значок компонента и кнопками Move Up и Move Down переместить значок на новое место.

При необходимости изменить имя вкладки палитры следует в списке Pages выбрать имя нужной вкладки, нажать кнопку Rename и в поле Page name открывшегося диалогового окна Rename page (рис. 16.20) ввести новое имя.

Рис. 16.20. Диалоговое окно Rename page

 

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: