鼠标点击周围后使当前的窗体或控件消失,怎样做到这个功能 ( 积分: 100 )

  • 主题发起人 主题发起人 bingook
  • 开始时间 开始时间
B

bingook

Unregistered / Unconfirmed
GUEST, unregistred user!
鼠标点击周围后使当前的控件消失,怎样做到这个功能?
就好像combobox下拉筐弹出后,鼠标点击周围,combobox的下拉框就会消失

各位大虾,怎样实现这个功能???
 
能不能这样干:
判断鼠标的位置,如果和控件位置小于一定距离 就把控件的visible设成 false
 
dev系列的三方控件就可以做到,好象RAIZE系列的控件也可以做得到
 
鼠标点击周围后使当前的控件消失
与combobox下拉筐弹出后,鼠标点击周围,combobox的下拉框就会消失
是两个概念,你还不如问如何做combobox那样的下拉框,但是自定义的样式!
是不是这个意思?
 
to 清新空气:combobox是由edit和listbox凑在一起的组合,鼠标在点击combobox以外的任意地方后,combobox的下拉筐也就是listbox便会隐藏,其实我就是想知道这个功能是怎么实现的?

看了一下delphi的源代码,但是没有找到关键所在
 
简单!不过两个窗体都要写代码!
 
to 清新空气:
说一下你的思路,或者把关键代码贴出来参考一下
 
form的click事件将控件的visible设成 false
 
从TWinControl继承过来的组件都有OnExit事件,在这个事件里写上 TWinControl(Sender).Visible := False 即可;
对于从TGraphicControl继承过来的(如TLabel),需要在它的父控件的Mouse事件里处理.
 
.....只要是失去焦点就隐藏掉嘛......控件不是有onexit事件? 这个就是失去焦点的事件,在他里面写代码就行了.....
 
响应WM_KillFocus消息就可以啊。
 
最后的办法,edit和listbox做个组合框
当焦点从edit中跳出后假如焦点不落在listbox中则隐藏listbox
效果还不算很差
 
多人接受答案了。
 
后退
顶部