导航
  • 主页
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

急救:如何在控件中自定义事件!?????高手请进!!!!

qyluo 2002-09-11 05:45:17
如何在控件中自定义事件!???????
...全文
106 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
naughtyboy 2002-09-11
你首先要做一个自己的控件,继承自delphi自带的VCL
上面的是一个例子
回复
naughtyboy 2002-09-11
如何给控件添加OnMouseLeave事件

unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
ExtCtrls;
type
TMyImage = class(TImage)
private
FOnMouseLeave: TNotifyEvent;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
protected
public
published
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [TMyImage]);
end;

procedure TMyImage.CMMouseLeave(var Message: TMessage);
begin
inherited;
if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;

end.
回复
u2m 2002-09-11
定义的方法也很简单,和定义属性差不多,只是类型时TNotifyEvent罢了。   
  TNotifyEvent是默认事件,其定义为:
  TNotifyEvent = procedure(Sender: TObject)
  如果你要定义另外形式的事件,就必须这样:先在type后编写
  <事件类型名称> = procedure(<参数>:<类型>)
例如:
  TCustomEvent = procedure(a: Integer; b:String);
然后在public后定义:
   <事件名称>:<事件类型名称>
例如:
  AnEvent: TCustomEvent;
回复

private
FOnChange:TNotifyEvent

published

property OnChange:TNotifyEvent read FOnChange Write FOnChange
回复
netlib 2002-09-11
设一个过程或函数的类型的属性
放到published中就可以了。
回复
发动态
发帖子
Delphi
创建于2007-08-02

4807

社区成员

Delphi 开发及应用
申请成为版主
社区公告
暂无公告