如何在DBGRID中实现如下的功能那(关于按键响应)

tinylion971 2003-05-20 09:11:31
就是我用DBGRID显示一个表,
假设表依次有三个字段 A B C

我要实现的按键效果是

输入记录时 我先在A中输了一个内容,回车后光标自动跳到B字段,再输入B的内容,回车后,光标自动又跳到C, 输入C的内容后, 回车,此时出现一行新的空白记录用于输入,并且光标跳回A字段,准备进行新的输入,如何实现??

...全文
28 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
aiwenzx 2003-05-20
  • 打赏
  • 举报
回复
学习
tinylion971 2003-05-20
  • 打赏
  • 举报
回复
FAINT,楼上的是可行
但我到末尾要换行时就不好控制了

DBGRID应该有自己的行和列的属性吧

是什么那?
wusong0114 2003-05-20
  • 打赏
  • 举报
回复
呵呵!你可以控制焦点啊!
楼上的说的没错啊!
5116888 2003-05-20
  • 打赏
  • 举报
回复
在dbgrid的onkeypress事件中写以下代码
if key=#13 then //如果是按的是回车键,就让其中一例得到焦点.具体怎么做,你自己加吧.
dbgrid1.Fields[1].FocusControl;
tinylion971 2003-05-20
  • 打赏
  • 举报
回复
TO flyingkiller(大飞虫)

能详细一点吗,不好意思,初学不久,请多帮忙,谢谢!
flyingkiller 2003-05-20
  • 打赏
  • 举报
回复
用dbgrideh
enterthrough
enterastab
yoisyois 2003-05-20
  • 打赏
  • 举报
回复
up
tinylion971 2003-05-20
  • 打赏
  • 举报
回复
结贴!
THANK
wjlsmail 2003-05-20
  • 打赏
  • 举报
回复
// TDbGridEh 换为 TDbGrid 即可
wjlsmail 2003-05-20
  • 打赏
  • 举报
回复
// 这样试试 :

Form.KeyPreview = True ;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #13) and (Screen.ActiveForm.ActiveControl is TDbGridEh) then
with TDbGridEh(Screen.ActiveForm.ActiveControl) do
begin
if (ADOQuery1.State = dsEdit) then ADOQuery1.Post ;
if SelectedIndex < FieldCount -1 then
SelectedIndex := SelectedIndex + 1
else
begin
with ADOQuery1 do
begin
if (ADOQuery1.State = dsEdit) or (ADOQuery1.State = dsInsert) then ADOQuery1.Post ;
Close ;
Open ;
Append ;
end ;
SelectedIndex := 0 ;
end ;
end ;

end;
tpmao 2003-05-20
  • 打赏
  • 举报
回复
我用的是DBGRIDEH示例如下:
procedure TJSCLForm.DBGridEh1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = VK_DOWN) and (dbgrideh1.row = 4) then
//自动向后移动光标,并防止新增记录。4为最末记录号,可以修改为DATASET.RECORDCOUNT
begin
key := 13;
end;
end;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧