MDI子窗体是在设计时已存在,只是在程序开始时不自动生成,而是点击“新建”菜单动态生成的,我想在这个动态生成的子窗体中响应onKeyup事件,动态生成子窗体后,默认焦点是这个窗体,可以响应OnKeyup事件,但当我在主窗体上操作一些控件后,在回到子窗体就无法响应该事件了,不知是何原因?怎么处理?谢谢!
解决方案 »
- Timage和TLable组合控件的问题?
- 收集资料,Delphi在D7以后的版本,在各方面有哪些新技术和改进?
- 用ADSL上网,如何用delphi编程,定时去点击网页,提高网页的点击量,要求可以模拟不同的IP进行,不然点击量不会提高的?
- delphi new(TVData) 如何释放?
- 民币2000请高手修改2个程序,要求非常熟悉WINDOWS内核编程
- 怎样实现dbgrideh的标题的两列之间双击使其中一列适应列宽(象windows资源管理器一样)
- 用sndPlaySound,PlaySound播放声音怎么停止
- 关于 bulid compile 的问题
- DBGridEh排序的问题
- 请问为何不能进行多个报表?谢谢!
- 求dephi打印程序?
- 如何使【某个字符串与数据表中的值进行比较】?
application.run时,form1.create,form2不create,
点击form1.newform菜单按钮,生成动态窗体数组.
formarray[i]:=Tform2.create;
formarray[i].name:='mdiform'+inttostr(i);
此时,formarray[i]显示,可以响应form2.onkeyup事件
但当我在form1上的编辑控件上操作一次后,
再返回到formarray[i],就响应不了form2.onkeyup事件但我把formarray[i]先最小化,再最大化后,又可以响应form2.onkeyup事件。
我想是formarray[i]没真正得到焦点。请问高人如何处理。
if assigned(formarray[i]) then
form1.onkeyup(sender) := formarray[i].onkeyup(sender);
if assigned(formarray[i]) then
form1.onkeyup(sender) := formarray[i].onkeyup(sender);
Form2.OnKeyUp := Form2KeyUp;
不行,参数都不够
form2.onActive根本不执行
我发现只有form2中有edit或memo这类能得到输入焦点的控件时,才能真正激活form2,才能触发form2.onactive事件件,我做的是绘图程序,子窗体里只有image,panel控件,所以不能触发form2.onactive,
正在想解决办法,各位可以帮我想想,谢谢了
在创建子窗体时赋值:
form2.onkeyup:=form1.onkeyup;谢谢了,结题