关闭

Delphi接口的底层实现

Delphi接口的底层实现引言       接口是面向对象程序语言中一个很重要的元素,它被描述为一组服务的集合,对于客户端来说,我们关心的只是提供的服务,而不必关心服务是如何实现的;对于服务端的类来说,如果它想实现某种服务,实现与该服务相关的接口即可,它也不必与使用服务的客户端进行过多的交互。这种良好的设计方式已经受到很广泛的应用。    早在Delphi 3的时候就引入了接口的概...
阅读(6493) 评论(5)

从普通函数到对象方法 ------Windows窗口过程的面向对象封装

从普通函数到对象方法------Windows窗口过程的面向对象封装 开始,由VirtualAlloc想起      我在查看VirtualAlloc这个API的时候,思绪竟然跳到另一个地方去了。那是以前阅读VCL源码时遗留下来的问题,Classes单元的MakeObjectInstance函数调用了VirtualAlloc,我甚是不解,为什么Delphi提供了那么多内存分配函...
阅读(6999) 评论(25)

改变Edit的光标

    看着Edit的光标,是不是觉得了无生趣,想不想换个形状来玩玩,其实很简单,且听我道来。    Edit是Windows的标准控件,它是一个系统范围窗口类,所以任何应用程序都能创建它。其实Edit本质上也是一个窗口,MS实现了它却不开放源代码,只暴露出一些接口给我们操作。Edit的光标(Caret)没有意外,就是通过CreateCaret,ShowCaret等API显示出来的。Edit似...
阅读(3529) 评论(2)

SourceTo 1.1出来了!!!好用的源代码转换工具,完全开放源代码!!!

自上次发布SourceTo1.0以来,已经时融半年,这半年实在没有时间,但这段时间终于狠下心将其升级到1.1版本。1.1版本较之1.0有许多改进和扩展:1、解决了字符串转义符的问题,至此词法高亮文件总算完整了。2、原来目标文件可以转换成HTML,现在也可以转换成RTF了,这真是一个激动人心的增强,可惜它不支持中文显示,会出乱码,只怪我时间有限,RTF格式研究不深,那位有兴趣的能解决中文...
阅读(2850) 评论(6)

Delphi事件的广播2

上篇文章写了将事件分离成类的方法来实现事件的广播,这次将参考观察者模式来实现事件的广播。模式中主要有这两个角色:发布者:发布者保存着一张观察者的列表,以便在必要的时候调用观察者的方法。观察者:观察者是现实某些特定接口的类,对于发布者来说,它只关注这些接口,并不关注观察者具体是什么类。为了让发布者更具通用性,我写了一个发布者的父类,它负责增删和管理观察者,一个类只要继续这个类,马上就...
阅读(2770) 评论(10)

Delphi事件的广播

    明天就是五一节了,辛苦了好几个月,借此机会应该尽情放松一番。可是想到Blog好久没有写文章,似乎缺些什么似的。这几个月来在项目中又增长了许多经验,学到许多实际应用的知识。不如把一些比较有用的记录下来,供朋友们参考可好。我想到Delphi的事件,那可真是个方便的东西,初学者在窗体上拉几个控件,并指定它们的事件,写几句代码,立刻就得到他们想要的效果。可是事件在方便的同时也有一个不足之处...
阅读(4272) 评论(7)

线程杂谈3

(************************************************(* Subject:   线程杂谈3(* Author: linzhenqun(风)(* Time:      2006-3-25(* Blog:      http://blog.csdn.net/linzhengqun(* E-mail: linzhengqun@163.co...
阅读(2696) 评论(4)

线程杂谈2

作者:linzhenqun(风)时间:2006-2-6Blog: http://blog.csdn.net/linzhengqun----------------------------------------------------------------------------------------------------- 前言上次写了一篇关于线程的文章,其中有介绍...
阅读(3385) 评论(3)

SourceTo 1.0发布

近几篇技术文章所贴的代码都有词法高亮的效果。这是用了我近期写的一个源代码转HTML的工具:SourceTo。它可以生成各种语言的词法高亮文件,然后根据该词法文件将源代码转成HTML文件。现在将它发布出来,给大家使用。 下面是几种语言源代码的高亮效果:1 Delphitype  TForm1 = class(TForm)    Button1: TButton;    proce...
阅读(2899) 评论(23)

线程杂谈

前言由于项目的关系,所以和线程的接触颇多,常常遇到问题,常常看TThread的代码,又常常想一些办法来解决遇到的问题,所以就有了这篇文章。 正文我们常有工作线程和主线程之分,工作线程负责作一些后台操作,比如接收邮件;主线程负责界面上的一些显示。工作线程的好处在某些时候是不言而喻的,你的主界面可以响应任何操作,而背后的线程却在默默地工作。VCL中,工作线程执行在Execute方法中,你必须从TThr...
阅读(4453) 评论(12)

程序只运行一次并激活原来的程序

我们的程序有时候只允许运行一次,并且最好的情况是,如果程序第二次运行,就激活原来的程序。网上有很多的方法实现程序只运行一次,但对于激活原来的窗口却都不怎么好。关键就在于激活原来的程序,一般的做法是在工程开始时,打开互斥量对象,如果打不开表示程序还没有运行,创建一个互斥量对象;如果打得开表示程序已经运行了,查找程序中一个特定的窗口,一般是主窗口,然后发送一个自定义消息,主窗口在这个消息处理中激活...
阅读(7102) 评论(8)

XML和对象属性互转的基类

本人做了一个XML和对象属性互转的基类,现在放上来有兴趣拿去看一下,用法很简单,声明一个BaseConversion的子类,该子类与你想转换的对象相对应,然后覆盖基类的两个虚方法,然后在里面写元素与对象属性的转换即可以,废话少说了,还是看代码了,例子也懒得去写了,相信不会很难看懂的:unit XMLConversion; {*************************************...
阅读(2384) 评论(0)

Delphi对于控件的SuperClassing

Windows内部预定义了一些通用的控件,我们在用这些控件的时候不必再调用RegisterClass注册一个窗口类,只要直接调用CreateWindows,并指定一个预定义的窗口类就可以,比如,我们要创建一个Button,只要用如下形式即可:CreateWindows(.., ‘BUTTON’,...)。但用Delphi写出来的程序,用SPY看它的某个控件的窗口类名,却是这个控件类的ClassNa...
阅读(2791) 评论(0)

浅析Delphi Container库

与Java和C++相比,Delphi对容器的支持实在少得可怜。Java有强大的集合框架,C++更有STL,Delphi有什么呢,不就是TList几个小巧的列表类,而TCollection系列的类更多只是为了可视控件而存在的,真正意义上的容器类几乎没有。一日在Google上随意的敲上Delphi Container字样,没想到竟搜到一个SourceForge的开源项目,它在主页上是这样写的:DCLX...
阅读(3962) 评论(1)

ListView扩展

在论坛上看一个贴,问能不能在ListView的列表头移动时响应事件,随翻查了ListView的事件,发现竟没有。于是自己动手来写一个。其实要响应这个事件也不算难,关键是了解ListView的结构,ListView的列头其实也是一个窗口,不信用Spy看一下。我们只要获得了这个头的句柄,那它的一举一动便逃不过程序的眼睛了(^ ^)。获得了句柄,再用一个新的窗口过程代替旧的窗口过程,当然这个新的窗口过程...
阅读(2853) 评论(2)

Delphi的持久化

在论坛上常见到有帖子问如何拷贝控件的问题。其实Delphi提供了非常好的持久化机制,笔者写了一个类,提供两个方法,一个是将多个控件保存到流中,另一个是从流中读出控件。下面是源代码:unit ComPersist; interfaceuses  Windows, Classes, Controls; type  TComPersister = class  private    FRoot: TCo...
阅读(4811) 评论(2)

钩子及其应用(五)

下面就是DLL的源代码了:首先是声明一些共公的数据结构的单元,这个单元在DLL中用,也在程序中用的:unit wdSpyCommon; {******************************************* * brief: 消息Spy用到的数据结构等的声明文件 * autor: linzhenqun * date: 2005-9-25 * email: linzhengqun@...
阅读(2971) 评论(0)

钩子及其应用(四)

{三}简单的消息Spy的实现凡写过一些程序的人,大都用过VS的Spy++工具,非常好用。Delphi也有一个类似的工具叫WinSignt32,说实话,比Spy++可是差远了。这一篇将介绍如何实现一个简单的消息Spy工具,其功能大概类似于Spy++的Spy Message,以此来学习全局钩子的用法。说点题外话,这些知识都是笔者经过实践学习而得来,其间不乏屡遭碰壁者,因此想写出来,帮助有兴趣者更快地学...
阅读(3048) 评论(0)

钩子及其应用(三)

unit wdMacro; {******************************************* * brief: 日志钩子实现宏功能 * autor: linzhenqun * date: 2005-9-11 * email: linzhengqun@163.com * blog: http://blog.csdn.net/linzhengqun***************...
阅读(2516) 评论(0)

钩子及其应用(二)

{二}宏功能的实现我们写程序,常将完成一个特定功能的代码写到一个函数中,以后直接调用便可实现该功能。对于宏,其实也是相同的原理,将一些键盘和鼠标的操作“录制”起来,以后如果要重复这些操作,只需要将这些操作“回放”就行了。许多编辑软件都有宏的功能,比如Word。Delphi也有,按Ctrl+Shift+R进行宏录制,再按Ctrl+Shift+R结束,最后按Ctrl+Shift+P即可回放刚才的输入操...
阅读(3229) 评论(6)
72条 共4页首页 上一页 1 2 3 4 下一页 尾页
    个人资料
    • 访问:320221次
    • 积分:4162
    • 等级:
    • 排名:第8185名
    • 原创:72篇
    • 转载:0篇
    • 译文:0篇
    • 评论:396条
    文章分类
    最新评论