摘要:1. 建立一个窗体
2. 放一个combobox和listbox
3. 改变component的style为csownerdrawvariable和listbox的style为lbownerdrawvariable。
4. 声明5个tbitmap的全局变量
5. 覆盖form的oncreate.
6. 覆盖combobox的ondraw.
7. 覆盖combobox的onm......
摘要:
delphi模式编程之策略模式(续)
刘 艺
1.3 策略模式在酒店管理系统中的应用
在酒店管理系统中,通常客房的价格不是一成不变的。对于住宿的淡季和旺季、老客户和新客户、散客和团队,都应该有不同的销售策略。显然,销售策略决定了报价。但是基于销售策略的报价体系又不能绑定于某一具体的客户端,因为只有把基于销售策略的报价体系独立出来,才能保证其重用性和可维护性。比如:一种报价体系一方面......
非COM环境下的接口编程--问题,技巧,应用(一)
非com环境下的接口编程------问题,技巧,应用 【程序编程相关:
Delphi图象截取编程示例(8)
】 【推荐阅读:
DELPHI常用函数集及简要范例
】
难度:★★★☆☆ 【扩展信息:
Delphi图象截取编程示例(6)
】
先行知识:delphi/接口/dll/oop
引子:
接口的概念由来已久,早在com出现之前(com应该是95年左右)接口的概念就已经在面向对象的开发中根深蒂固了,著名的«设计模式»(94年出版)中也指出“针对接口编程而不是针对实现编程”.使用接口可以降低软件系统中不同模块的偶合性,利于软件系统的更新与维护.接口的优点绝对不只是出现在com中,事实上在大多数的编程任务中接口都是一个不错的选择.(用delphi开发过web service的朋友知道,delphi也是使用接口来描述web methord的,所以接口的概念在面向对象领域永远不会过时)本文不是一篇讨论com的文章,而是想通过一个例子来说明在delphi中接口的实际作用,以及在开发中可能碰到的问题与所需的技巧.
例子:
※第一印象:
熟悉windowsjava/j2me/code/ target=_blank>程序设计的人应该早已经在他们开发的系统中使用到了dll,如果我们要把对象放入dll中维护(而不仅仅是一些函数与过程)怎么办呢?最容易想到答案是使用com.除此之外还有什么办法呢?使用delphi中的动态包bpl或则一些其他的一些办法(如内存拷贝)也许可以解决问题.不过现在我们要创建一个标准的dll文件,我们可以象使用com一样直接通过接口来操作维护在其中的对象,但又不用象com组件一样需要注册,它应该是如同普通的dll文件样只要加载就可以正常工作.这样的优点是明显的,也许我们正在需要一个如同大多数绘图软件一样允许有插件扩充的程序,那么除了标准的com技术外我们可以将实现约定接口(也就是插件的契约)的对象放在一个标准的dll库中,在主应用程序中根据一份可由用户配置的文件中的不同插件名称与所在路径来依次加载这些dll,这样我们的插件下载到客户的计算机中后根本不用任何注册安装过程,而仅仅只是在主程序中配置它就可以正常工作了.这个过程看起来象这样:
for i:=0 to plugincount-1 do
//plugincount是从配置文件中得到的已经“安装”的插件数目
begin
…
dllhnd[i]:=loadlibrary(plugpath);
//plugpath为每一个dll的路径,以由前面程序从培植文件中得到
@getplugintf:=getprocaddress(dllhnd[i],’getplugintf’);
plugintf[i]:= getplugintf; //getpluginth可以返回一个iunknown的接口
…
end;
现在我们就得到所加载的每一个插件的接口并可进行操作了....
下一页 摘要:
刚刚接触的delphi的朋友,可能最感兴趣的就是它丰富、强大的vcl(可视化构件库)。仅仅向窗体上扔几个构件,甚至不用动手写代码,就能很容易地做出一个有实用价值的程序,真是令人激动。但是,vcl只是delphi的一小部分,delphi的优秀远远不只是表现在vcl上。如果你仅仅停留在使用vcl这一阶段,那么你永远也不可能成为一个真正的delphi高手。记住,必须超越vcl,才能够接触到de......