我编写了一个程序,采用的是父子窗体。子窗体的作用是数据输入,有多个edit控件和一个保存按钮,另外还在子窗体FormKeyDown中定义了功能键F10,按F10就触发保存按钮,保存完后我把焦点放到第一个edit控件。
问题:
当我输入完后,如果用鼠标单击保存按钮,程序正常运行,焦点移到第一个edit控件。如果用F10保存,后焦点虽然移到第一个edit控件,然后在键盘输入一个字符,edit控件里不会有这个字符,当输入第二个字符才会出现。也就是说F10保存后,焦点转移正常,但不能马上输入数据,至少要按一下键盘或者鼠标点击一下窗体后才能输入
问题:
当我输入完后,如果用鼠标单击保存按钮,程序正常运行,焦点移到第一个edit控件。如果用F10保存,后焦点虽然移到第一个edit控件,然后在键盘输入一个字符,edit控件里不会有这个字符,当输入第二个字符才会出现。也就是说F10保存后,焦点转移正常,但不能马上输入数据,至少要按一下键盘或者鼠标点击一下窗体后才能输入
解决方案 »
- dbcomboboxeh 怎么实现多选框和查询?
- 关于类封装\多线程 大侠们救我
- 请教,在Delphi中如何生成指定背景图片的图片(即在原背景图片上画图)
- ==========深度论坛==========
- 差不多发了十帖了,都没有得到结果的问题。
- 用delphi+access2000可以用BDE吗?
- 50分:TdbEdit连接的是一个时间类型的字段,当输入不合法时如何抢到系统给出错误提示之前我自己做合法性检查
- winamp的皮肤文件格式?
- ADO连接Access2000数据库的问题
- 救救我啊,我已经问第三次了!!!,(如果能解决,我愿意派送500分,决不食言)
- 怎样写调度程序(精确到秒)???
- 找字符串问题这样做噶有必要(在数据库中找快还是TStringList快)
svaedatda;
editx.setfocus;//这样吗?
是这样的我的保存数据的代码在button下,保存数据代码的最后是editx.setfocus;//;在子窗体FormKeyDown过程中定义
if key=VK_F10 then
cxButton1.Click;
F10保存后,在输入前,焦点不会闪烁,一定要单击一下窗体或键盘单击一下,光标才闪烁.
因为点击BUTTON后,子窗体的焦点还在本身。F10的时候,虽然执行代码,焦点是否转移到父窗体?
能否先测试一下窗体的焦点转移?
svaedatda;
parentform.show; //加入一个子窗体获得焦点?(如果焦点有转换后的话,加这句,如果无的话,
我也不知道怎么处理了。)
editx.setfocus; //这样吗?
不好意思。你的意思是不是
savedata;//保存数据
parentform.show; //parentform是父窗体show,还是子窗体show???
editx.setfocus;
用上述方法,即父子窗体show我都尝试过,结果还是一样的。
不过还是谢谢你了。
先setfocus后保存不行的。
我在setfocus后加了
Application.MessageBox('保存成功!','提示',MB_ICONINFORMATION)
提示窗口关闭后就可以正常输入了。
在afterpost事件中写入editx.setfocus不行的,我用的是ADOQUERY,执行存储过程,而且这个ADOQUERY是很多子窗体共用的。
要不你试试edit1.setfocus
不是机子反应慢,等多长时间都没有用的。