Пример создания эксперта
Рассмотрим создание эксперта в виде пакета.
Создаем новый пакет и добавляем в него модуль (Unit), в котором будет храниться класс эксперта.
Базовым для класса эксперта является интерфейс IOTAWizard. Все его методы нуждаются в реализации, даже если не будут использоваться.
Методы IOTAWizard:
- function GetIDString: string; – этот метод должен возвращать уникальную строку для идентификации эксперта внутри IDE. Например: "MY.FIRST.EXPERT". Если IDE обнаружит два расширения с одинаковыми идентификаторами, то среда разработки выдаст сообщение об ошибке, и загрузится только первый эксперт. Должен переопределяться во всех экспертах.
- function GetName: string; – должен вернуть имя эксперта. Например: "MyFirstExpert". При использовании эксперта формы или проекта это имя будет подписью под соответствующей пиктограммой в диалоговом окне NewItems. Должен переопределяться во всех экспертах.
- functionGetState: TWizardState; – определяет, доступен ли в данный момент эксперт, т. е. может ли пользователь выбрать соответствующий пункт меню. Имеет два состояния: wsEnabled (доступен), wsChecked (отмечен). Пример: Result:=[esEnabled];
- procedure Execute; – метод выполнится, когда эксперт запустится.
Все объекты, которые будут взаимодействовать с ToolsAPI, порождаются от TNotifierObject. Его реализацию можно посмотреть в том же ToolsAPI.pas.
Также при создании класса будем использовать интерфейс IOTAMenuWizard, обладающий методом function GetMenuText: string. Данная функция возвращает строку, которая будет внесена в подменю Help ИСР Delphi. Метод вызывается при каждом выводе меню.
Переопределение методов - задача довольно простая; она предполагает написание всего нескольких строк кода. Например, реализацияметода GetMenuText:
function TFirstExpert.GetMenuText: string;
begin
Result := 'Execute MyFirstExpert';
end;
После определения всех методов нужно зарегистрировать пакет с помощью процедуры Register, которая объявляется вне класса в interface и реализуется в implementation.
Для регистрации пакетов используется процедура RegisterPackageWizard(TFirstExpert.Create), где TFirstExpert – имя класса эксперта.
В результате код модуля может быть следующим:
unit FirstExpClass;
interface
uses
ToolsApi, Dialogs, SysUtils;
type
TFirstExpert = class(TNotifierObject, IOTAWizard, IOTAMenuWizard)
public
function GetIDString: string;
function GetName: string;
function GetState: TWizardState;
procedure Execute;
function GetMenuText: string;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterPackageWizard(TFirstExpert.Create);
end;
{ TFirstExpert }
procedure TFirstExpert.Execute;
begin
ShowMessage(‘Экспертзапущен’);
end;
function TFirstExpert.GetIDString: string;
begin
Result := 'MY.FIRST.EXPERT';
end;
function TFirstExpert.GetMenuText: string;
begin
Result := 'Execute MyFirstExpert';
end;
function TFirstExpert.GetName: string;
begin
Result := 'MyFirstExpert';
end;
function TFirstExpert.GetState: TWizardState;
begin
Result := [wsEnabled];
end;
end.
Далее остается только скомпилировать пакет, нажав на , и установить его в ИСР. Для установки достаточно зайти в меню Component \ Install Packages, нажать Add и выбрать BPL с экспертом. (Можно сразу нажать ).
Дата добавления: 2015-09-07; просмотров: 981;