DBGrid에서 Enter key를 눌러서 셀을 이동하고 싶은데요...???
예를 들어서 디비그리드의 내용을 수정후 엔터키를 치게되면
수정된내용이 바뀌지 않고 원래 값이 그대로 있거든요...
수정후에 화살표키를 움직여야 수정이 되더라구요...
그것을 엔터키를 쳐서 할수 없는지요...
그리고...
엔터키를 처서 셀이동을 좌우...아래위로 하고 싶거든요...
어떻게 하면 되나요...???
고수님들의 가르침을 기다리겠습니다.....
감사합니다...
설 잘보내세요...!!!!
> DBGrid에서 Enter key를 눌러서 셀을 이동하고 싶은데요...???
> 예를 들어서 디비그리드의 내용을 수정후 엔터키를 치게되면
> 수정된내용이 바뀌지 않고 원래 값이 그대로 있거든요...
> 수정후에 화살표키를 움직여야 수정이 되더라구요...
> 그것을 엔터키를 쳐서 할수 없는지요...
> 그리고...
> 엔터키를 처서 셀이동을 좌우...아래위로 하고 싶거든요...
> 어떻게 하면 되나요...???
>
> 고수님들의 가르침을 기다리겠습니다.....
> 감사합니다...
> 설 잘보내세요...!!!!
이재식 Wrote :
안녕하세요?
말씀하신대로 디비그리드에서 입력내지 수정을 할때는
현재 레코드에서 커서가 이동해야 입력내지 수정이 완료됩니다.
즉, 다른 레코드로 상하 화살표이동을 해야 되는 거죠.
이것을 해결하기 위해서는 이렇게 하시면 될 것 같습니다.
디비그리드 keyPress이벤트에 다음처럼 코딩하세요.
if (key = #13) and (DBGrid1.SelectedIndex = 3) then
begin
Table1.Post ;
end ;
이렇게 하면 사용자가 현 레코드에서 마지막까지 필드까지
다 입력을 하면 저장을 하는 거죠.
여기서 SelectedIndex의 값이 어떤건지 아시겠죠?
3이라고 하는 것은 현재 디비그리드에 4개의 필드가
보여졌다고 하는 가정입니다.
그런데, 꼭 맨 마지막 필드를 입력했을때만 저장을해야
되는가? 첫번째 필드를 입력했다해도 저장을 하고 싶다면
위의 형식처럼 코딩하시고 Table1.Post를 남발(?)하시면
될 것입니다.
그리고, 엔터를 쳐면 다음 셀로 이동을 하지 않습니다.
이것을 엔터를 쳐서 다음셀로 이동하고 싶다면 이렇게
한번 해보세요.
이것역시 디비그리드의 KeyPress이벤트에 ...
if (key = #13) and (SelectedIndex = 0) then
begin
SelectedIndex = 1 ;
end;
이런식의 코딩을 하는거죠. 물론 case문을 이용해서 할수도
있고요, Sender의 Tag타입을 이용해서 좀 깔끔하게 할 수 있고요,
아니면, 사용자 함수를 만들어서 할수도 있고요...