如何实现单击构件以外Form上任意区域,释放掉构件? 如何实现单击构件以外Form上任意区域,释放掉构件?就像TDateTimePicker一样,单击小三角按钮,弹出日历,如果在Form上其他地方单击鼠标,便会释放日历 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 procedure TForm_Login.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);beginif Image1=nil then exit;if sender<>Image1 then iMage1.Hide; freeandnil(iMage1);end; 如果是form则可以在procedure TForm_Login.FormDeactivate(Sender: TObject);中实现代码。 pukerno3(飞天) 的方法不可行,因为很多控件会拦截MouseDown事件的,form接收不到的(例如Panel)。TDateTimePicker中的小窗体是单独的一个窗口,可以针对这个窗口写代码。例如,OnExit或者拦截失去焦点的消息。不过,有的点击动作是不会引起失去焦点的动作的。因此,也可以在Application.OnMessage里面拦截MouseDown事件,判断窗口句柄,然后采取相应动作。 一般情况下,鼠标从一个窗体移动到另外一个窗体的时候,前一个窗体会得到一个失去焦点的消息,在这个消息的函数中可以用postmessage函数发送自定义消息个父窗口,父窗口在得到消息后可以free掉这个窗口. http://expert.csdn.net/Expert/topic/1115/1115840.xml?temp=.1489984 只要你需要销毁的控件有OnExit事件,那么在相应的事件处理程序中写如下代码就OK:Sender.Free;很典型的例子就是:DBGrid中的单元格,编辑时是动态创建的编辑器,离开时自动销毁(释放)。 在FORM的OnClick中判断是否有相应的窗体存在,如果存在就Hide它不就OK,很简单的技术啊,哪里要去销毁呢,每次都销毁再重建那还不搞死人啊 我需要使用OLE调用一三维设计软件,请问如何获取类名 哪个dbgrid的第三方控件能实现:把标题的一个字段格移到上方,此dbgrid的数据就能按这个字段来分组.... 请问哪里有物料清单方面的试用软件下载 我们来谈谈Delphi的缺点... 关于mxoutlookbarpro的问题 初学者除法问题! 关于maskedit的几个问题? 怎样可以得到dbgrid的事件信息,如鼠标移动滚动条???100分! 在 dxDBGrid 中怎样才能显示数据库中 IMAGE 字段的图片(JPEG) 请问oracle数据库组件odac的问题; 谈谈网吧管理软件的几个问题 请问nmsmtp中怎么样实现这种情况?
Shift: TShiftState; X, Y: Integer);
begin
if Image1=nil then
exit;
if sender<>Image1 then
iMage1.Hide;
freeandnil(iMage1);
end;
procedure TForm_Login.FormDeactivate(Sender: TObject);
中实现代码。
一个失去焦点的消息,在这个消息的函数中可以用postmessage函数发送自定义消息个父窗口,父窗口在得到消息后可以free掉这个窗口.
Sender.Free;
很典型的例子就是:DBGrid中的单元格,编辑时是动态创建的编辑器,离开时自动销毁(释放)。