怎么搞的,居然捕捉不到回车键,:(怎么没有人肯帮我吗?这个问题看上去不算难嘛) (50分)

  • 主题发起人 主题发起人 jobsxy
  • 开始时间 开始时间
J

jobsxy

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个DBCTRLGRID上创建了一些DBEDIT,现在需要捕捉DBEDIT上的回车键,以达到回车替代
TAB的作用,可无论用DBEdit1KeyPress事件还是DBCtrlGrid1KeyDown事件都没办法捕捉,然而
其它的按键我却可以,比如A,B,C,1,2,3....

请问是何原因?

Form1的keypreview无论设置成什么值都不起作用,:(
 
在KeyDown事件中判断Key是否等于VK_Retrun即可。
 
Form1的keypreview=True
再Onkeydown或Onkypreview事件中進行....
 
偶给你发个控件。
 
各位,确实没法捕捉,我在onkeydown事件里设置了断点,当在DBEDIT里按回车时,根本没有
停在断点,肯定是没有执行这个事件,然而我在按别的键时,却停在断点了,很奇怪啊!

to pyk1:是做什么的控件?你不如把原理给我讲讲吧
 
回车两次,当grid在编辑状态(有光标 I 闪动的时候)不能捕捉
当进入浏览状态(变蓝了)的时候,可以捕捉
 
to pipi:不是你所说的原因,我翻看了以前的提问,发现曾有人也遇过类似问题,而且也没
有人能给予解决。
 
DBEdit1KeyPress事件,
if key=#13 then
begin
...
end;
 
把你的源码帖出来大家看看
 
这个问题我也碰到过,不过我解决了。很简单的啊。你看看:
procedure(........)这个是dbedit1的onkeypress
begin
if (Key = VK_return) then
dbedit2.SetFocus;
end;
 
先感谢楼上几位热心帮助,可我还是没能解决这个问题,其实就这段代码:
DBEdit1KeyPress事件,
if key=#13 then
begin
...
end;
如果DBEDIT1是放在FORM或别的什么容器确实没问题,可我的DBEDIT1是放在DBCTRLGRID就没
办法捕捉这个过程了,(其实只要输入别的什么字符或按键可以捕捉到了,而偏偏是回车键
就没辙了),:(
 
因为dbedit的回车键已经被空间自己捕捉(进入编辑状态),你无法捕捉到的
在delphi6中就可以了
 
在 Application 的 OnMessage 里面捕捉:

Application.OnMessage := ApplicationMessage;
...
procedure TForm1.ApplicationMessage(var Msg: tagMSG
var Handled: Boolean);
begin
if (Msg.message = wm_KeyDown) and (Msg.wParam = vk_Return) and
(ActiveControl is TDBEdit) then
begin
ShowMessage('捕捉到了,来自:' + ActiveControl.Name);
Handled := True
// 表示不发送回去,可根据自己需要设定该值
end;
end;
 
我也有同样的问题:
将该“确定”按钮的 Default 属性设置为 True,你们的方法我都试过,
可以捕捉到全部代码,可执行没有结果。就象没有执行一样。
到现在我都没有解决!!!!!!!!!!!

简单吗?
 
直接处理WM_KEYDOWN消息得了。
 
你可以使用想捕捉该控件的onkeypress事件键入如下:
if key=#13 then
begin
...
end;
( 如果想知道更多,我建议你看帮助,‘帮助’就是一门开发软件的百科全书,当然是用F1(: )
 
//以下是我的一个应用(delphi6.0),不知是否符合?
procedure TForm1.DBGrid1KeyDown(Sender: TObject
var Key: Word;
Shift: TShiftState);
begin
if (key = $0d) and (DataSet.RecNo < DataSet.RecordCount) then DataSet.Next;
end;
 
不要捕捉DBEDIT,可以用DBCTRLGRID的onkeydown事件来捕捉到回车。
if (Key = VK_return) then
key:=VK_Tab;
 
你直接在form的onkeypress捕捉呢
 
后退
顶部