我现在是用MouseMove事件
当鼠标移到图片上时Image1.picture.assign(anotherBMP),
w问题有两点:
一是,会有闪烁,我想是因为鼠标在图片上时,总是触发该事件进行图片赋值。但不知道如何判断图片的相同
二是,当鼠标移开时,如何显示原来的图片
当鼠标移到图片上时Image1.picture.assign(anotherBMP),
w问题有两点:
一是,会有闪烁,我想是因为鼠标在图片上时,总是触发该事件进行图片赋值。但不知道如何判断图片的相同
二是,当鼠标移开时,如何显示原来的图片
控制一个显示一个隐藏
在Image1喝Image2中的onmousemove事件中各写一段代码就可以了!
如果是动态加Image的话!
那就要自己定义onmousemove事件,然后指向它就可以了!
PictureChanged: Boolean;OnMouseMove只能获得鼠标进入的时刻,不能获取鼠标移出的时刻,
可以处理CM_MOUSEENTER和CM_MOUSELEAVE消息
2,在OnMouseMove事件中添加代码即可
unit Myimage;interfaceuses
Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;type
TNewimage = class(TImage)
private
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{ Published declarations }
end;procedure Register;implementationprocedure Register;
begin
//请自己修改
RegisterComponents('Mydpk', [TNewimage]);
end;{ timage1 }procedure TNewimage.CMMouseEnter(var Message: TMessage);
begin
inherited;
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
end;procedure TNewimage.CMMouseLeave(var Message: TMessage);
begin
inherited;
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
end;end.这是我刚刚写的控件,可以解决你的问题,加了两个属性