牛人留步之二,我已经会写Dll型的expert了,怎么让Delphi在启动时能调用它!(ModelMaker,能嵌入到菜单的那种)(300分)

D

dhl2001

Unregistered / Unconfirmed
GUEST, unregistred user!
你制作一个package,
让package的初始化部分加载这个DLL,然后装载这个包。
 
这不是标准做法吧?
 
哪你是要写专家了,d5开发人员指南上有1章写了
找到看吧
或者下载gexpert的源代码看
 
在注册表里写
HKEY_CURRENT_USER/Software/Borland/Delphi/5.0/Experts
新建一个字符串项,写入你的DLL的完整路径和文件名就行了
 
本文出现的背景:
一、由于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
零点天地(转载请保留此链接)
版权声明
 
Gexpert有一个专家管理器,使用它就可以了
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
877
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部