Delphi向导制作基本介绍(0分)

  • 主题发起人 Pan Ying
  • 开始时间
P

Pan Ying

Unregistered / Unconfirmed
GUEST, unregistred user!
我写的一篇新的文章,关于Delphi向导的编写,如果你觉得写得不错,请提前一下,
如果你有什么意见,写信告诉我,谢谢!
相关的程序源码我已上载到http://delphi.mychangshu.com/,自己的主页还没来得及更新。
本文的原始地址在http://go.163.com/zeroworld/program/expert.htm
//以下为正文
本文出现的背景:
一、由于CNPack(http://cnpack.delphibbs.com)成立,yygw提出要编写向导,而网络控
件还没有设计完成,没有事的我就写了这篇文章用来简介向导的编写,献给各位有志于编
写向导的朋友;二、因为昨天是春节放假兼情人节,而没有女友的我也闲来无事,只能编
写一些文章来打发无聊时间:p
本文目的:
介绍Delphi中向导编写的基本知识,如果你只对界面编写有兴趣的话,那你不适合本文。
好了,说了这么多废话,也应该开题了。不知道你对组件编写了解吗,其实向导的编写
跟组建的编写差不多,组件一般继承于TComponent,而向导继承于TIExpert(ExptIntf.pas)
。下面讲一讲如何从TIExpert继承编写向导。
先看一下TIExpert的接口声明:
TIExpert = class(TInterface)
public
{ Expert UI strings }
function GetName: string;
virtual;
stdcall;
abstract;
function GetAuthor: string;
virtual;
stdcall;
abstract;
function GetComment: string;
virtual;
stdcall;
abstract;
function GetPage: string;
virtual;
stdcall;
abstract;
function GetGlyph: HICON;
virtual;
stdcall;
abstract;
function GetStyle: TExpertStyle;
virtual;
stdcall;
abstract;
function GetState: TExpertState;
virtual;
stdcall;
abstract;
function GetIDString: string;
virtual;
stdcall;
abstract;
function GetMenuText: string;
virtual;
stdcall;
abstract;

{ Launch the Expert }
procedure Execute;
virtual;
stdcall;
abstract;
end
我们编写的向导,将重载每个对象方法,使Delphi能够调用,即使里面有一些会是无用
的代码,下面介绍每个对象方法的作用。
GetStyle - 返回向导的类型,为以下四种类型。
esStandard - 显示在Help的菜单里
esForm - 一个Form的向导
esProject - Project的向导
esAddIn - 如同Code View一样的向导,一般作辅助设计
GetName - 返回向导的名称。
GetAuthor - 返回向导的作者,可使用在esForm和esProject中。
GetComment - 返回向导的解释,可使用在esForm和esProject中。
GetPage - 返回应处在Object Repository中的哪一页,如'New'等,可使用在esForm和
esProject中。
GetIDString - 用来表示向导的信息,必须是唯一的。
GetMenuText - 菜单上的文字,包括'&',可使用在esStandard中。
GetGlyph - 图标,可使用在esForm和esProject中。
GetState - 现在向导的状态。
Execute - 向导的调用,只用在esForm、esProject、esStandard中。
重载好这些对象方法以后,当Execute函数有了具体内容后,向导就可以算编写好了,
像组件一样也要注册才能使用,向导的注册使用RegisterLibraryExpert这个函数就可以
了。
本来应该给一段源代码,但我给出了一个例子,不知道大家满意吗。这个例子是一个
向导,是一个生成向导框架的向导(有趣吧),看了这个例子应该对向导的编写有了一
定的了解。
在向导里还要调用一些特别的对象,如同平常的Screen一样,在向导编写里有
ToolServices对象,它的不少方法用来控制Delphi和取得Delphi的属性,如CloseProject
用来关闭当前的工程,用GetUnitCount和GetUnitNames来的到当前的单元列表,这样就能
在向导里控制Delphi了。
以上介绍的都是在Delphi中如何建立DCU向导,然而Delphi中还有dll向导,在注册表
的HKEY_CURRENT_USER/Software/Borland/Delphi/5.0/Experts键值下列出了当前Delphi
使用的Dll向导。那么应该如何建立dll向导呢。先按以上步骤建立一个pas文件,然后生
成一个dll文件,里面调用该单元,并输出一个函数声明如下
function(ToolServices: TIToolServices;
RegisterProc: TExpertRegisterProc;
var Terminate: TExpertTerminateProc): Boolean stdcall,
并使用ExpertEntryPoint作为函数入口输出,Delphi将调用该函数,并带入相关的一些全局变量,如ToolServices,
在该函数中使用RegisterProc过程注册你的向导,就可以在Delphi中使用了。
好了,现在你应该了解向导制作的基本步骤了吧,如果你对向导好有什么疑问,可以查看
《Delphi Developer's HandBook》,里面有更详细的介绍,也可以写信给我
(panying@sina.com,不过我也懂得不多)。相关的程序源码请到这里下载
(http://cgi.zeroworld.533.net/download.pl?Kind=1&File=7,如果cgi服务器down掉了,
直接到这里下载)



Pan Ying,2002.2.15
零点天地(转载请保留此链接)
版权声明
 
呵呵,Pan Ying兄速度很快啊!
这几天在考虑CnPack的具体开发形式和网站建设问题,估计下个月CnPack开发有望走入正轨。
师兄看的资料可能比较旧了吧,小弟以前看过的大部分资料对Expert的编写也是这么说的。
不过从D4开始,Borland已经用真正的接口形式来实现Open Tools Api了,Delphi的ToolsApi单元
详细地定义了所有的服务接口和编写专家需要实现的接口,小弟本来也写有简单的Demo,后来忙得
忘了放哪去了:)
网上能找到的接口形式的专家方面的资料少得可怜(事实上即使旧格式的资料也很少),Pan Ying
兄有空可仔细分析一下ToolsApi单元中的内容,写点文档出来让我们参考哟!
 
不好意思,因为到大学以后,
买书的钱不够,也没有买什么书,
因此手头只有Delphi3的资料,
我再去找找看吧,
谢谢提醒!
 
顶部