具有可扩展的系统设计思想 软件发布后,由于客户的需求需对某些模块增加功能或增加模块。当用户升级后可实现。 问题是最初应如何设计才能实现这样的要求??顶者均有分! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 做动态连接库DLL吧 也不见的很复杂 http://www.aidelphi.com/6to23/subpage/plugin.htm让你的程序支持插件 相信各位应该都用过WinAmp,也相信它对插件的支持是它最终流行起来的主要原因。能不能让我们自已的程序也支持插件呢,以面我们就用Delphi来为我们编第一个支持插件的程序。对于一般用户来说,插件就是一个DLL文件,但与一般DLL不同的是,插件支持对主程序功能的扩展,主程序没有插件也一样能运行,但一般的DLL大多数是主程序不可缺少的部份。当需要经常为客户更新应用程序版本时,插件也许是你不错有选择。首先,在编写应用程序之前需要清楚应用程序本身可以完成什么主要功能,需要扩展什么样的功能,因为插件本身是通过主程序提供的特定接口来与主程序进行行交互的,在编写主程序时你需要确定这些接口。在本例中,定义了两个接口,一个完成插件的初始化,主要是指选择并载入相应的图片,另一个是在主Form重绘时绘制出相应的图片,其中第二个接口需要传递画布句柄和绘制区域。以下是主程序主Form interface段的定义: TPluginDescribe = Function:Boolean; stdcall; TPluginDrawDescribe = procedure(DC:HDC;Rect:TRect); stdcall; TForm1 = class(TForm) ListBox1: TListBox; procedure FormCreate(Sender: TObject); procedure ListBox1DblClick(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private LibHandle: HMODULE; DwarProc: TPluginDrawDescribe; procedure LoadPlugins; procedure LoadPlugin(sr: TSearchRec); { Private declarations } public { Public declarations } end; http://cache.baidu.com/c?word=%B2%E5%3B%BC%FE%2Cdelphi%2Cvar&url=http%3A//www%2Eyesky%2Ecom/20001008/120667%2Eshtml&b=2&user=baiduDelphi 插件创建、调试与使用应用程序扩展 2000-10-08· ·MiracleZ··delphi技术网 有没有使用过Adobe Photoshop如果用过,你就会对插件的概念比较熟悉。对外行人来说,插件仅仅是从外部提供给应用程序的代码块而已(举个例子来说,在一个DLL中)。一个插件和一个普通DLL之间的差异在于插件具有扩展父应用程序功能的能力。例如,Photoshop本身并不具备进行大量的图像处理功能。插件的加入使其获得了产生诸如模糊、斑点,以及其他所有风格的奇怪效果,而其中任何一项功能都不是父应用程序自身所具有的。 对于图像处理程序来说这很不错,可是为什么要花偌大的力气去完成支持插件的商业应用程序呢?假设,我们举个例子,你的应用程序要产生一些报表。你的客户肯定会一直要求更新或者增加新的报表。你可以使用一个诸如Report Smith的外部报表生成器,这是个不怎么样的解决方案,需要发布附加的文件,要对用户进行额外的培训,等等。你也可以使用QuickReport,不过这会使你身处版本控制的噩梦之中——如果每改变一次字体你就要Rebuild你的应用程序的话。 然而,只要你把报表做到插件中,你就可以使用它。需要一个新的报表吗?没问题,只要安装一个DLL,下次应用程序启动时就会看见它了。另外一个例子是处理来自外部设备(比如条形码扫描器)的数据的应用程序,为了给用户更多的选择,你不得不支持半打的各种设备。通过将每种设备接口处理例程写成插件,不用对父应用程序作任何变动就可以获得最大程度的可伸缩性。 简单的用DLL,复杂地用插件,更复杂地做成接口COM如Delphi的IDE一样 一般把需要该动很多的都做成dll,那么以后直接改dll就行了,但要注意做好接口的设计 前期的系统分析、架构非常重要,系统设计时选择合适的技术方案进行编码实出。采用组件式、插件、COM接口、分层次构件服务开发。 还是用dll,相对来说还是比较简单的 paint重写为什么卡死? delphi + oracle 调用带参数过程出错 delphi7.0+access 求sql语句写法 在线等!!!!!!!急急急!!!!!!!!!!!!! 急啊! 什么原因会出现这个错误信息? 怎样判断,获得焦点的是哪一个控件? 桌面图标透明(原码) 助手库房信息管理系统,源码低价发行,详情请进!!!!!!! 如何在客户端对SQL server数据库进行备份和恢复??? Database控件越多,是否速度越快呢? 高分求:如何实现联机帮助?(分不够可加) 关于socket端口问题?
2000-10-08· ·MiracleZ··delphi技术网
有没有使用过Adobe Photoshop如果用过,你就会对插件的概念比较熟悉。对外行人来说,插件仅仅是从外部提供给应用程序的代码块而已(举个例子来说,在一个DLL中)。一个插件和一个普通DLL之间的差异在于插件具有扩展父应用程序功能的能力。例如,Photoshop本身并不具备进行大量的图像处理功能。插件的加入使其获得了产生诸如模糊、斑点,以及其他所有风格的奇怪效果,而其中任何一项功能都不是父应用程序自身所具有的。
对于图像处理程序来说这很不错,可是为什么要花偌大的力气去完成支持插件的商业应用程序呢?假设,我们举个例子,你的应用程序要产生一些报表。你的客户肯定会一直要求更新或者增加新的报表。你可以使用一个诸如Report Smith的外部报表生成器,这是个不怎么样的解决方案,需要发布附加的文件,要对用户进行额外的培训,等等。你也可以使用QuickReport,不过这会使你身处版本控制的噩梦之中——如果每改变一次字体你就要Rebuild你的应用程序的话。
然而,只要你把报表做到插件中,你就可以使用它。需要一个新的报表吗?没问题,只要安装一个DLL,下次应用程序启动时就会看见它了。另外一个例子是处理来自外部设备(比如条形码扫描器)的数据的应用程序,为了给用户更多的选择,你不得不支持半打的各种设备。通过将每种设备接口处理例程写成插件,不用对父应用程序作任何变动就可以获得最大程度的可伸缩性。
更复杂地做成接口COM
如Delphi的IDE一样
采用组件式、插件、COM接口、分层次构件服务开发。