我已将图像 (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;
但是无论何时用户将鼠标移开(当他离开图像时),它都不会撤消已完成的操作(变回 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;
在哪里
{ TImage }
procedure TImage.CMMouseEnter(var Message: TMessage);
begin
// Do something
end;
procedure TImage.CMMouseLeave(var Message: TMessage);
begin
// Do something else
end;
此示例采用插入器类的形式,但当然您最好制作一个适当的子类化控件。