delphi问题请高手指点。
图片看不清楚,意思大概清楚
拿access为例,以ADOQUERY连接数据库,数据表为test(id,name,aaa,bbb,...)
1。窗口上放置四个EDIT:ID,NAME,AAA,BBB (仅是举例你想放几个就放几个)
2。回车能切换输入焦点到下一个EDIT,设置方法
EDIT的taborder按顺序设置,其他空间的tabstop属性为false
设置输入窗口的KEYPREVIEW属性为true
3。在窗口的onkeypress事件中写下如下代码:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
if bbb.Focused then //如果输入焦点在最后一个edit上,向dbgrideh中添加数据
begin
adoquery1.Active; //设置数据库连接为活动
adoquery1.LockType:=ltBatchOptimistic; //批量提交模式
adoquery1.Append;
adoquery1.FieldByName('id').AsString:=id.Text;
adoquery1.FieldByName('name').AsString:=name.Text;
adoquery1.FieldByName('aaa').AsString:=aaa.Text;
adoquery1.FieldByName('bbb').AsString:=bbb.Text;
adoquery1.Post;
//添加完毕清空输入框
id.clear;
name.Clear;
aaa.Clear;
bbb.Clear;
id.SetFocus;//输入焦点到第一个edit为下次输入准备
end
else
begin
//如果焦点不在最后一个edit上,回车进入下一个edit输入
key:=#0;
selectnext(activecontrol,true,true);
end;
end;
end;
4。保存按钮的代码:
procedure TForm1.btnsavwClick(Sender: TObject);
begin
adoquery1.UpdateBatch(arall); //点击保存按钮批量保存数据
end;
5。输入时,输完一个edit按回车即可切换到下一个edit,整个过程只需用回车操作
当焦点在最后一个edit时回车即可添加入dbgrideh中
如有其他需要,请详细说明