消息高手留步!!怎么对一个控件继承鼠标移上和离开的事件!! mm_MouseEnterMM_MouseLeave响应这两个消息! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TYourComponent=class(xxx)private procedure cmmouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure cmmouseLeave(var Message: TMessage); message CM_MOUSELEAVEimplementationprocedure Tyourcomponent.cmmouseEnter(var Message: TMessage);begin fuck japan..................end;procedure Tyourcomponent.cmmouseLeave(var Message: TMessage);begin fuck japan again..................end; TYourComponent=class(xxx)private procedure cmmouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure cmmouseLeave(var Message: TMessage); message CM_MOUSELEAVEimplementationprocedure Tyourcomponent.cmmouseEnter(var Message: TMessage);begin fuck japan..................end;procedure Tyourcomponent.cmmouseLeave(var Message: TMessage);begin fuck japan again..................end; 多谢各位老大,但是我还有一点困惑,我所用的控件是整个form中的一个,比如我用了3个image,怎么使这些image具有这两个消息??? 那你最好写成控件了。 TImageInOut = class(TImage) private FOnMouseIn:TNotifyEvent; FOnMouseOut:TNotifyEvent; procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; protected public { Public declarations } published property OnMouseIn: TNotifyEvent read FOnMouseIn write FOnMouseIn; property OnMouseOut: TNotifyEvent read FOnMouseOut write FOnMouseOut; end;procedure TImageInOut.CMMouseEnter(var Message: TMessage);begin inherited; if Assigned(FOnMouseIn) then FOnMouseIn(Self);end;procedure TImageInOut.CMMouseLeave(var Message: TMessage);begin inherited; if Assigned(FOnMouseIn) then FOnMouseOut(Self);end; 1,没有必要定义一个自己的TNotifyEvent, 只要Publish TControl.OnMouseEnter 和 TControl.OnMouseLeave 即可。2,也可以使用动态Sub-Class技术,看看Delphi的帮助,关注以下几点: property WindowProc; procedure WndProc(...); 在新的WndProc(...)中拦截消息CM_MOUSEENTER CM_MOUSELEAVE并处理 注意:这两个消息是delphi自定义的并且是级别最低的消息,也即在TApplication 处理完其他消息后才向TControl发送的消息。不清楚的地方可继续探讨。 一个简单问题 PSafeArray在DELPHI中如何使用 Dehphi中如何做一个Release版本应用程序?(在线等) 请教:在dbgrid中是否可固定某一列 如何在From中插入一个月历,点击时可以取到日期的值? delphi能否完成网络数据库访问 Beep怎么没有声音? 编写COM的时,传参数的问题 关于RichEdit的问题。 多个TADOQuery控件可以共享一个TADOConnection控件,它们可以同时对数据库进行插入操作吗? 怎么改变一个form的背景图片,让它可以层铺显示一个图片?? 高手请进。。。。
procedure cmmouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure cmmouseLeave(var Message: TMessage); message CM_MOUSELEAVEimplementationprocedure Tyourcomponent.cmmouseEnter(var Message: TMessage);
begin
fuck japan..................
end;procedure Tyourcomponent.cmmouseLeave(var Message: TMessage);
begin
fuck japan again..................
end;
procedure cmmouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure cmmouseLeave(var Message: TMessage); message CM_MOUSELEAVEimplementationprocedure Tyourcomponent.cmmouseEnter(var Message: TMessage);
begin
fuck japan..................
end;procedure Tyourcomponent.cmmouseLeave(var Message: TMessage);
begin
fuck japan again..................
end;
private
FOnMouseIn:TNotifyEvent;
FOnMouseOut:TNotifyEvent;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
protected
public
{ Public declarations }
published
property OnMouseIn: TNotifyEvent read FOnMouseIn write FOnMouseIn;
property OnMouseOut: TNotifyEvent read FOnMouseOut write FOnMouseOut;
end;
procedure TImageInOut.CMMouseEnter(var Message: TMessage);
begin
inherited;
if Assigned(FOnMouseIn) then FOnMouseIn(Self);
end;
procedure TImageInOut.CMMouseLeave(var Message: TMessage);
begin
inherited;
if Assigned(FOnMouseIn) then FOnMouseOut(Self);
end;
property WindowProc;
procedure WndProc(...);
在新的WndProc(...)中拦截消息CM_MOUSEENTER CM_MOUSELEAVE并处理
注意:这两个消息是delphi自定义的并且是级别最低的消息,也即在TApplication 处理完其他消息后才向TControl发送的消息。不清楚的地方可继续探讨。