使用定时器的办法,比如定时时间间隔为10毫秒,每10毫秒检测一次鼠标的位置(使用API GetCursorPos函数,注意,函数名在这里可能拼错,自己在网上搜一下),这个函数获取的位置坐标是屏幕坐标,判断一下是否在按钮里面就可以了。
如何捕获窗口中的鼠标点击消息?包括在窗口中的其它控件上点击我想让我某一控件实现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: TObjectShift: TShiftStateX,
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消息,结贴
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)