Table 과 직접 연결된 TDBGrid에서 값 수정후 엔터시 깔끔한 처리
Table 과 직접 연결된 TDBGrid에서 값 수정후 저장하지 않고 엔터시 수정전의 값이 보여지는 버그가 있다.
수정전
수정중
수정중 저장하기전 엔터
기본적으로 TDBGrid에서 엔터키를 입력한면 토글로 셀 선택모드와 수정 모드로 전환되는데 이때 선택 모드에서는 저장된 값을
가져오기 때문인 것 같다.
다음 코드는 엔터시 항상 수정모드로 되게 하여 버그를 해결한다.
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
TDBGrid(Sender).EditorMode := True;
end;
end;
(추가)
예전에 사용하던 방법으로 강제로 마지막 컬럼으로 이동했다가 다시 오는 것도 가능하다.
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var t_Field : TField;
begin
if Key = VK_RETURN then
begin
t_Field := (Sender as TDBGrid).SelectedField;
(Sender as TDBGrid).SelectedField := (Sender as TDBGrid).Fields[(Sender as TDBGrid).SelectedIndex + 1]; //마지막 컬럼으로 이동
(Sender as TDBGrid).SelectedField := t_Field;
end;
end;