`
禹爸爸
  • 浏览: 86358 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Delphi Open Tools API - Simple Wizard

阅读更多

之前向大家简单的介绍了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。

unitSimpleWizard;

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。

LibrarySiampleWizardDLL;

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
Initialize
asWizardEntryPoint;

end.

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    axis2-eclipse-service-archiver-wizard和axis2-eclipse-codegen-wizard

    共四个文件,都是最先版的,希望可以帮助大家。axis2-eclipse-service-archiver-wizard和axis2-eclipse-codegen-wizard和axis2-1.6.1-bin和axis2-1.6.1-war

    Api-wizard.zip

    Api-wizard.zip,向导式项目名称,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到对象中,api简化了编程。

    libusbK-inf-wizard.exe

    libusb 开发中使用的驱动生成工具,包括winusb libusbk libusb0摘要必须大于50个字! 摘要必须大于50个字!

    axis2-eclipse-service-archiver-wizard.zip

    axis2-eclipse-service-archiver-wizard.zip

    Windows Post-Install Wizard

    而安装软件清单的制作其实千变万化,使用者能够透过 Windows Post-Install Wizard 的向导功能来指引你制作所想要添加进安装清单的软件,并且可以指定安装完特地软件后进行特殊的动作。此外, Windows Post-Install ...

    ionic2-simple-conditional-wizard:使用组件Ionic> 2 Simple Conditional Wizard的简单演示

    Ionic(3.9.2)简单条件向导 ionic 3中处理条件步骤向导的简单组件。...import {IonSimpleWizard} from '../pages/ion-simple-wizard/ion-simple-wizard.component'; import {IonSimpleWizardStep} from '../pages

    python arcgis add-in wizard 批量根据图层要素进行逐个截图,批量截图,批量截影像

    python arcgis add-in wizard 批量根据图层要素进行逐个截图,批量截图,批量截影像,里面包含python源代码及打包好的.esriaddin文件,可直接使用,或修改成自己想要的效果。

    无忧隐藏-HideWizard 6.8

    无忧隐藏-HideWizard 6.8 简体中文绿色破解版.... 窗口隐藏-文件夹隐藏-进程隐藏工具软件 够用就行

    jquery-smartwizard:很棒的jQuery步骤向导插件

    jQuery Smart Wizard v5 很棒的jQuery步骤向导插件。 jQuery Smart Wizard是jQuery的可访问步骤向导插件。 为您的表单,结帐屏幕,注册步骤等提供简洁时尚的界面。易于实现,Bootstrap兼容性,可自定义的工具栏,...

    qt-win-opensource-4.7.4-vs2008

    2. 项目设置:新建或导入项目时,选择Qt Wizard模板,选择对应的Qt版本和模块,确保项目配置正确。 3. moc预处理器:Qt的moc(Meta-Object Compiler)工具用于处理C++的元对象系统,处理包含`Q_OBJECT`宏的类,生成...

    axis2-eclipse-codegen-wizard.zip与Axis2_Service_Archiver.zip

    标题中的"axis2-eclipse-codegen-wizard.zip"与"Axis2_Service_Archiver.zip"是两个与Apache Axis2相关的Eclipse插件。Apache Axis2是Web服务框架的一个强大实现,它提供了创建、部署和管理Web服务的能力。下面将...

    ADRV9008-x-ADRV9009-profile-config-tool-filter-wizard-v2.4.zip

    《ADRV9008-x-ADRV9009-profile-config-tool-filter-wizard-v2.4.zip》是一个关于ADRV9008和ADRV9009射频收发器配置工具的压缩包,其中包含了一份用户指南和一个名为“FilterWizard_v2.4”的软件。这个工具主要用于...

    Sigrity-SystemExplorer-Via Wizard Application Note.rar

    Sigrity-SystemExplorer-Via Wizard Application Note.rar

    axis2-eclipse-codegen-wizard-1.4.zip

    "axis2-eclipse-codegen-wizard-1.4.zip" 是一个用于 Eclipse IDE 的插件,帮助用户自动生成 Axis2 Web 服务客户端或服务器端代码,从而简化开发流程。 这个插件版本1.4是针对 Axis2 的代码生成向导,适用于 ...

    自定义jquery-wizard插件

    - **logo.png, wizard-steps-separator.png, close.png**:其他辅助图形,可能用于装饰或功能元素,如关闭按钮或步骤之间的分隔符。 2. **使用方法:** - 首先,确保在HTML文档中引入jQuery库(`jquery.min.js`)...

    Laravel开发-laravel-install-wizard

    **Laravel 开发:Laravel-Install-Wizard 深度解析** 在 Laravel 开发领域,Laravel-Install-Wizard 是一个非常实用的工具,它为开发者提供了便捷的方式来创建 Laravel 5.2 应用程序。这个向导安装程序简化了项目的...

    EBS12-Patch Wizard-EDU41E3Y.pdf

    EBS12-Patch Wizard-EDU41E3Y.pdf

    UG_OPEN_API_VC7_Wizard

    UG_OPEN_API_VC7_Wizard是UG(Unigraphics Solutions)开放API中针对Visual Studio 7(也称为Visual Studio .NET 2005)的向导文件。这个工具主要用于帮助开发者在VC++环境中便捷地创建和配置UG Open API的工程,...

    无忧隐藏-HideWizard v9.20

    "无忧隐藏-HideWizard v9.20"是一款专业的文件和文件夹隐藏工具,旨在为用户提供安全、便捷的隐私保护方案。这款软件的核心功能在于帮助用户隐藏计算机中的敏感信息,防止未经授权的访问或误操作,确保个人数据的...

    aWizard-aWizard

    标题 "aWizard-aWizard" 暗示我们正在处理一个与手机或移动设备相关的软件工具,特别是关于将“水货”设备转变为“行货”的过程。描述中的"P800水货机改行货"表明这可能是针对P800型号手机的一个程序,其目的是使非...

Global site tag (gtag.js) - Google Analytics