之前向大家简单的介绍了Open Tools API,现在我们就要亲自动手编写一个简单的Wizard,来体验Open Tools API的魅力所在。
在Delphi6中,不再推荐大家使用ExptIntf单元中的TIExpert类做为我们自己编写的Wizard的基类,而是改用TInterfacedObject做为其基类,并实现ToolsAPI单元中的一个或我个接口。
编写一个Wizard必须要实现ToolsAPI单元中的IOTAWizard接口和IOTAWizard的父接口INotifier(尽管Delphi不会调用INotifier接口中的任何方法)。如果你想编写一个Menu Wizard,必须实现IOTAWizard、INotifier和IOTAMenuWizard接口中的方法;如果想编写一个Form Wizard或是Project Wizard,必须实现IOTAWizard、INotifier和IOTARepositoryWizard接口中的方法(在ToolsAPI单元中为IOTARepositoryWizard接口另定义了两个别名IOTAFormWizard和IOTAProjectWizard,分别针对Form Wizard和Project Wizard)。
在Delphi6中,Wizard的注册方式做了相应的变化,在Package中实现的Wizard不再是调用ExptIntf单元中的RegisterLibraryExpert方法,而是改为调用RegisterPackgeWizard方法。如果你编写的Wizard是在DLL中实现的,则不需要调用此方法,而是使用ToolsAPI单元中的IOTAWizardServices接口来注册和移除自己编写的Wizard。
interface
usesToolsAPI,Dialogs;
type
TMSimpleWizard=class(TInterfacedObject,IOTANotifier,IOTAWizard)
public
{IOTANotifier}
procedureAfterSave;
procedureBeforeSave;
procedureDestroyed;
procedureModified;
{IOTAWizard}
functionGetIDString:string;
functionGetName:string;
functionGetState:TWizardState;
procedureExecute;
end;
implementation
functionTMSimpleWizard.AfterSave;
begin
//DoNothing
end;
functionTMSimpleWizard.BeforeSave;
begin
//DoNothing
end;
procedureTMSimpleWizard.Destroyed;
begin
//DoNothing
end;
procedureTMSimpleWizard.Execute;
begin
ShowMessage('ThisWizardistryingtodosomethinguseful.');
end;
functionTMSimpleWizard.GetIDString:String;
begin
Result:='ChirsMao.SimpleWizard';
end;
functionTMSimpleWizard.GetName:String;
begin
Result:='SimpleWizard';
end;
functionTMSimpleWizard.GetState:TWizardState;
begin
Result:=[wsEnabled];
end;
procedureTMSimpleWizard.Modified;
begin
//DoNothing
end;
在DLL中实现Wizard,必须在Uses从句中第一个引用ShareMem单元。并且要在DLL的Terminate方法中手工移除掉注册到IDE中的Wizard。
usesShareMem,ToolsAPI,SiampleWizard;
var
Index:Integer=-1;//全局变量,保存Wizard添加到IDE中的索引号
procedureTerminate;
var
Services:IOTAWizardServices;
begin
Services:=BorlandIDEServicesasIOTAWizardServices;
Services.RemoveWizard(Index);
end;
functionInitialize(constServices:IBorlandIDEServices;RegisterProc:TWizardRegisterProc;varTerminateProc:TWizardTerminateProc):Boolean;stdcall;
var
WizardServices:IOTAWizardServices;
begin
//如果你使用了VCL*.BPL,否则需要保存这个接口变量
BorlandIDEServices:=Services;
WizardServices:=BorlandIDEServicesasIOTAWizardServices;
WizardServices.AddWizard(TSimpleWizard.Create);
TerminateProc:=Terminate;
Result:=True;
end;
Exports
InitializeasWizardEntryPoint;
end.
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关推荐
共四个文件,都是最先版的,希望可以帮助大家。axis2-eclipse-service-archiver-wizard和axis2-eclipse-codegen-wizard和axis2-1.6.1-bin和axis2-1.6.1-war
Api-wizard.zip,向导式项目名称,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到对象中,api简化了编程。
axis2-eclipse-service-archiver-wizard.zip
而安装软件清单的制作其实千变万化,使用者能够透过 Windows Post-Install Wizard 的向导功能来指引你制作所想要添加进安装清单的软件,并且可以指定安装完特地软件后进行特殊的动作。此外, Windows Post-Install ...
Ionic(3.9.2)简单条件向导 ionic 3中处理条件步骤向导的简单组件。...import {IonSimpleWizard} from '../pages/ion-simple-wizard/ion-simple-wizard.component'; import {IonSimpleWizardStep} from '../pages
jQuery Smart Wizard v5 很棒的jQuery步骤向导插件。 jQuery Smart Wizard是jQuery的可访问步骤向导插件。 为您的表单,结帐屏幕,注册步骤等提供简洁时尚的界面。易于实现,Bootstrap兼容性,可自定义的工具栏,...
无忧隐藏-HideWizard v9.20,我电脑上在用这个
axis2-eclipse-codegen-wizard-1.4.zip
无忧隐藏-HideWizard 6.8 简体中文绿色破解版.... 窗口隐藏-文件夹隐藏-进程隐藏工具软件 够用就行
ionCube loader wizard
内含axis2-eclipse-codegen-wizard.zip与Axis2_Service_Archiver.zip
EBS12-Patch Wizard-EDU41E3Y.pdf
在官网下载的文档,有需要的还是去官网下载,那里面更全,更权威,而且是免费的!在这只是想保存一下资源。
TSWizard - a wizard framework for .NET phase_AnyWind.m.NET
Hyperlynx使用方法整理(包括ddr部分仿真DDRx Batch-Simulation Wizard
UG OPEN API中的VC Wizard文件。放在$\Microsoft Visual Studio 8\VC相应目录下
自定义jquery-wizard插件; 点击wizard.html查看效果;
Laravel开发-laravel-setup-wizard Laravel应用程序的Web安装向导
Delphi项目可执行文件(.exe) 此项目的详细映射文件(.map)。 注意:该向导具有自己的DelphiCodeCoverage.exe副本 它提供什么帮助 DelphiCodeCoverageWizard将生成命令行和其他文件以运行此项目的覆盖范围。 您...
axis2-eclipse-service-archiver-wizard 1.3.zip