use*_*090 2 delphi image onmousemove delphi-7
我把images(TImage)作为按钮放在我的程序中.我想添加一些额外的效果,所以在OnMouseMove(当用户将鼠标移动到图像上时)图像被另一个图像替换,以便产生额外的效果:
procedure TForm1.Image4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Path, Destination: String;
begin
Path := ParamStr(0);
Destination := Extractfilepath(Path) + 'Images\Image2.bmp';
Image4.Picture.LoadFromFile(Destination);
end;
Run Code Online (Sandbox Code Playgroud)
但是每当用户移开鼠标时(当他离开图像时),它都不会撤消所做的事情(改回Image1).我该怎么做?没有OnMouseLeave事件.我正在使用delphi 7.
首先,你问题中的代码太可怕了!每次光标移动图像控件内的像素时,它都会(重新)加载位图!这就是浪费CPU时间!
无论如何,在现代版本的Delphi中,你只需使用OnMouseEnter和OnMouseLeave事件.我不认为Delphi 7中存在这些,所以你必须做这样的事情:
TImage = class(ExtCtrls.TImage)
protected
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
end;
Run Code Online (Sandbox Code Playgroud)
哪里
{ TImage }
procedure TImage.CMMouseEnter(var Message: TMessage);
begin
// Do something
end;
procedure TImage.CMMouseLeave(var Message: TMessage);
begin
// Do something else
end;
Run Code Online (Sandbox Code Playgroud)
此示例采用插入器类的形式,但当然您可能更好地进行正确的子类控制.