procedure TForm1.DBGrid1ColEnter(Sender : TObject);
begin
with DBGrid1 do begin
if Assigned(SelectedColumn) and (not SelectedColumn.ReadOnly then
if SelectedColumn <> LastColumn then // handle (ignore) last column
SelectedIndex := SelectedIndex + 1;
end;
end;