转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
初探Delphi 7 中的插件编程         ★★★★

初探Delphi 7 中的插件编程

作者:闵涛 文章来源:闵涛的学习笔记 点击数:4831 更新时间:2009/4/23 18:26:40
                Result:=True

……

 

4.4    一个具体的实现方法

为了结构化管理插件,方便今后的系统扩充,我们可以结合数据库记录可用的DLL信息,然后通过查询数据库记录动态访问DLL程序。

4.4.1        系统模块表设计

对于MIS系统,可以利用已有的DBS条件建立一个系统模块表,记录DLL文件及映射到系统模块中的相关信息

字段名

作用

类型

AutoID

索引

INT

modAlias

模块别称

VARCHAR

modName

模块名称

VARCHAR

modWndClass

窗体唯一标识

VARCHAR

modFile

DLL路径

VARCHAR

modMemo

备注

TEXT

n         模块别称是用来在编程设计阶段统一命名的规则,特别是团队开发时可以供队员参考。

n         模块名称将作为ACAPTION参数传递给SHOWDLLFORM函数作为DLL窗口的标题。

n         窗体唯一标识是DLL子模块中主窗口的CLASSNAME,用来在运行时确定要控制的窗口。

n         DLL路径保存DLL文件名称,程序中将转换为绝对路径。

 

4.4.2        插件信息数据结构

定义一个记录插件相关信息的数据接口可以集中控制DLL插件。在Interface部分加入如下代码:

type

    //定义插件信息类

    TMyPlugins = class

        Caption:String;            //DLL窗体标题

        DllFileName:String;        //DLL文件路径

        WndClass:String;           //窗体标识

        UserID:string;             //用户名

        ProcAddr:THandle;          //LOADLIBRARY载入的库句柄

        FuncAddr:Pointer;          //SHOWDLLFORM函数指针

        FuncFreeAddr:Pointer;      //FREEDLLFORM函数指针

    end;

……

为每个插件创建一个TMyPlugins的实例,下文会讨论对这些实例的初始化方法。

 

4.4.3        插件载入函数

在本示例中DLL窗口是在HALL中触发打开子窗口的事件中载入并显示的。按钮事件触发后,先根据插件结构体实例判断DLL是否已经加载,如果已经加载,则控制窗口的显示或关闭;如果没有加载则访问数据表将字段赋值到插件结构体中,然后执行载入、获得指针的工作。

局部代码如下

……
//-----------------------------------------

//Name: OpenPlugin

//Func: 插件信息类控制过程: 初始化==》设置权限==》载入DLL窗口

//Para: APlugin-TMyPlugins; sAlias别名; iFuncValue权限值

//Rtrn: N/A

//Auth: CST

//Date: 2005-6-2

//-----------------------------------------

procedure TFormHall.OpenPlugin(AFromActn: TAction ;APlugin:TMyPlugins; sAlias:string; sUserID:string);

var hWndPlugin:HWnd;

begin

 

    //判断插件窗口是否已经载入

    hWndPlugin:=FindWindow(PChar(APlugin.WndClass),nil);

    if hWndPlugin <> 0 then         //插件窗口已经载入

    begin

        if not IsWindowVisible(hWndPlugin) then

上一页  [1] [2] [3] [4] [5] [6] [7]  下一页


[聊天工具]让IE 7也用上鼠标手势  [常用软件]IE 7出炉,Firefox 2当道.谁才是“王者”?
[常用软件]绕过WGA安装IE 7 Beta3 5450  [VB.NET程序]VB.NET实现DirectSound9 (7) 录音
[VB.NET程序]DirectX 7 编程初步  [VB.NET程序]VB程序员眼中的C# 7
[Delphi程序]DELPHI7 如何在编写可视组件中传递一个事件到组件…  [Delphi程序]Delphi7 的 WebService 与 数据库
[Delphi程序]Delphi7 从子线程中发送消息到主线程触发事件执行  [Delphi程序]Delphi 7 中使用RAVE报表(一)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台