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;
'델파이' 카테고리의 다른 글
델파이에서 엑셀양식 인쇄시 Replace함수(바꾸기), 행전체 복사한 셀 삽입 (0) | 2016.09.20 |
---|---|
콤보박스(TComboBox) 에서 마우스 휠 작동안하게 (스크롤 안되게) (0) | 2016.09.10 |
템플릿 Templates 이용 코드 자동화 Ctrl + j (0) | 2016.09.03 |
TDBNavigator 의 Insert 버튼의 Insert 메소드를 Append 로 바꾸기 (0) | 2016.09.01 |
델파이 VBA 엑셀 이미지 삽입 방법 2가지, Shapes.AddPicture, Pictures.Insert (0) | 2016.08.26 |