大家好!
一个Image控件,在鼠标移动上去的时候是一张图,鼠标离开的时候又是另一张图,按下去又是一张图。下面是已实现的部分代码:
procedure CMMouseEnter(var msg:tmessage);message CM_MOUSEENTER;
procedure CMMouseLeave(var msg:tmessage);message CM_MOUSELEAVE;procedure TForm1.CMMouseEnter(var msg:tmessage);
var
obj:TObject;
begin
obj:=Tobject(msg.lParam);//鼠标所在的控件
if obj<>nil then
begin
if obj=image1 then
ImageList1.GetBitmap(0,Image1.Picture.Bitmap);
Image1.repaint;
end;
end;procedure TForm1.CMMouseLeave(var msg:tmessage);
var
obj:TObject;
begin
obj:=Tobject(msg.lParam);//鼠标所在的控件
if obj<>nil then
begin
if obj=image1 then
begin
ImageList1.GetBitmap(1,Image1.Picture.Bitmap);
Image1.repaint;
end;
end;
end;还有Click的代码也差不多~问题是:我有多个图(其实是用来模拟类似PageControl的按钮的),不仅要做到以上的效果,而且还要做到--如果一个Image当前是被按下的,那么它就不能响应鼠标的移入和移出事件!
我已试过用Enable:=False;但是没有用,谁能够帮我解决一下~谢谢!
一个Image控件,在鼠标移动上去的时候是一张图,鼠标离开的时候又是另一张图,按下去又是一张图。下面是已实现的部分代码:
procedure CMMouseEnter(var msg:tmessage);message CM_MOUSEENTER;
procedure CMMouseLeave(var msg:tmessage);message CM_MOUSELEAVE;procedure TForm1.CMMouseEnter(var msg:tmessage);
var
obj:TObject;
begin
obj:=Tobject(msg.lParam);//鼠标所在的控件
if obj<>nil then
begin
if obj=image1 then
ImageList1.GetBitmap(0,Image1.Picture.Bitmap);
Image1.repaint;
end;
end;procedure TForm1.CMMouseLeave(var msg:tmessage);
var
obj:TObject;
begin
obj:=Tobject(msg.lParam);//鼠标所在的控件
if obj<>nil then
begin
if obj=image1 then
begin
ImageList1.GetBitmap(1,Image1.Picture.Bitmap);
Image1.repaint;
end;
end;
end;还有Click的代码也差不多~问题是:我有多个图(其实是用来模拟类似PageControl的按钮的),不仅要做到以上的效果,而且还要做到--如果一个Image当前是被按下的,那么它就不能响应鼠标的移入和移出事件!
我已试过用Enable:=False;但是没有用,谁能够帮我解决一下~谢谢!
1,设一个boolean成员变量FbClicked,鼠标按下时设置其为true,
2。在鼠标的移入和移出事件里首先判断 FbClicked,
if FbClicked then
exit;
不就行了,试试看。