알고 계신분들이 많긴하겠지만 모르는 분들을 위해서 적어봅니다. ^^
최근 버전에서는 간단하게 OptionsEh의 "dghEnterAsTab"을 설정하면 엔터키 입력시 자동으로 컬럼간 이동이 됩니다.
그리고 Options의 dgTabs 설정을 제외시키면 탭키로는 컬럼간 이동이 되지않고 오로지 엔터로만 이동하게 되죠.
그러나, 위의 방법으로는 엔터키 입력시 EditorMode로 진입하지 못하고 이동만 하게 됩니다.
그렇다고 Options의 dgAlwaysShowEditor를 설정하면 항상 EditorMode이긴한데 실수로 자료가 변경될 수가 있습니다.
그렇기때문에 조회용이 아닌 경우는 아래처럼 KeyDown Event에 직접 프로그래밍해서 처리하는게 좋습니다.
procedure TForm1.DBGridEh1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = VK_RETURN then
begin
Key := 0;
with TDBGridEh(Sender) do
begin
if not EditorMode then Exit;
if Shift = [] then
begin
if SelectedIndex < (FieldCount - 1) then SelectedIndex := SelectedIndex + 1
else
begin
SelectedIndex := 0;
DataSource.DataSet.Next;
if DataSource.DataSet.Eof then DataSource.DataSet.Append;
end;
end
else if ssShift in Shift then
begin
if SelectedIndex > 0 then SelectedIndex := SelectedIndex - 1
else
begin
SelectedIndex := FieldCount - 1;
DataSource.DataSet.Prior;
end;
end;
end;
end;
end;
참고로 EditorMode가 아닌 상태에서 상/하 방향키를 입력하면 레코드간 이동이 되지만,
EditorMode로 들어간 상태에서 상/하 방향키를 입력하면 기본적으로 EditorMode가 해제되지않고 레코드간 이동도 되지않습니다.
이것은 각 Column의 WordWrap 속성이 기본적으로 True로 설정이 되어있기때문에 발생하는 현상인데,
각 Column의 WordWrap 속성이 False면 EditorMode 상태에서 상/하 방향키를 입력시 자동으로 EditorMode가 해제되고 레코드간 이동이 됩니다.
|