Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не вытанцовывается IDE expert в DELPHI 6

5.9K
22 декабря 2006 года
assign
60 / / 13.12.2005
Здравствуйте.
Есть задача написать эксперт, добавляющий команду в меню Tools и вот какая штука. Сразу после установки работает, но после перезапуска IDE добавленная в меню команда исчезает, хотя имя пакета в списке остаётся. Ещё иногда при закрытии окна DELPHI вылетает exception eListError. Причём, вылетает оно как-то бессистемно, даже не уловишь при каких условиях.
Так нет ли среди вас кого-нибудь более опытного в деле написания экспертов, кто мог бы посмотреть код и сказать, что я не так делаю?

Спасибо!

Вот исходник модуля:

unit MainUnit;

interface

uses ToolsApi, Dialogs, SysUtils, Forms, Menus, ActnList;

type
TTimeTracking = class(TNotifierObject, IOTAWizard)
private
FMenuItem : TMenuItem;
Faction : TAction;
public
constructor Create;
destructor Destroy; override;
function GetIDString: string;
function GetName: string;
function GetState: TWizardState;
procedure Execute;
procedure OnMenuClick(Sender: TObject);
end;

procedure Register;

implementation

{ TTimeTracking }

function NTAServices: INTAServices;
begin
Result := (BorlandIDEServices as INTAServices);
end;

procedure Register;
begin
RegisterPackageWizard(TTimeTracking.Create);
end;

// ---- Реализация методов TTimeTracking -----

constructor TTimeTracking.Create;
var
MainMenu : TMainMenu;
ToolsItem: TMenuItem;
TimeTrk: TMenuItem;
const
constCaption = 'Time tracking';
begin
// Делаем новую команду меню
MainMenu := NTAServices.MainMenu;
ToolsItem := MainMenu.Items.Find('Tools'); // Получаем ссылку на меню Tools
TimeTrk := ToolsItem.Find(constCaption); // Ищем команду Time tracking
if Assigned(TimeTrk) then Exit; // Если уже есть - уходим
// Конструируем новый элемент
FMenuItem := TMenuItem.Create(ToolsItem);
FMenuItem.Caption := constCaption;
FMenuItem.OnClick := OnMenuClick;
// Вставляем...
ToolsItem.Add(FMenuItem);
end;

destructor TTimeTracking.Destroy;
begin
if Assigned(FMenuItem) then FMenuItem.Free;
inherited;
end;

procedure TTimeTracking.Execute;
begin

end;

function TTimeTracking.GetIDString: string;
begin
result := 'TIME.TRACKING.EXPERT';
end;

function TTimeTracking.GetName: string;
begin
result := 'timetracking';
end;

function TTimeTracking.GetState: TWizardState;
begin
result := [wsEnabled];
end;

procedure TTimeTracking.OnMenuClick(Sender: TObject);
begin
end;

end.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог