如何捕获窗口中的鼠标点击消息
1个回答
展开全部
如何捕获窗口中的鼠标点击消息?包括在窗口中的其它控件上点击
我想让我某一控件实现Combobox下拉框的效果,当鼠标不在自己圆闭区域内点击时隐藏
mouseDown事件或者是MousePress我记不清了,自己找找好了
在form窗体的事件哦
你试过吗?在窗口的其它控件上单击时,根本不触发Form的MouseDown事件
你可以写一个函数, 判断当前鼠标指针下的控件是否是 你所想隐藏的控件.然后在每个控件的click中调用aaa
procedure TForm1.aaa(sender:Tobject);
var
p:TPoint;
mousecontrl:TWincontrol;
begin
GetCursorPos(P);
mousecontrl:= findVCLWindow(P);
if mousecontrl <> TWincontrol(self.button1) then
self.button1.Visible:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
aaa(sender)
end;
没有简单点的方法吗则腔掘?如果窗口中控件很多的话太繁琐
一个控件(比如button、pannel)怎么知道光标移进、移出自己的范围?
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (X>= 0) and (X<= Button1.Width) and (Y>= 0) and (Y<= Button1.Height) then
showmessage('inside')
end
自定义一个函数截获鼠标消息,处理她 然后再提交的父类处理
自己写一个窗口过程,原来的窗口过程的指针赋给它,然后分析有无WM_LBUTTONDOWN或
WM_LBUTTONUP消息,不是的话DefWindowProc正常派发,是的话特孙核殊处理.
同意楼上,可以截WINDOWS消息。
我找到了CM_CancelMode消息,结贴
我想让我某一控件实现Combobox下拉框的效果,当鼠标不在自己圆闭区域内点击时隐藏
mouseDown事件或者是MousePress我记不清了,自己找找好了
在form窗体的事件哦
你试过吗?在窗口的其它控件上单击时,根本不触发Form的MouseDown事件
你可以写一个函数, 判断当前鼠标指针下的控件是否是 你所想隐藏的控件.然后在每个控件的click中调用aaa
procedure TForm1.aaa(sender:Tobject);
var
p:TPoint;
mousecontrl:TWincontrol;
begin
GetCursorPos(P);
mousecontrl:= findVCLWindow(P);
if mousecontrl <> TWincontrol(self.button1) then
self.button1.Visible:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
aaa(sender)
end;
没有简单点的方法吗则腔掘?如果窗口中控件很多的话太繁琐
一个控件(比如button、pannel)怎么知道光标移进、移出自己的范围?
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (X>= 0) and (X<= Button1.Width) and (Y>= 0) and (Y<= Button1.Height) then
showmessage('inside')
end
自定义一个函数截获鼠标消息,处理她 然后再提交的父类处理
自己写一个窗口过程,原来的窗口过程的指针赋给它,然后分析有无WM_LBUTTONDOWN或
WM_LBUTTONUP消息,不是的话DefWindowProc正常派发,是的话特孙核殊处理.
同意楼上,可以截WINDOWS消息。
我找到了CM_CancelMode消息,结贴
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询