1.设置dbgrid的option中的dgtabs为真 2.在dbgrid的keypress中写: if key=#13 then key=9
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_return then sendmessage (DBGrid1.Handle,WM_KEYDOWN,VK_TAB,0) end;
procedure TForm1.Grid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_RETURN then begin if Grid1.Col = Grid1.ColCount - 1 then begin Grid1.Col := 0; Grid1.Row := Grid1.Row + 1; end else Grid1.Col := Grid.Col + 1; end; end;
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin if key=#13 then if DBGrid1.SelectedIndex>=DBGrid1.Columns.Count-1 then begin DBGrid1.DataSource.DataSet.Next; DBGrid1.SelectedIndex:=0; end else DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex+1; end;
1.设置dbgrid的option中的dgtabs为真 2.procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if key = #13 then if not (activecontrol is Tdbgrid) then begin key := #0; perform(WM_NEXTDLGCTL,0,0); end else if (activecontrol is tdbgrid) then begin with TDBGrid(activecontrol) do if (selectedindex < fieldcount - 1) then selectedindex := selectedindex + 1 else selectedindex := 0; end; end;
在Form.OnKeyPress事件中写如下代码:if Key = #13 then if ActiveControl = DBGrid1 then begin TDBGrid(ActiveControl).SelectedIndex := TDBGrid(ActiveControl).SelectedIndex + 1; Key := #0; end;
在DBGrid的OnKeyPress事件中begin if key=#13 then if DBGrid1.SelectedIndex < 5 Then //DBGrid显示了6列 DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + 1 else begin DBGrid1.SelectedIndex := 0; // 光标到下一条记录第1列位置// with AdoQuery1 do begin Next; if EOF then Last; end; end;回车右移后到了最后一列时,光标移到下一条记录的第1列
2.在dbgrid的keypress中写:
if key=#13 then key=9
Shift: TShiftState);
begin
if key=vk_return then
sendmessage (DBGrid1.Handle,WM_KEYDOWN,VK_TAB,0)
end;
Shift: TShiftState);
begin
if key = VK_RETURN then
begin
if Grid1.Col = Grid1.ColCount - 1 then
begin
Grid1.Col := 0;
Grid1.Row := Grid1.Row + 1;
end else Grid1.Col := Grid.Col + 1;
end;
end;
begin
if key=#13 then
if DBGrid1.SelectedIndex>=DBGrid1.Columns.Count-1 then
begin
DBGrid1.DataSource.DataSet.Next;
DBGrid1.SelectedIndex:=0;
end
else
DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex+1;
end;
2.procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
if not (activecontrol is Tdbgrid) then
begin
key := #0;
perform(WM_NEXTDLGCTL,0,0);
end
else if (activecontrol is tdbgrid) then
begin
with TDBGrid(activecontrol) do
if (selectedindex < fieldcount - 1) then
selectedindex := selectedindex + 1
else selectedindex := 0;
end;
end;
if ActiveControl = DBGrid1 then begin
TDBGrid(ActiveControl).SelectedIndex := TDBGrid(ActiveControl).SelectedIndex + 1;
Key := #0;
end;
if key=#13 then
if DBGrid1.SelectedIndex < 5 Then //DBGrid显示了6列
DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + 1
else
begin
DBGrid1.SelectedIndex := 0; // 光标到下一条记录第1列位置//
with AdoQuery1 do
begin
Next;
if EOF then Last;
end;
end;回车右移后到了最后一列时,光标移到下一条记录的第1列