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

qyluo 2002-09-11 05:45:17
如何在控件中自定义事件!???????
...全文
142 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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中就可以了。

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧