知识大全 基于Delphi的组件设计之概念[3]

Posted 函数

篇首语:身不饥寒,天未曾负我;学无所获,我何以对天。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 基于Delphi的组件设计之概念[3]相关的知识,希望对你有一定的参考价值。

基于Delphi的组件设计之概念[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Delphi可以截获这个消息 如下定义消息函数

procedure WMLButtonDown(var Message: MLButtonDown);message WM_LBUTTONDOWN;

  在这个消息处理函数中调DOMouseDown DoMouseDown又调 用了MouseDown

  在这个函数里面才到了最重要的部分

  该函数是这样的

procedure TControl MouseDown(Button: TMouseButton;Shift: TShiftState; X Y: Integer);

begin

if Assigned(FOnMouseDown) then FOnMouseDown(Self Button Shift X Y);

end;

  而我们先来看看用户外部是怎么操作的

  他自己定义一个SomeobjMouseDown; 是一个事件处理函数 必须和TMouseEvent的形式一样

Procedure SomeobjMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X Y: Integer);

  然后他这样赋值

someobj onMouseDown:=SomeobjMouseDown;

  当赋值以后 类内部其实是通过onMouseDown属性 将SomeobjMouseDown;与FonMouseDwon关联在一起 也就是说 MouseDown方法中调用了FOnMouseDown(Self Button Shift X Y);其实就等于调用了Procedure SomeobjMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X Y: Integer);

  所以用户就可以在这个自定义的事件方法中写自己的代码 当事件发生时 该类的调度机制就会自动调用这个事件方法啦

  也许有人会问 为什么从消息处理函数要调用DoMouseDown DoMouseDown又调用MouseDown 然后再调用事件方法呢 为什么不直接在消息处理函数WMLButtonDown中调用呢 其实它这样的做的目的是要进行一些保护判断 以及一些消息附加值的转换 使这些值看起来更加直观

  好了 事件就讲了这里 不知道你们明白了没有 可能是我的表达能力不行 但没有关系 到真正做的时候 大家应该能明白了

  四 组件制作步骤

  有了上面的基本概念 其实制作简单组件已经不是什么问题了 而要做真正的组件 还需要有一个正确过程 我们以后学做组件 也会顺着这个过程来做 主要如下

   确定一个祖先类 怎么确定 可以根据上面组件的简要层次结构来确定 如果你想做非可视化组件 可以从继承TComponent开始 如果想做可视要可视化组件 可以从TControl的子类开始

   创建组件的单元 这个在制作组件时再说 不过是在IDE里面做几个操作而已

   给组件写属性 方法 事件 成员 等 这些在上面己有详细说明 是写组件的核心部分 事实上也是后面实践的主要内容

   测试 安装组件和写帮助 这个内容比较次要 后面的例子会讲怎么样安装 包括单个单元 或用包的形式安装 而写帮助 己超出范围 这里就不说了

  关于组件基本概念就到这里讲完了 接下来就是实践了 有了上面的知识 实践起来也不是很难 很多东西都在上面了 而一些高级的特性 会在以后慢慢说的

cha138/Article/program/Delphi/201311/24872

相关参考

知识大全 基于Delphi的组件设计之概念[2]

基于Delphi的组件设计之概念[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  属性可以有

知识大全 基于Delphi的组件设计之简单实例

基于Delphi的组件设计之简单实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!这是一个可以计数

知识大全 基于单件模式的数据库连接组件的设计

  摘要当前在开发多用户信息管理系统时常用的数据库连接方法存在着不足当客户端较多时会在服务端建立过多的连接占用服务器很多宝贵的资源针对这种不足提出一种改进的方案结合单件设计模式的特点和组件的技术建立了

知识大全 基于Delphi的条码打印系统设计与实现

基于Delphi的条码打印系统设计与实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  引言  

知识大全 Delphi深度探索之PItemIDList的基本概念

Delphi深度探索之PItemIDList的基本概念  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 Delphi开发WEB应用程序打印组件[3]

Delphi开发WEB应用程序打印组件[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ()

知识大全 ASP.NET组件设计之传输机制浅析

ASP.NET组件设计之传输机制浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET

知识大全 用Delphi2005学设计模式之工厂方法篇

用Delphi2005学设计模式之工厂方法篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本文完成

知识大全 用Delphi2005学设计模式之简单工厂篇

用Delphi2005学设计模式之简单工厂篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!工厂模式

知识大全 用Delphi语言来学设计模式之简单工厂篇

用Delphi语言来学设计模式之简单工厂篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!