首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么切换到下一个dbedit,并在最后一个dbedit上按回车时切换到下一条记录

2012-02-08 
如何切换到下一个dbedit,并在最后一个dbedit上按回车时切换到下一条记录?在一个窗体中,有几十个dbedit,我

如何切换到下一个dbedit,并在最后一个dbedit上按回车时切换到下一条记录?
在一个窗体中,有几十个dbedit,我回车时就切换到下一个dbedit。并在最后一个dbedit上按回车时切换到下一条记录。
我的代码如下:
procedure   TForm1.FormKeyPress(Sender:   TObject;   var   Key:   Char);
begin
    if   Key   =   #13   then
    begin
        Perform(WM_NEXTDLGCTL,0,0);  
    end;
end;
procedure   TForm1.DBedit23KeyPress(Sender:   TObject;   var   Key:   Char);
begin
    if   Key   =   #13   then
    begin
        datamodule1.ADOQuery.Next;
        if   datamodule1.ADOQuery.Eof   then
        showmessage( '已经是最后一条记录了! ');
    end;
end;
这样总是咚咚地响,怎么才能不响呀?
如果我在窗体的FormKeyPress事件中加入key:=#0; 就不响了,可是就切换不到下一条记录了。
如何既不响又能切换到下一条记录呀?

[解决办法]
把Form1的KeyPreview属性设为true
[解决办法]
为什么响我就不知道,不过觉得你的代码有点问题
{ if Key = #13 then
begin
datamodule1.ADOQuery.Next;
if datamodule1.ADOQuery.Eof then
showmessage( '已经是最后一条记录了! ');
end;}
if Key = #13 then
begin
datamodule1.ADOQuery.Post;
if datamodule1.ADOQuery.Eof then //先判断是不是最后一条记录
begin
showmessage( '已经是最后一条记录了! ');
Abort;
end;
datamodule1.ADOQuery.Next;
end;
[解决办法]
这样Form1就能响应KeyPress的消息,要不在非聚集的情况下是不会响应的。
你捕捉消息进行处理也可以
[解决办法]
楼主那样判断可以的,只不过提示会切换到最后一条记录就弹出来

if Key = #13 then
begin
with atamodule1.ADOQuery do
if Eof then
ShowMessage( '已经是最后一条记录了! ');
else
Next;
end;

热点排行