点击combobox,会出现一个下拉框。如果此时鼠标点击其他地方,则下拉框消失,鼠标点击的地方获得焦点。现在想搞类似的一个form,当鼠标点击该form以外的地方时,form消失,鼠标点击的地方获得焦点。注:该form(formA)必须为另一form(formB)生成。鼠标有可能点在formB内,也有可能点在程序外的地方。如果点在程序内(formB内),则formB上鼠标对应的控件得到焦点。如果点在程序外,当然谁也不得到焦点,但是formA还是应该消失。
调试欢乐多
我觉得还是设透明会比较好
formA是由formB生成的。回rouqing :
可以这样理解:
formB是个大的窗体,里面有个文本框,还有个按钮。点一下按钮,就生成一个小小的窗体formA(假设没有遮住formB上的文本框)。
此时鼠标在文本框上方按一下,要求发生以下两件事情:
1,formA消失。消失不是vusible=false,而是close;
2,文本框得到焦点。
formb.edit.enter// 处在焦点输入状态 SendMessage(forma.handle,0,0,WM_CLOSE);以上事件控件都有,你按这个思路写写看吧
或者在VCL内部消息:CM_FOCUSECHANGED消息中判断当前的焦点是否在本窗体。不在就消失。之前实现过。