下面是一个在DBGrid1按回车键的 procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); var EndCol : Integer; begin EndCol := DBGrid1.Columns.Count - 1; if Key = #13 then begin Key := #0; with DBGrid1.DataSource.DataSet do begin if DBGrid1.SelectedIndex <> EndCol then begin DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + 1; end else begin Next; if not Eof then begin DBGrid1.SelectedIndex := 0; end; end; end; end; end;
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); var EndCol : Integer; begin EndCol := DBGrid1.Columns.Count - 1; if Key = VK_RIGHT then begin with DBGrid1.DataSource.DataSet do begin if DBGrid1.SelectedIndex <> EndCol then begin DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + 1; end else begin Next; if not Eof then begin DBGrid1.SelectedIndex := 0; end; end; end; end; if key = VK_LEFT then begin with DBGrid1.DataSource.DataSet do begin if DBGrid1.SelectedIndex <> 0 then begin DBGrid1.SelectedIndex := DBGrid1.SelectedIndex - 1; end else begin try Prior; except end; end; end; end; end;
1)DBGrid有一个SelectedIndex可以确定是在最左还是最右;
2)在最左最右时,使用DBGrid1.DataSource.DataSet.Prior(或Next).
dbgrid1.Columns.Count-1=dbgrid1.SelectedIndex //最右位置
dbgrid1.selectedindex=0 //最左位置
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
var
EndCol : Integer;
begin
EndCol := DBGrid1.Columns.Count - 1;
if Key = #13 then
begin
Key := #0;
with DBGrid1.DataSource.DataSet do
begin
if DBGrid1.SelectedIndex <> EndCol then
begin
DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + 1;
end
else
begin
Next;
if not Eof then
begin
DBGrid1.SelectedIndex := 0;
end;
end;
end;
end;
end;
var
EndCol : Integer;
begin
EndCol := DBGrid1.Columns.Count - 1;
if Key = VK_RIGHT then
begin
with DBGrid1.DataSource.DataSet do
begin
if DBGrid1.SelectedIndex <> EndCol then
begin
DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + 1;
end
else
begin
Next;
if not Eof then
begin
DBGrid1.SelectedIndex := 0;
end;
end;
end;
end; if key = VK_LEFT then
begin
with DBGrid1.DataSource.DataSet do
begin
if DBGrid1.SelectedIndex <> 0 then
begin
DBGrid1.SelectedIndex := DBGrid1.SelectedIndex - 1;
end
else
begin
try
Prior;
except
end;
end;
end;
end;
end;
关注!