在Delphi中编写一个Menu Wizard也是相当的简单,在实现IOTAWizard接口的同时,也实现IOTAMenuWizard接口即可。
unit MenuWizardDemoUnit;
interface
uses SysUtils, ToolsAPI, Dialogs;
type
TMenuWizardDemo = class (TNotifierObject, IOTAWizard, IOTAMenuWizard)
public
... { IOTAWizard }
function GetIDString: string ;
function GetName: string ;
function GetState: TWizardState;
procedure Execute;
... { IOTAMenuWizard }
function GetMenuText: string ;
end;
procedure Register;
implementation
uses WizardForm, Forms;
resourcestring
FName = ' MenuWizardDemo ' ;
FAuthor = ' Chris Mao ' ;
FPageName = ' Wizards ' ;
FComment = ' This is comment. ' ;
// Wizard entry point
procedure Register;
begin
ToolsAPI.RegisterPackageWizard(TMenuWizardDemo.Create as IOTAWizard);
end;
... { TMenuWizardDemo }
// ================== IOTAWizard ===================================
procedure TMenuWizardDemo.Execute;
begin
ShowMessage( ' This is Menu Wizard Demo. ' );
end;
function TMenuWizardDemo.GetIDString: string ;
begin
Result : = Format( ' %s.%s ' , [FAuthor, FName]);
end;
function TMenuWizardDemo.GetName: string ;
begin
Result : = FName;
end;
function TMenuWizardDemo.GetState: TWizardState;
begin
Result : = [wsEnabled];
end;
// ================== IOTAMenuWizard ===================================
function TMenuWizardDemo.GetMenuText: string ;
begin
Result : = ' Menu Wizard Demo ' ;
end;
end.
interface
uses SysUtils, ToolsAPI, Dialogs;
type
TMenuWizardDemo = class (TNotifierObject, IOTAWizard, IOTAMenuWizard)
public
... { IOTAWizard }
function GetIDString: string ;
function GetName: string ;
function GetState: TWizardState;
procedure Execute;
... { IOTAMenuWizard }
function GetMenuText: string ;
end;
procedure Register;
implementation
uses WizardForm, Forms;
resourcestring
FName = ' MenuWizardDemo ' ;
FAuthor = ' Chris Mao ' ;
FPageName = ' Wizards ' ;
FComment = ' This is comment. ' ;
// Wizard entry point
procedure Register;
begin
ToolsAPI.RegisterPackageWizard(TMenuWizardDemo.Create as IOTAWizard);
end;
... { TMenuWizardDemo }
// ================== IOTAWizard ===================================
procedure TMenuWizardDemo.Execute;
begin
ShowMessage( ' This is Menu Wizard Demo. ' );
end;
function TMenuWizardDemo.GetIDString: string ;
begin
Result : = Format( ' %s.%s ' , [FAuthor, FName]);
end;
function TMenuWizardDemo.GetName: string ;
begin
Result : = FName;
end;
function TMenuWizardDemo.GetState: TWizardState;
begin
Result : = [wsEnabled];
end;
// ================== IOTAMenuWizard ===================================
function TMenuWizardDemo.GetMenuText: string ;
begin
Result : = ' Menu Wizard Demo ' ;
end;
end.
编译包并安装,会在Delphi IDE的Help菜单中看到我们新增加的一个菜单项,其标题就是我们在GetMenuText方法中返回的字串,当我们点击这个菜单项时,会执行Execute方法中的代码。
就是这么简单!